架构实战营 模块二 总结
1. 如何设计可扩展架构
1)架构设计复杂度模型
业务复杂度(理解、扩展)、质量复杂度(高性能、高可用、成本、安全)
业务复杂度和质量复杂度正交
2)可扩展架构的复杂度本质
可扩展:可理解(拆分)、可复用(封装)
可扩展 vs 可伸缩
3)可扩展架构的“拆分”和“封装”手段
拆分法则:鸡蛋篮子理论第一法则
封装:预测变化的方式决定封装变化的模型
2. 如何设计高性能架构
1)高性能复杂度本质
高性能复杂度模型:单机计算(进程、网络、缓存)、单机存储(存储),集群计算(任务分配、任务分解)、集群存储(任务分配、任务分解)
叠加法则:鸡蛋篮子理论第二法则
2)高性能架构分析和设计
集群高性能任务分配架构设计关键点:运行形态(SDK、服务器)、配置获取(配置问价、配置中心)、算法(随机/轮训/权重、Hash/负载)
集群高性能任务分解架构设计关键点:任务拆分(任务分类、任务分段)、运行形态(SDK、服务器)、配置获取(配置问价、配置中心)、算法(随机/轮训/权重、Hash/负载、路由/sharding)
3. 如何设计高可用架构
1)高可用复杂度本质
高可用复杂度模型:计算高可用、存储高可用
计算高可用:任务分配、任务分解
存储高可用:数据复制(复制格式、复制方式)、状态决策(独裁式、协商式、民主式)
冗余法则:鸡蛋篮子理论第三法则
2)高可用架构分析和设计
计算高可用任务分配架构设计关键点:状态检测、运行形态(SDK、服务器)、配置获取(配置文件、配置中心)、算法(随机/轮训/权重、Hash/负载)
计算高可用任务分解架构设计关键点:任务拆分、状态检测、运行形态(SDK、服务器)、配置获取(配置文件、配置中心)、算法(随机/轮训/权重、Hash/负载)
4. 如何全面提升架构设计的质量
1)常见架构的质量属性
低成本、安全性、可观测性/可测试性/可维护性
2)常见架构质量属性实现方法
低成本:优化(引入缓存、虚拟化、性能调优、高性能硬件、开源方案)、创新(NoSQL、Hadoop、Facebook HHVM、云计算/K8s 弹性集群)
安全性:架构安全(网络隔离、流量清洗、机房切换)、业务安全(业务漏洞--保底限制、安全漏洞--安全框架、内鬼破坏--权限管控)
可观测性:信息输出(日志、API、命令行)、信息展现(运维平台、管理平台)
可测试性:架构可测试、应用可测试
可维护性:架构可维护、应用可维护
3)设计更好的架构步骤
需求--分析-->复杂度--设计-->备选架构--挑选-->总体架构--优化-->质量属性---->架构方案
版权声明: 本文为 InfoQ 作者【Pitt】的原创文章。
原文链接:【http://xie.infoq.cn/article/c2ed0c99f96c4d41a4f39381a】。文章转载请联系作者。
评论