资源描述
软件架构入门A Methodology of Software Architecture DesignA Methodology of Software Architecture Design7/26/20241认识软件架构7/26/20242架构就是代码的组织方式一句话说明架构是什么说说这三个架构各自的优缺点7/26/20243但架构只著眼于大处函数类详细设计框架架构设计模块语句算法代码粒度函数库类库库粒度设计粒度应用许多人常将架构与设计模式和框架混为一谈,这是错的主要主要架构性框架7/26/20244架构粒度=f(项目,阶段,层)7/26/20245设计师角色【架构师】关注大格局的设计需求【系统设计师】关注小的局部设计需求【算法工程师】关注具体问题的代码解决方式,效率为主详细设计架构设计算法7/26/20246什么是大格局的需求?运营阶段可用性运营阶段安全性运营阶段高性能未来变化伸缩性未来变化扩展性长期运营降低成本开发阶段开发测试7/26/20247运营阶段可用性运营阶段安全性运营阶段高性能未来变化伸缩性未来变化扩展性长期运营降低成本开发阶段开发测试相比于企业级系统,互联网系统的差异并发量大流量大数据量大7/26/20248运营阶段可用性运营阶段安全性运营阶段高性能未来变化伸缩性未来变化扩展性长期运营降低成本开发阶段开发测试相比于企业级系统,互联网系统的差异暴险危机高7/26/20249运营阶段可用性运营阶段安全性运营阶段高性能未来变化伸缩性未来变化扩展性长期运营降低成本开发阶段开发测试相比于企业级系统,互联网系统的差异地理分布广网络条件差异大7/26/202410运营阶段可用性运营阶段安全性运营阶段高性能未来变化伸缩性未来变化扩展性长期运营降低成本开发阶段开发测试相比于企业级系统,互联网系统的差异需求变化快迭代式开发7/26/202411运营阶段可用性运营阶段安全性运营阶段高性能未来变化伸缩性未来变化扩展性长期运营降低成本开发阶段开发测试一个软件系统怎么可能如此完美?答案是:整体的目标与局部的目标分開7/26/202412【问题】要如何规划设计模块,并组织这些模块,使其成为好的架构,满足大格局的目标?【答案】第一步是切割出足够细粒度的模块,用正确的方法连结起来。7/26/202413架构的 4D 座标系统7/26/202414业务维度(Y1.Yn):每个业务系统前后端维度(X1.X7):界面(红)、应用(橙)、框架(黄)、服务(绿)、核心(蓝)、代理(靛)、数据(紫)系统维度(Z1.Zn):软件、容器、运行时、操作系统、虚拟机、到硬件。跟行业无关架构的四维座标系统时间维度(T1.Tn):初始架构到成熟架构YXZT7/26/202415X6代理X5核心X4服务X1界面X7数据X3框架用户外部外部业务领域七层架构X2应用X 座标注意:每一层内由多个模块构成,层只是一种逻辑概念,层在架构中不具备实体黄色箭头是跨系统的调用,白箭头是系统内调用有状态无状态实用伸缩、高性能、可用、安全APISPI防攻击、伸缩交互有状态资源有状态12345有状态7/26/202416X6代理X5核心X4服务X1界面X7数据X3框架用户外部外部业务领域七层架构X2应用X 座标有状态无状态实用伸缩、高性能、可用、安全APISPI防攻击、伸缩交互有状态资源有状态12345有状态7/26/202417Y 座标界面框架应用电商系统代理核心服务数据商品系统代理核心服务数据订单系统代理核心服务数据用户系统界面框架应用商品管理系统界面框架应用订单管理系统界面框架应用用户管理系统前端系统后端系统7/26/202418Z 座标逻辑层通用层网络与数据层缓存模块数据访问模块访问权限模块Session模块参数配置模块负载均衡模块消息队列模块日志模块制作缩图加密算法模块搜索模块传统架构关心重点互连网架构关心重点传统架构关心重点互联网架构关心重点分布式锁分布式文件压缩算法通讯协议与格式数据库7/26/202419代理核心服务应用界面用户接出应用优化资源优化接入平台优化前端优化数据框架负载均衡服务器软负载均衡静态资源服务器Session服务器集群MQ集群MQCDN反向代理服务器缓存服务器云读写分离同步备份异步备份冷备份缓存服务器云配置服务器配置服务器Z3 的考量灾备中心7/26/202420代理核心服务界面数据框架应用代理核心服务数据XY 座标代理核心服务数据不同后台系统的调用,视为外部间接调用但对于公共系统,可以直接调用公共系统是指大家都可能需要的系统,包括短信发送、加密服务。公共系统不可以依赖任何非公共系统。公共系统接口简单不易改变。公共系统没有独立成为一家公司运作的可能。各个后台系统独立成为公司运营时,公共系统可以送给他们。业务系统不允许在没有代理隔离的情况下调用其他系统,是因为其他系统以后都可能会独立运作。7/26/202421七层架构详解7/26/202422代理核心服务界面数据框架用户外部外部应用业务资源领域交互跟外部有接触的,只有三个地方。三个外部系统,包含一个人,一个接入系统,一个接出系统箭头指的是接口依赖,不是信息流向黃色箭頭是回调(Call-Back)。想一想,为什么这三层要允许回调?黄色箭头部分也可改用 Message Queue 的低耦合設計方式7/26/202423代理核心服务界面数据框架用户外部外部应用业务资源领域交互核心层反映出领域模型核心层的接口基本就是对此领域模型进行操作为何要建立领域模型?1.帮助接口设计2.帮助数据存储设计,梳理出更具有弹性的存储方式7/26/202424代理核心服务界面数据框架用户外部外部应用业务资源领域交互服务层针对领域对象进行操作,并提供弹性的调用接口服务层接口通常数目不多,但每个接口通常参数相当多服务层没有状态,也不做缓存实现 API。如果公开,就是开放接口调用服务层的接口,通常需要授权7/26/202425代理核心服务界面数据框架用户外部外部应用业务资源领域交互驱动作用:數據代理:代表外部系统或数据库Z3 缓存:为了效率或提高可用性(当外部系统掉线)Z3 数据模块,支持读写分离转接或转发转接到外部系统转发到日志系统,数据备份系统(通过事件钩子)热备系统接入SPI 作用:隔离:避免依赖特定的外部系统或数据库7/26/202426代理核心服务界面数据框架用户外部外部应用业务资源领域交互数据是公司最重要的资产,数据层负责记录系统运作后的最终结果根据数据的特性,数据库可以是:关系式数据库列数据库Associative DBKey-Value文件数据库日志7/26/202427代理核心服务界面数据框架用户外部外部应用业务资源领域交互根据市场需求,开发各种应用,并以接口的方式展现。如果是 Web 应用,则这里的 Z3 包含 Web 服务器层7/26/202428代理核心服务界面数据框架用户外部外部应用业务资源领域交互将常用的应用流程设计成框架,后续开发同类型应用时,只要通过参数或者 DSL,就可以轻易订制应用,减少开发应用的成本框架也可以用接口的方式开放让外部调用Z3 缓存与 Session7/26/202429代理核心服务界面数据框架用户外部外部应用业务资源领域交互界面更像是用户的延伸,而非应用的延伸。界面可被視為用戶代理(User Agent)根据用户喜好、语言、平台(手机、电脑、平板)进行开发各种用户界面的开发。一个应用可以有多个界面如果是 Web 应用,則这里的 Z3 包含 Web 浏览器7/26/2024307+2层架构之系统素质可用性(Usability)可用性(Usability),扩展性,安全(防攻击)可用性(Availability),安全高效率透明性安全性,持久性数据代理核心服务框架应用界面通用层网络层通用性稳定,可用(Availability),伸缩,效率7/26/2024317+2层架构之人员素质了解用户,且具有审美观了解市场与用户,具有产品设计能力了解市场与用户,且擅长归纳总结了解领域和公司的战略,有接口设计能力有比较强的计算机知识与算法能力了解领域与合作夥伴了解领域与数据库数据代理核心服务框架应用界面通用层网络层了解语言、程序框架、各种开源项目了解操作系统、网络、云计算7/26/2024327+2层架构之技术数据代理核心服务框架应用界面通用层网络层HTML/CSS/JavaScript/HTML/Android/iOS/PHPPHP/Python/Ruby/JavaJava/CJava/CNoSQL/MySQLSecurity/MemCached/Redis/MySQLSpring/Load Balance/F5/Cloud7/26/2024337+2层架构之代码迭代进度数据代理核心服务框架应用界面通用层网络层每周每月每季每年不一定不一定每季每半年7/26/202434架构流程7/26/202435层架构推导过程接口模块对象参数数据对内高内聚力对外低耦合泛用化泛用化详细设计详细设计详细设计7/26/202436业务设计X2 X4模块设计X1.X6/Z2数据存储设计X1 X3 X6 X7网络布署规划X1.X7/Z3人员机器规划X/Y/Z领域建模X4.X6/Y交互设计X1 X2X6X5X4X1X7X3用户外部外部X2系统重构T1.Tn业务资源领域交互业务拆分X2 X4/Y1.Yn7/26/202437角色名称系统名称用例描述人?根据业务拆分系统X6X5X4X1X7X3用户外部外部X2业务资源领域交互7/26/202438业务设计(找出接口与参数)层层层7/26/202439研究数据字典研究外部接口找出领域对象设计领域模型设计 SPI数据库设计数据迁移计划代理层代码设计领域访谈设计 API研究设计实施领域层代码设计服务层代码设计对 X4 的业务需求7/26/2024403.访问频率4.读写比1.重要性2.保密性(密码)8.数据笔数9.数据体积(图)5.一致性6.热点现象(新闻,商品)10.索引方式7.地域现象(用户登录)红色对于领域模型的设计有帮助7/26/202441医院科室医师班表病症预约地点用户家属包含初步版本的挂号领域模型,供大家参考。可以在此模型之下进行 API/SPI 的设计7/26/202442ID名称ID座标名称目的负责人依赖接口与参数详编模块定义7/26/202443数据特性分析数据库选型备份策略缓存策略十大指标数据库特徵表7/26/202444云计算与大数据7/26/202445Z 座标和云平台的关系逻辑层通用层逻辑层逻辑层网络层IaaSPaaS7/26/202446XZ 座标和云平台的关系代理核心服务数据用户外部外部业务资源领域交互核心云核心大数据应用云应用大数据界面框架应用Web:SaaSOpen API所有业务系统的服务层以下都要收归集团统一管理。优点:只有内部(服务以下就是内部)可以依赖数据方便管理方便管理与外部系统的关系可以逐渐形成统一平台7/26/202447数据代理核心服务框架应用界面多数人提到大数据时,都是指来自这里(数据库)的数据。而系统运行过程中的许多有价值的数据,都被丢弃忽略了。比方说:当多数用户到了某页面后,就不往下进行,可能页面设计有问题,只要改善页面用户体验,业绩就会大幅提升。但只通过数据库,无法分析出这点7/26/202448数据代理核心服务框架应用界面七层架构与五个事件钩子事件钩子事件钩子事件钩子事件钩子事件钩子业务系统的层与层之间,都可设置事件钩子,避免系统改造。事件钩子可以将事件原地处理,也可将事件送到其他服务器处理事件钩子同时具备日志的效果,关键事件可以送到统一日志中心注意:代理层的事件钩子是设置在代理层出口,而不是入口外部外部通过 Z3 层的配置,可以直接得到事件7/26/202449事件信息流向与数据分析系统商业智能系统业务活动监控系统用户体验分析系统网络攻击分析系统商业风险控制系统数据备份系统事件钩子事件钩子事件钩子事件钩子事件钩子数据大数据分析7/26/202450平台化战略7/26/202451产品创新需要技术支撑技术创新产品企业竞争力促进支撑唯有持续推出创新的产品,才能维持企业竞争力滞后的技术与架构,无法支撑产品的创新但7/26/202452产品重构内部接口开放平台创新孵化平台化促进合作与创新,进而巩固平台实力平台化促进合作与创新,进而巩固平台实力集团云平台企业合作平台强化大数据平台XYZZ公共云平台7/26/202453首席架构师的架构设计能力与公司的执行力依靠的是 想要做到 产品重构内部接口开放平台创新孵化集团云平台企业合作平台强化大数据平台公共云平台7/26/202454Y YK KN NT TO OA AH HU U软件架构入门 Copyright 2014 Jerry Tsai蔡学镛 email:JerryTsai1218G 7/26/202455知识回顾知识回顾Knowledge Knowledge ReviewReview2024/7/2656
展开阅读全文