模块(二)如何设计架构
第 1 课 如何设计可扩展架构?
【判断题】
1. 如果需求只是写个“hello world”,肯定不需要什么架构设计。 正确
2. 可扩展既可以是指支持修改的能力,也可以是添加资源提升性能的能力。 正确
3. 架构设计的时候,单个子系统越简单越好。 错误
4. 拆分的时候可以先粗粒度拆,后面再按照演化原则继续拆。 正确
5. 预测的时候尽量目光放长远一些,这样可以设计更有前瞻性的系统。错误
【思考题】 微信和支付宝复杂度对比,哪个更复杂,为什么?
支付宝的业务复杂度(城市服务,基金,股票,蚂蚁森林等)要高于微信
支付宝的质量复杂度高于微信,支付宝的双十一流量,需要高性能
架构的复杂度:业务复杂度,质量复杂度
拆分复杂度,重点是约束,一个权衡的过程,先粗后细的原则
第 2 课 如何设计高性能架构?
单机高性能的复杂度,经典的图,必须要保留下,细细品
集群高性能,分为任务分配和任务分解
【判断题】
1. 单机高性能存储模型主要是 B+ Tree 和 LSM。正确
2. 集群高性能本质上就是加资源来提升性能。 正确
3. 任务分解高性能模式的架构设计复杂点体现在:运行形态、配置获取、分配算法。 错误
4. 不管任务分配还是任务分解模式,都需要独立的服务器来完成。 错误
5. 微服务网关是一种任务分解的高性能模式,也是任务分配的高性能模式。 正确
【思考题】 既然任务分配可以通过增加服务器来提升性能,为何还需要任务分解这种模式
个人理解:
任务分解可以对任务进行分层,比如核心业务,非核心业务,后面限流,熔断都可以按照业务级别进行操作,而这些操作是任务分配无法达到的
第 3 课 如何设计高可用架构?
计算高可用
存储高可用
【判断题】
1. 高可用架构的本质是通过“冗余”来应对可能的故障。 正确
2. 高可用架构设计核心是状态决策。 正确,不是很确认
3. 多数复制具备数据强一致性、最强可用性,应该作为数据复制的优选方案。 错误
4. 民主式架构实现复杂,但可用性最高。 正确
5. 高可用架构需要从独裁式、协商式、民主式中挑选一个来落地。 错误,可以组合
【思考题】 对比一下高性能架构和高可用架构,你觉得哪个更复杂,为什么
存储高可用架构更加复杂。
高性能架构可以通过任务分配和分解来进行处理,反观存储高可用架构,需要数据复制,还要状态决策,复杂度很高,计算高可用与高性能架构复杂度相当
第 4 课 如何全面提升架构设计的质量
架构的质量属性:低成本,安全性,可测试性/可维护性/可观测性
【判断题】
1. 架构设计应该尽量做到低成本。正确
2. 架构设计不能保证业务安全。正确
3. 全链路压测属于可测试性范畴,而全链路跟踪属于可维护性范畴。 正确
4. 可观测性只能通过运维平台来实现。错误
5. 每次做架构都要把可维护性、可测试性、可观测性做好。 正确
【思考题】 架构设计三原则帮助我们设计好的架构,这节课讲述了如何全面提升架构设计的质量, 那么这两部分的区别和联系是什么
区别:架构设计三原则,指导我们设计架构,架构设计的质量属性,帮助我们优化架构
联系:架构设计的过程,先通过三原则设计架构,然后通过架构质量属性,提升架构质量
评论