刘道平-从0到1,移动政务应用小程序系统架构演化
1、当前政务移动应用APP发展情况 1、功能单一 大多政务服务APP功能单一,仍以政务信息发布为主,缺乏实用的网上办事和便民服务。 仅有15%的政务APP提供办事服务,存在“信息有余、服务不足”的问题。 2、下载APP成为负担 政务APP盲目开发泛滥,用户为了办事需要下载多个APP,成为一种负担。 3、优化不足体验差 政务APP接入政务服务,没有结合移动端的访问特性进行移动化改造,用户体验差。 4、缺少持续运营: 各厅局委办的公众号之间不能实现账号互信,用户需要记住不同业务 系统的账号密码才能访问。 2.公众号采用H5技术,用户办理过程因加载时间长,导致用户体验不 佳。 3、移动政务应用痛点 VS 核心功能 3 少填少报、少跑快办 1 一次认证、全网通办 2 原生体验、 风格一致 4 实时运营、 即时反馈 目录 一、移动政务应用服务现状与痛点 二、一个特殊的移动政务应用项目 三、政务服务小程序平台研发过程 微信前端数据通过HTTPS传输 全业务流程数据传输监控 使用路径 微信端二级应用 一级入口 从技术的角度来比对,小程序和APP各具优势:小程序具备轻量级、跨平台、成本低、功能强和易传播的特征; 而APP则在产品自主可控、数据全程管控、使用路径更短、功能灵活多样方面更具优势。 6、探索需求 -- 分析可行性,选取合适的需求场景 什么需求适合进入第1版本? 1.服务对接方式:提供API接口,而非H5页面0 码力 | 35 页 | 15.60 MB | 1 年前3唯品会调度系统的前世今生
缺乏分布式运算和集中管理功能 无法做到高可用 TBSchedule Elatic-Job Java事实任务标准 关注点在定时任务而非数据, 缺少分布式并行调度的功能 阿里早期开源的分布式任务调度系 统,代码略陈旧 作业类型较单一,只能是获取/处理 数据一种模式 当当开源的分布式任务调度系统 代码较新,使用Quartz进行调度。提供 高可用和分布式功能 功能单一,只支持Java,不支持 功能单一,只支持Java,不支持 Shell(PHP)和消息驱动的作业调度 对任务超时、任务执行情况、监控逻辑 支持粒度功能较单一或缺乏 没有容器化选型? 调度产品的定位 简易开发、简单维护 高可用、分片并发处理、资源调度动态平衡 支持Java、Shell以及本地模式(VIP还支持消息模式) 统一配置、统一监控、统一管理 VIP弹性调度系统 -- Saturn 开源地址: Github.com/vipshop/Saturn (Tomcat) ZK Observe r ob-saturn-zk-* 2台 3台 x台 调度器集群 接入域-B 执行结点 作业实现 功能地图 01 02 03 多种作业类型与 作业模式 资源动态平衡 框架与业务隔离 三大功能特性 Shell作业 消息作业* JAVA作业 分布式与本 地作业模式 • 完美兼容现有PHP的作业,可无缝迁移,成本最低 • 提供多种业务开发模式,满足不同的业务需求0 码力 | 58 页 | 5.40 MB | 1 年前3领域驱动设计&中台/可视化的遗留系统微服务改造
C4模型、⽤用户画像、⽤用户旅程 C4模型系统架构可视化 国家级 省级 道路路级 市级 C4模型系统架构可视化 系统上 下⽂文图 容器器图 代码图 组件图 已可视化 ⽤用户画像和旅程系统功能⽤用户可视化 ⽤用户画像 ⽤用户旅程 已可视化 突出⽤用户信息,诉求和价值体现 还原业务场景 可视化的划分遗留留系统 领域驱动设计、事件⻛风暴暴⼯工作坊、服务画布 好的设计 低耦合 如果做到了了服务之间的松耦 如何进⾏行行命令⻛风暴暴? 命令:什什么活动产⽣生了了事件 例例1: 提交客户订单 例例2: 启动夜间对账 事件是业务上的输出,命令是业务 上的输⼊入。命令以及相应⻆角⾊色可以 明确最终软件系统会有哪些功能给 外界使⽤用。命令和事件将会在后续 的环节中指导API的设计。 1. 将命令写在蓝⾊色即时贴上,可以是 • ⽤用户从UI界⾯面进⾏行行的操作 • 外部系统触发 • 定时任务 2 出⼊入库上下⽂文 补货 申请单 补货上下⽂文 物流⼦子域 每⼀一个限界上下⽂文 都是在明确边界 微服务设计原则 1. 对⻬齐限界上下⽂文 2. 业务变更更频率与相关度 3. 系统⾮非功能性需求 4. 组织结构和康威定律律 5. 团队规模 6. 技术异构和现有系统复杂度 服务画布 已可视化 阿 ⼠士⼤大 1. 买家 2. 商户 1. 买家创建订单 2. 商户履履⾏行行订单0 码力 | 54 页 | 3.85 MB | 1 年前3领域驱动设计&中台/化繁为简--DDD驱动复杂业务软件架构的演进
提炼业务规则 分析业务用例 识别业务对象 子域拆分 • 业务流程 • 专业知识 建模子域 计算子域 登录与 授权子域 报表子域 指标子域 做法子域 限界上下文拆分 • 业务用例 • 功能\语义相关性 • 技术应用 • 团队规模 建模子域 构件模型上下 文 模型编辑上下 文 计算子域 报表子域 模型转换子域 做法子域 通用子域 汇总上下文 指标管理上 下文 BIM模型持久化 …... 构件模型 …... …... …... …... …... …... 平法模型 钢筋模型 模型转换 案例1:CAD翻模领域拆分及分层设计 • 隔离功能交互与业务逻辑 • 识别算法独立,引入人工智能算法 持久化层 领域层 CAD图纸管理 CAD翻模UI 显示层 应用层 CAD图层管理 CAD识别命令 CAD模型 CAD模型持久化 CAD识别算法 简化了集成关系,降低了集成成本,实现各业务的独立发布; • 驱动组织按领域边界拆分了7~9个特性团队,实现并行研发; 限界上下文的拆分 + 领域模型+ 接口设计/测试 • 支撑产品转型,快速实现业务服务化; • 提升业务逻辑的可复用性,新业务快速扩展 • 人工智能技术低成本快速应用; 架构分层,隔离UI/业务/技术 感悟 领域模型是表达业务功能背后业务本 质的模型,在建立领域模型的过程中 领域专家与统一语言不可或缺0 码力 | 33 页 | 1.25 MB | 1 年前3全球架构师峰会2019北京/量子计算/量子计算及其潜在应用&mdash
基于硬件的量子调控 量子-经典混合计算 随着量子工艺和调控技术的进步,“可用”量子 比特数在短期内将达到50-100个,量子-经典混 合计算是发挥其应用潜力的最重要途径之一! 华为量子计算云服务2.0,功能和性能全面大幅提升 量子应用 量子算法库 量子编程框架 量子控制 量子芯片 模拟器 化学模拟 组合优化 人工智能 模拟算法 优化算法 学习算法 编程语言 编译器 资源管理 资源调度 量子化学的挑战 量子化学的应用 量子计算的优势 新材料 新药物 新能源 预测化学反应 1.分子系统本质是量子系统,使用量子计算 机模拟量子系统更加自然高效 2. 基于量子计算机的量子叠加、量子纠缠等 特性可以加速求解分子基态问题,化解FCI 等经典方法中的“指数墙”问题。 3. 可以预见,在50-100量子比特内,量子 计算机将率先在量子化学模拟中展现量子 优势。 ?? = ?? 华为HiQ 和测量,用经典计算机处理能量及参数优化更新。 量子部分 经典部分 华为 HiQ Fermion: 部分关键功能测试数据 提供不同优化器作对比 支持量子化学主流的费米子编码方法 Bravyi-Kitaev Transform 华为 HiQ Fermion: 部分关键功能测试数据 具备刻画分子势能面的能力 支持多种Hardware Efficient Ansatz CNOT Single0 码力 | 34 页 | 5.57 MB | 1 年前3大规模分布式系统架构下调测能力构建之道
背景下进行功能/接口 调测存在如下困难: 开发依赖重 联调成本高 变动把控困难 拆 应用拆分 数据拆分 团队拆分 分布式服务 API Gateway 分布式文件 分布式缓存 分布式消息 DB Cluster 连接 序列化 路由 负载均衡 … 问题示例 1. 我依赖一个远程服务,但在负责它的团队把它上线之前,我什 么也做不了 2. 我负责的功能依赖一堆的远程服务,为了本地调测,我必须从 及后置清除能力。 逻辑上支持“租户”隔离模式的分布式服务一般对多团队并行开发/调测的支持较好,分布式环境下,一般不会成为工程效率提升 的瓶颈。针对这类服务,不用急于构建其Mock服务,可以根据其特性,寻找成本较低的实现途径。 分布式文件/对象存储 Tom/assets/product/… John/assets/product/… Mike/assets/product/… DB/RDS0 码力 | 19 页 | 2.74 MB | 1 年前3微服务和Service Mesh 在多个行业落地实践
接口文档统一维护 文档与运行时一致 减少调用沟通成本 知识库 根据平台、租户、项目三个层次区分权限作用域 操作记录,审计日志,事件查询 账户审计 微服务框架负责服务之间的调用——企业级特性 www.163yun.com 某证券公司 持续集成 中台化 容器化 注册发现 www.163yun.com 网易容器平台优势 集群规模大:30000+节点 Mesh 目前G0/G1网关在一定程度上充当了“代理”的角色,基 于Java语言实现 G0本质上是一个FrontProxy G1本质上是一个ServiceToServiceProxy 功能方面支持流控、熔断(Hystrix)、负载均衡 服务治理方面有G-Dashboard 监控方面有APM www.163yun.com 从API网关到Service Mesh0 码力 | 39 页 | 3.06 MB | 1 年前3声明式自愈系统——高可用分布式系统的设计之道-王昕
all describing state machines. Leslie Lamport TLA+试图用状态机而不是计算过程描述系统 更加关注系统的非正常输入 更加关注系统的稳定性可用性等特性而不是系统输出 分布式系统环境下没有单一的输入输出 TLA+是一种适合定义状态机的语言 定义一个状态机需要: 1. 定义所有可能的初始状态 2. 定义在特定状态下可能有哪些状态转换 一个程序可以用状态机描述 Service Pod-1 Discovery Service Pod-2 Discovery Service Cluster 使用 TLA+ 验证系统自愈特性——目标状态 Desired State 使用 TLA+ 验证系统自愈特性——实际状态 Realized State 设计实现声明式自愈系统的工具与方法 架构选型 •选择基础状态持久化框架 •参考系统:Kubernetes 高可用0 码力 | 44 页 | 2.47 MB | 1 年前3海尔实时计算平台技术选型与实践
开源技术改造经验-数据可视化 数据可视化目标 目标:为公司所有数据分析类项目,提供数据洞察和展示工具。 数据可视化可选方案 • Caravel • Saiku • Zeppelin Zeppelin主要特性 主要特性: • 数据提取 • 数据发现 • 数据分析 • 数据可视化和协作 Zeppelin优势-多语言支持 多语言支持 • 强大的解析器 • 允许任何语言接入 Zeppelin-技术架构0 码力 | 41 页 | 3.21 MB | 1 年前3数字货币交易系统架构 Python实现 黄毅
数字货币交易系统架构 Python实现 黄毅 目录 CONTENTS 交易系统功能介绍 交易系统架构设计 钱包实现介绍 1 交易系统功能介绍 交易系统功能-基本概念 class Side(Enum): ‘下单方向’ BUY = 0 SELL = 1 class Order(NamedTuple): ‘订单’ id: int side: Side amount: taker.amount, self.maker.amount) def side(self): return self.taker.side 交易系统功能-伪代码 @app.post('/limit_order') def limit_order(order: Order): # 冻结资金 lock_user_fund(order) save_order(order, trades) # 更新K线 update_kline(trades) # 推送用户信息变更 push_user_messages(trades) 交易系统功能-撮合 def match_buy(book, taker: Order): for price, orders in sorted(book.asks): for maker in sorted(orders0 码力 | 24 页 | 799.65 KB | 1 年前3
共 19 条
- 1
- 2