架构实战营 毕业总结
什么是架构?(4R)
软件架构指系统的顶层结构,它定义了系统由哪些角色组成,角色之间的关系和运作规则。可以用 4R 的方式来理解。
Rank 顶层结构
Role 组成角色
Relation 角色之间的关系
Rule 运作规则
为什么要做架构设计?(降低复杂度)
软件系统规模增长,数据结构和算法不再是主要问题,整个系统的结构成为首要问题,需要通过架构设计来降低整个系统的复杂度
什么是面向复杂度的架构设计?(本质、思路、模式、套路)
本质:架构设计是为了降低软件系统的复杂度
思路(怎么做架构设计):通过分析系统需求找到系统复杂的地方,然后设计方案
模式(有哪些复杂度):复杂度来源:高性能、高可用、可扩展、安全、成本...
套路(怎么降低复杂度):分库分表、缓存、集群、分片、微服务、DDD、异地多活...
如何开展面向复杂度的架构设计?(架构设计四阶段)
架构设计前期
主要任务
澄清不确定性明确利益干系人的诉求消除冲突的诉求诉求优先级排序
识别复杂度识别核心场景明确或者预估质量需求识别复杂度(见下文 复杂度有哪些?各种复杂度的应对思路是什么?)
工作模式
与业务方交流
与利益干系人交流
关键输出
总体业务架构图
核心场景流程
架构设计中期
主要任务
设计备选方案头脑风暴筛选方案设计备选方案(见下文 架构设计模式)
选择备选方案 360 度评估明确选择标准选择最终方案,并汇报
工作模式
架构小组讨论
架构小组写文档
向利益干系人汇报
关键输出
备选方案
方案评估结论
方案汇报结论
架构设计后期
主要任务
细化架构按照 4R 架构定义来细化架构
完善架构可维护性、可测试性、可观测性、成本、安全
工作模式
写架构设计文档(见 架构实战营详细架构设计文档模板)
给技术团队宣讲架构
关键输出
完整的架构设计方案 2.4.4 架构设计验证阶段(贯穿项目全流程)
主要任务
收集架构意见开发人员意见测试人员意见运维人员意见
跟进架构落地效果性能测试结果压力测试结构线上运维情况
工作模式
总结复盘
收集吐槽
关键输出
架构优化建议
架构迭代计划
如何判断架构设计的好坏?(三原则)
合适原则:合适优于业界领先(制约:资源、时间、业务变化)
简单原则:简单优于复杂(越复杂越不可靠、越难扩展、越难处理故障)
演化原则:演化优于一步到位(满足当前业务,与业务一起发展)
架构设计有哪些常用的模式?(三高一扩展的应对套路)
高并发架构模式
异步
缓存
高性能架构模式
存储高性能读写分离分库分表 NoSQL 缓存
计算高性能单机高性能 PPC/preforkedTPC/prethreadedReactorProactor 集群高性能负载均衡
高可用架构模式
高可用理论支持 CAP 理论 FMEA 方法,排除架构可用性隐患的利器
存储高可用双机主备复制/主从复制/主主复制主备切换/主从切换集群数据复制集群(例如 Redis sentinel 集群)数据分片集群(例如 Redis cluster)数据分区
计算高可用主备/主从对称集群(负载均衡集群)非对称集群(例如 ZooKeeper 集群)
业务高可用接口级别高可用降级熔断限流排队地理级别高可用同城多机房跨城多机房跨国数据中心
可扩展架构模式
分层
SOA
微服务
微内核
评论