蔡学镛架构设计方法 2014 8 17
2020-02-27 125浏览
- 1.软件架构设计 2014-8-17 版 中国平安 集团首席架构师 开放平台总架构师 蔡学镛 A Methodology of Software Architecture Design
- 2.认识软件架构
- 3.一句话说明架构是什么 架构就是…代码的组织方式 说说这三个架构各自的优缺点
- 4.但架构只著眼于大处 库 粒度 设计 粒度 架构性框架 框 架 架构 设计 类库 详细 设计 函数库 算法 代码 粒度 主要 应用 主要 模块 类 函数 语句 许多人常将架构与设计模式和框架混为一谈,这是错的
- 5.f 架构粒度 = (项目, 阶段, 层)
- 6.设计师角色 【架构师】 关注大格局的设计 需求 【算法工程师】 关注具体问题的代 码解决方式,效率 为主 架构 设计 详细 设计 算法 【系统设计师】 关注小的局部设 计需求
- 7.什么是「大格局」的需求? 运营阶段 高性能 运营阶段 未来变化 运营阶段 未来变化 安全性 开发阶段 开发测试 可用性 扩展性 伸缩性 长期运营 降低成本
- 8.相比于企业级系统,互联网系统的差异 并发量大 运营阶段 高性能 开发测试 数据量大 运营阶段 未来变化 运营阶段 未来变化 安全性 开发阶段 流量大 可用性 扩展性 伸缩性 长期运营 降低成本
- 9.相比于企业级系统,互联网系统的差异 暴险危机高 运营阶段 高性能 运营阶段 未来变化 运营阶段 未来变化 安全性 开发阶段 开发测试 可用性 扩展性 伸缩性 长期运营 降低成本
- 10.相比于企业级系统,互联网系统的差异 运营阶段 地理分布广 网络条件差异大 高性能 运营阶段 未来变化 运营阶段 未来变化 安全性 开发阶段 开发测试 可用性 扩展性 伸缩性 长期运营 降低成本
- 11.相比于企业级系统,互联网系统的差异 需求变化快 运营阶段 迭代式开发 高性能 运营阶段 未来变化 运营阶段 未来变化 安全性 开发阶段 开发测试 可用性 扩展性 伸缩性 长期运营 降低成本
- 12.一个软件系统怎么可能如此完美? 运营阶段 高性能 运营阶段 未来变化 运营阶段 未来变化 安全性 开发阶段 开发测试 可用性 扩展性 伸缩性 长期运营 降低成本 答案是:整体的目标与局部的目标分開
- 13.【问题】要如何规划设计模块, 并组织这些模块,使其成为「好 的架构」,满足大格局的目标? 【答案】第一步是切割出足够细 粒度的模块,用正确的方法连结 起来。
- 14.架构的 4D 座标系统
- 15.架构的四维座标系统 Y T Z 本教材 不包 Y/Z/T 本教材 含 Y Z T 的详 忽略不提 细架构⽅方法 X 前后端维度(X1..X7):界面(红)、应 用(橙)、框架(黄)、服务(绿)、 核心(蓝)、代理(靛)、数据(紫) 业务维度(Y1..Yn):每个业务系统 系统维度(Z1..Zn):软件、容器、运行 时、操作系统、虚拟机、到硬件。跟行 业无关 时间维度(T1..Tn):初始架构到成熟架 构
- 16.X 座标 外部 1 X3 框架 X2 应用 业务 2 X4 服务 API 七 X1 界面 层 架 交互 构 外部 X5 核心 领域 3 X6 代理 X7 数据 资源 SPI 用户 4 注意:每一层内由多个模块构成,层只是一种逻辑概念, 层在架构中不具备实体 黄色箭头是跨系统的调用,白箭头是系统内调用 5
- 17.前 端 优 化 应 用 优 化 平 台 优 化 资 源 优 化 Z3 的考量 用户 界面 应用 接入 框架 静态资源服务器 负载均衡服务器 CDN 反向代理服务器 集群 云 Session服务器 MQ 配置服务器 缓存服务器 软负载均衡 服务 核心 代理 接出 数据 集群 MQ 云 配置服务器 读写分离 缓存服务器 同步备份 异步备份 灾备中心 冷备份
- 18.XY 座标 界 面 应 用 框 架 不同后台系统的调用, 视为外部间接调用 但对于公共系统,可以 直接调用 服 务 核 心 代 理 数 据 服 务 核 心 代 理 数 据 服 务 核 心 代 理 数 据 公共系统是指大家都可能需要的系统,包括短信发送、加密服务。 公共系统不可以依赖任何非公共系统。公共系统接口简单不易改 变。公共系统没有独立成为一家公司运作的可能。
- 19.七层架构详解
- 20.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 外部 数据 跟外部有接触的,只有三个地方。 三个外部系统,包含一个人,一个接入系统,一个接出系统 箭头指的是接口依赖,不是信息流向 黃色箭頭是回调(Call-Back)。想一想,为什么这三层要允 许回调? 黄色箭头部分也可改用 Message Queue 的低耦合設計方式
- 21.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 核心层反映出「领域模型」 核心层的接口基本就是对此领域模型进行操作 为何要建立领域模型? 1. 帮助接口设计 2. 帮助数据存储设计,梳理出更具有弹性的存储方式 外部 数据
- 22.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 外部 数据 服务层针对「领域对象」进行操作,并提供弹性的调用接口 服务层接口通常数目不多,但每个接口通常参数相当多 服务层没有状态,也不做缓存 实现 API。如果公开,就是开放接口 调用服务层的接口,通常需要授权
- 23.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 驱动作用: • 數據代理:代表外部系统或数据库 • Z3 缓存:为了效率或提高可用性(当外部系统掉线) • Z3 数据模块,支持读写分离 • 转接或转发 • 转接到外部系统 • 转发到日志系统,数据备份系统(通过事件钩子) • 热备系统接入 SPI 作用: • 隔离:避免依赖特定的外部系统或数据库 外部 数据
- 24.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 外部 数据 数据是公司最重要的资产,数据层负责记录系统运作后的最 终结果 根据数据的特性,数据库可以是: • 关系式数据库 • 列数据库 • Associative DB • Key-Value • 文件数据库 • 日志 • …
- 25.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 根据市场需求,开发各种应用,并以接口的方式展现。 如果是 Web 应用,则这里的 Z3 包含 Web 服务器层 外部 数据
- 26.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 外部 数据 将常用的应用流程设计成框架,后续开发「同类型应用」时, 只要通过参数或者 DSL,就可以轻易订制应用,减少开发应 用的成本 框架也可以用接口的方式开放让外部调用 Z3 缓存与 Session
- 27.用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 外部 数据 界面更像是用户的延伸,而非应用的延伸。界面可被視為用 戶代理(User Agent) 根据用户喜好、语言、平台(手机、电脑、平板…)进行开 发各种用户界面的开发。 一个应用可以有多个界面 如果是 Web 应用,則这里的 Z3 包含 Web 浏览器
- 28.界面 可用性(Usability) 应用 可用性(Usability),扩展性, 安全(防攻 击) 框架 服务 可用性(Availability),安全 核心 高效率 代理 透明性 数据 安全性,持久性 通用层 通用性 网络层 稳定,可用(Availability),伸缩,效率 7+2 层 架 构 之 系 统 素 质
- 29.界面 了解用户,且具有审美观 应用 了解市场与用户,具有产品设计能力 框架 了解市场与用户,且擅长归纳总结 服务 了解领域和公司的战略,有接口设计能力 核心 有比较强的计算机知识与算法能力 代理 了解领域与合作夥伴 数据 了解领域与数据库 通用层 了解语言、程序框架、各种开源项目 网络层 了解操作系统、网络、云计算 7+2 层 架 构 之 人 员 素 质
- 30.界面 HTML/CSS/JavaScript/Android/iOS 应用 PHP/Python/Ruby/Java 框架 服务 7+2 Java/C 核心 代理 Java/C 数据 NoSQL/MySQL 通用层 网络层 Security/MemCached/Redis/MySQL Spring/Load Balance/F5/Cloud 层 架 构 之 技 术
- 31.界面 每周 应用 每月 框架 每季 服务 每年 核心 代理 不一定 数据 不一定 通用层 每季 网络层 每半年 7+2 层 架 构 之 代 码 迭 代 进 度
- 32.架构流程
- 33.架构推导过程 泛用化 层 参数 接口 模块 对象 数据 对内高内聚力 对外低耦合 详细设计 详细设计
- 34.用户 交互 业务 X1 X2 外部 X3 X4 业务拆分 X2 X4 / Y1..Yn 交互设计 X1 X2 人员机器规划 X / Y / Z 领域 资源 X5 X6 系统重构 T1..Tn 业务设计 X2 X4 建模 X4..X6 / Y 模块设计 X1..X6 / Z2 数据存储设计 X1 X3 X6 X7 网络布署规划 X1..X7 / Z3 外部 X7
- 35.根据业务拆分系统 角色名称 人? 系统名称 用例描述 用户 交互 业务 X1 X2 外部 X3 X4 领域 资源 X5 X6 外部 X7
- 36.业务设计(找出接口与参数) 层 层 层
- 37.领域访谈 研究 外部接⼝口 对 X4 的 业务需求 找出 领域对象 研究 数据字典 设计 资源模型 设计 领域模型 设计 数据模型 设计 API 设计领域 模型接⼝口 设计 SPI 服务层 代码设计 核⼼心层 代码设计 代理层 代码设计 研 究 设 计 实 施 设计 数据库 数据 迁移计划
- 38.红⾊色对于领域模型的设计有帮助 6. 热点现象 (新闻,商品) 3. 访问频率 4. 读写比 7. 地域现象 (用户登录) 1. 重要性 10. 索引方式 2. 保密性 (密码) 5. 一致性 9. 数据体积 (图) 8. 数据笔数
- 39.详编模块定义 ID ID 名称 名称 座标 负责人 目的 依赖 接 口 与 参 数
- 40.数据特性 分析 十大指标 数据库 选型 数据库特徵表 备份策略 缓存策略
- 41.云计算与大数据
- 42.Z 座标和云平台的关系 逻辑层 逻辑层 逻辑层 通用层 网络层 PaaS IaaS
- 43.XZ 座标和云平台的关系 Open APIWeb:SaaS 用户 交互 业务 界面 应用 外部 框架 服务 领域 资源 核心 代理 应用云 所有业务系统的服务层以下都要收归集团统一管理。优点: • 只有内部(服务以下就是内部)可以依赖 • 数据方便管理 • 方便管理与外部系统的关系 • 可以逐渐形成统一平台 核心云 外部 数据
- 44.界面 多数人提到大数据 时,都是指来自这 里(数据库)的数 据。而系统运行过 程中的许多有价值 的数据,都被丢弃 忽略了。 应用 框架 服务 核心 代理 数据 比方说:当多数用 户到了某页面后, 就不往下进行,可 能页面设计有问题, 只要改善页面用户 体验,业绩就会大 幅提升。但只通过 数据库,无法分析 出这点
- 45.界面 应用 外部 框架 服务 核心 代理 外部 数据 通过 Z3 层的配置,可以直接得到事件 事件 钩子 事件 钩子 事件 钩子 事件 钩子 事件 钩子 业务系统的层与层之间,都可设 置事件钩子,避免系统改造。 事件钩子可以将事件原地处理, 也可将事件送到其他服务器处理 事件钩子同时具备日志的效果, 关键事件可以送到统一日志中心 注意:代理层的事件钩子是 设置在代理层出口,而不是 入口 七 层 架 构 与 五 个 事 件 钩 子
- 46.事件 钩子 事件 钩子 事件 钩子 事件 钩子 事件 钩子 数据 网络攻击分析系统 用户体验分析系统 业务活动监控系统 商业风险控制系统 商业智能系统 数据备份系统 大 数 据 分 析 事 件 信 息 流 向 与 数 据 分 析 系 统
- 47.平台化战略
- 48.产品创新需要技术支撑 企业竞争力 促 进 创新产品 支 撑 技术 唯有持续推出创新的产品, 才能维持企业竞争力 但… 滞后的技术与架构,无法支 撑产品的创新
- 49.平台化促进合作与创新,进而巩固平台实力 Z XY Z 大数据平台 产品重构 内部接口 集团云平台 企业 合作 开放平台 公共云平台 创新 孵化 平台 强化
- 50.想要做到 … 大数据平台 产品重构 内部接口 集团云平台 企业 合作 开放平台 公共云平台 创新 孵化 平台 强化 依靠的是 … 首席架构师的架构设计能力 与公司的执行力
- 51.T H A N K Y O U 软件架构入门 Copyright © 2014 Jerry Tsai 蔡学镛 email: JerryTsai1218@Gmail.com 新浪微博 @蔡学镛 Version: 2014-8-17