版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件架构入门 A Methodology of Software Architecture Design 中国平安 集团首席架构师 蔡学镛 认识软件架构 架构就是代码的组织方式 一句话说明架构是什么 说说这三个架构各自的优缺点 但架构只著眼于大处 函数 类 详细 设计 框 架 架构 设计 模块 语句 算法 代码 粒度 函数库 类库 库 粒度 设计 粒度 应用 许多人常将架构与设计模式和框架混为一谈,这是错的 主要 主要 架构性框架 架构粒度 = f(项目, 阶段, 层) 设计师角色 【架构师】 关注大格局的设计 需求 【系统设计师】 关注小的局部设 计需求 【算法工程师】 关注具体问题的代 码
2、解决方式,效率 为主 详细 设计 架构 设计 算法 什么是大格局的需求? 运营阶段 可用性 运营阶段 安全性 运营阶段 高性能 未来变化 伸缩性 未来变化 扩展性 长期运营 降低成本 开发阶段 开发测试 运营阶段 可用性 运营阶段 安全性 运营阶段 高性能 未来变化 伸缩性 未来变化 扩展性 长期运营 降低成本 开发阶段 开发测试 相比于企业级系统,互联网系统的差异 并发量大 流量大 数据量大 运营阶段 可用性 运营阶段 安全性 运营阶段 高性能 未来变化 伸缩性 未来变化 扩展性 长期运营 降低成本 开发阶段 开发测试 相比于企业级系统,互联网系统的差异 暴险危机高 运营阶段 可用性 运营阶
3、段 安全性 运营阶段 高性能 未来变化 伸缩性 未来变化 扩展性 长期运营 降低成本 开发阶段 开发测试 相比于企业级系统,互联网系统的差异 地理分布广 网络条件差异大 运营阶段 可用性 运营阶段 安全性 运营阶段 高性能 未来变化 伸缩性 未来变化 扩展性 长期运营 降低成本 开发阶段 开发测试 相比于企业级系统,互联网系统的差异 需求变化快 迭代式开发 运营阶段 可用性 运营阶段 安全性 运营阶段 高性能 未来变化 伸缩性 未来变化 扩展性 长期运营 降低成本 开发阶段 开发测试 一个软件系统怎么可能如此完美? 答案是:整体的目标与局部的目标分開 【问题】要如何规划设计模块, 并组织这些模
4、块,使其成为好 的架构,满足大格局的目标? 【答案】第一步是切割出足够细 粒度的模块,用正确的方法连结 起来。 架构的 4D 座标系统 业务维度(Y1.Yn):每个业务系统 前后端维度(X1.X7):界面(红)、应 用(橙)、框架(黄)、服务(绿)、 核心(蓝)、代理(靛)、数据(紫) 系统维度(Z1.Zn):软件、容器、运行 时、操作系统、虚拟机、到硬件。跟行 业无关 架构的四维座标系统 时间维度(T1.Tn):初始架构到成熟架 构 Y X Z T X6 代理 X5 核心 X4 服务 X1 界面 X7 数据 X3 框架 用户外部外部 业务领域 七 层 架 构 X2 应用 X 座标 注意:每一
5、层内由多个模块构成,层只是一种逻辑概念, 层在架构中不具备实体 黄色箭头是跨系统的调用,白箭头是系统内调用 有状态无状态 实用伸缩、高性能、可用、安全 API SPI 防攻击、伸缩 交互 有状态 资源 有状态 12345 有状态 X6 代理 X5 核心 X4 服务 X1 界面 X7 数据 X3 框架 用户外部外部 业务领域 七 层 架 构 X2 应用 X 座标 有状态无状态 实用伸缩、高性能、可用、安全 API SPI 防攻击、伸缩 交互 有状态 资源 有状态 12345 有状态 Y 座标 界 面 框 架 应 用 电商系统 代 理 核 心 服 务 数 据 商品系统 代 理 核 心 服 务 数
6、据 订单系统 代 理 核 心 服 务 数 据 用户系统 界 面 框 架 应 用 商品管理系统 界 面 框 架 应 用 订单管理系统 界 面 框 架 应 用 用户管理系统 前端系统 后端系统 Z 座标 逻辑层 通用层 网络与数据层 缓存模块 数据访问模块 访问权限模块 Session模块 参数配置模块 负载均衡模块 消息队列模块 日志模块 制作缩图加密算法模块 搜索模块 传统架构关心重点 互连网架构关心重点 传统架构关心重点 互联网架构关心重点 分布式锁 分布式文件 压缩算法 通讯协议与格式 数据库 代理 核心 服务 应用 界面 用户 接出 应 用 优 化 资 源 优 化 接入 平 台 优 化
7、前 端 优 化 数据 框架 负载均衡服务器 软负载均衡 静态资源服务器 Session服务器集群MQ 集群MQ CDN反向代理服务器 缓存服务器 云 读写分离 同步备份异步备份 冷备份 缓存服务器 云 配置服务器 配置服务器 Z3 的考量 灾备中心 代 理 核 心 服 务 界 面 数 据 框 架 应 用 代 理 核 心 服 务 数 据 XY 座标 代 理 核 心 服 务 数 据 不同后台系统的调用, 视为外部间接调用 但对于公共系统,可以 直接调用 公共系统是指大家都可能需要的系统,包括短信发送、加密服务。公共系统不可以依 赖任何非公共系统。公共系统接口简单不易改变。公共系统没有独立成为一家公
8、司运 作的可能。各个后台系统独立成为公司运营时,公共系统可以送给他们。 业务系统不允许在没有代理隔离的情况下调用其他系统,是因为其他系统以后都可能 会独立运作。 七层架构详解 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 跟外部有接触的,只有三个地方。 三个外部系统,包含一个人,一个接入系统,一个接出系统 箭头指的是接口依赖,不是信息流向 黃色箭頭是回调(Call-Back)。想一想,为什么这三层要允 许回调? 黄色箭头部分也可改用 Message Queue 的低耦合設計方式 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 核心层反映出领域模型 核心层的接口
9、基本就是对此领域模型进行操作 为何要建立领域模型? 1. 帮助接口设计 2. 帮助数据存储设计,梳理出更具有弹性的存储方式 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 服务层针对领域对象进行操作,并提供弹性的调用接口 服务层接口通常数目不多,但每个接口通常参数相当多 服务层没有状态,也不做缓存 实现 API。如果公开,就是开放接口 调用服务层的接口,通常需要授权 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 驱动作用: 數據代理:代表外部系统或数据库 Z3 缓存:为了效率或提高可用性(当外部系统掉线) Z3 数据模块,支持读写分离 转接或转发 转接到外部系
10、统 转发到日志系统,数据备份系统(通过事件钩子) 热备系统接入 SPI 作用: 隔离:避免依赖特定的外部系统或数据库 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 数据是公司最重要的资产,数据层负责记录系统运作后的最 终结果 根据数据的特性,数据库可以是: 关系式数据库 列数据库 Associative DB Key-Value 文件数据库 日志 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 根据市场需求,开发各种应用,并以接口的方式展现。 如果是 Web 应用,则这里的 Z3 包含 Web 服务器层 代理核心服务界面数据框架 用户外部外部 应用 业务资源领
11、域交互 将常用的应用流程设计成框架,后续开发同类型应用时, 只要通过参数或者 DSL,就可以轻易订制应用,减少开发应 用的成本 框架也可以用接口的方式开放让外部调用 Z3 缓存与 Session 代理核心服务界面数据框架 用户外部外部 应用 业务资源领域交互 界面更像是用户的延伸,而非应用的延伸。界面可被視為用 戶代理(User Agent) 根据用户喜好、语言、平台(手机、电脑、平板)进行开 发各种用户界面的开发。 一个应用可以有多个界面 如果是 Web 应用,則这里的 Z3 包含 Web 浏览器 7+2 层 架 构 之 系 统 素 质 可用性(Usability) 可用性(Usabilit
12、y),扩展性, 安全(防攻 击) 可用性(Availability),安全 高效率 透明性 安全性,持久性 数据 代理 核心 服务 框架 应用 界面 通用层 网络层 通用性 稳定,可用(Availability),伸缩,效率 7+2 层 架 构 之 人 员 素 质 了解用户,且具有审美观 了解市场与用户,具有产品设计能力 了解市场与用户,且擅长归纳总结 了解领域和公司的战略,有接口设计能力 有比较强的计算机知识与算法能力 了解领域与合作夥伴 了解领域与数据库 数据 代理 核心 服务 框架 应用 界面 通用层 网络层 了解语言、程序框架、各种开源项目 了解操作系统、网络、云计算 7+2 层 架
13、构 之 技 术 数据 代理 核心 服务 框架 应用 界面 通用层 网络层 HTML/CSS/JavaScript/HTML/Android/iOS/PHP PHP/Python/Ruby/Java Java/C Java/C NoSQL/MySQL Security/MemCached/Redis/MySQL Spring/Load Balance/F5/Cloud 7+2 层 架 构 之 代 码 迭 代 进 度 数据 代理 核心 服务 框架 应用 界面 通用层 网络层 每周 每月 每季 每年 不一定 不一定 每季 每半年 架构流程 层 架构推导过程 接口 模块 对象 参数 数据 对内高内聚力
14、 对外低耦合 泛用化泛用化 详细设计详细设计详细设计 业务设计 X2 X4 模块设计 X1.X6 / Z2 数据存储设计 X1 X3 X6 X7 网络布署规划 X1.X7 / Z3 人员机器规划 X / Y / Z 领域建模 X4.X6 / Y 交互设计 X1 X2 X6X5X4X1X7X3 用户外部外部 X2 系统重构 T1.Tn 业务资源领域交互 业务拆分 X2 X4 / Y1.Yn 角色名称系统名称用例描述人? 根据业务拆分系统 X6X5X4X1X7X3 用户外部外部 X2 业务资源领域交互 业务设计(找出接口与参数) 层层层 研究 数据字典 研究 外部接口 找出 领域对象 设计 领域模
15、型 设计 SPI数据库设计 数据 迁移计划 代理层 代码设计 领域访谈 设计 API 研 究 设 计 实 施 领域层 代码设计 服务层 代码设计 对 X4 的 业务需求 3. 访问频率 4. 读写比 1. 重要性 2. 保密性 (密码) 8. 数据笔数 9. 数据体积 (图) 5. 一致性 6. 热点现象 (新闻,商品) 10. 索引方式 7. 地域现象 (用户登录) 红色对于领域模型的设计有帮助 医院科室医师班表 病症预约地点 用户 家属 包含 初步版本的挂号领域模型,供大家参考。 可以在此模型之下进行 API/SPI 的设计 ID名称 ID 座标 名称 目的 负责人 依赖 接 口 与 参
16、数 详编模块定义 数据特性 分析 数据库 选型 备份策略 缓存策略 十大指标数据库特徵表 云计算与大数据 Z 座标和云平台的关系 逻辑层 通用层 逻辑层逻辑层 网络层 IaaS PaaS XZ 座标和云平台的关系 代理核心服务数据 用户外部外部 业务资源领域交互 核心云 核心大数据 应用云 应用大数据 界面框架应用 Web: SaaS Open API 所有业务系统的服务层以下都要收归集团统一管理。优点: 只有内部(服务以下就是内部)可以依赖 数据方便管理 方便管理与外部系统的关系 可以逐渐形成统一平台 数据 代理 核心 服务 框架 应用 界面 多数人提到大数据 时,都是指来自这 里(数据库)
17、的数 据。而系统运行过 程中的许多有价值 的数据,都被丢弃 忽略了。 比方说:当多数用 户到了某页面后, 就不往下进行,可 能页面设计有问题, 只要改善页面用户 体验,业绩就会大 幅提升。但只通过 数据库,无法分析 出这点 数据 代理 核心 服务 框架 应用 界面 七 层 架 构 与 五 个 事 件 钩 子 事件 钩子 事件 钩子 事件 钩子 事件 钩子 事件 钩子 业务系统的层与层之间,都可设 置事件钩子,避免系统改造。 事件钩子可以将事件原地处理, 也可将事件送到其他服务器处理 事件钩子同时具备日志的效果, 关键事件可以送到统一日志中心 注意:代理层的事件钩子是 设置在代理层出口,而不是 入口 外部 外部 通过 Z3 层的配置,可以直接得到事件 事 件 信 息 流 向 与 数 据 分 析 系 统 商业智能系统 业务活动监控系统 用户体验分析系统 网络攻击分析系统 商业风险控制系统 数据备份系统 事件 钩子 事件 钩子 事件 钩子 事件 钩子 事件 钩子 数据 大 数 据 分 析 平台化战略 产品创新需要技术支撑 技术 创新产品 企业竞争力 促 进 支 撑 唯有持续推出创新的产品,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路轨道工程施工招标合同三篇
- 许昌学院《造型基础》2021-2022学年第一学期期末试卷
- 激励员工的服务意识与敬业精神计划
- 铁矿石采购合同三篇
- 四年级数学(除数是两位数)计算题专项练习及答案
- 四年级数学(上)计算题专项练习及答案
- 施工环境保护和水土保持措施
- 食品采购合同模板三篇
- 雇佣劳动合同协议书示范三篇
- 丰富班级课程内容的构思计划
- 水利工程工程施工机械台时费定额
- “审美为核心的音乐教育”哲学批评与音乐教育的文化哲学建构
- 2024年国家开放大学《四史通讲》形考任务专题7自测练习参考答案
- 作物育种学智慧树知到期末考试答案章节答案2024年中国农业大学
- 员工舆情风险培训课件
- 直播升学规划方案
- 2024年版《安全生产法》
- 中等专业学校数学(高教版)教案:统计图表
- 小学生金融知识课件
- 广告牌制作安装应急预案
- T-CRHA 028-2023 成人住院患者静脉血栓栓塞症风险评估技术
评论
0/150
提交评论