这是我参与「第五届青训营」伴学笔记创作活动的第6天
本文基于字节内部课+上网自学的内容。
什么是架构? 地基,巨人的肩膀!!!!
架构与蛋糕——用蛋糕房类比架构
1.自己做、边做边卖——单机架构
所有功能都在一个进程里,并且部署在一台机器上。
优点:
- 简单
缺点:
- C10K prpblem(服务的承载能力,如何支持10K并发,由于是单机,承载能力十分有限)
- 运维时需要停服
2.更多师傅,卖更多蛋糕——单体架构|垂直应用架构(都使用了垂直切分的理念)
单体架构:分布式部署
垂直应用架构:按应用垂直切分为不同的单体(各种类别的服务,数目不等),以应对更多的请求。
优点:
- 水平扩容
- 维护时不需要停服,只需进行分别维护
缺点:
- 职责太多,拖开发效率(实际上每个单机依然有很多工作要做)
- “爆炸”半径大(某薄弱环节造成的大规模故障影响的范围)
3.提高效率,进行分工——SOA、微服务|水平切分
将不同的功能单元抽象为服务
定义服务之间的通信标准(服务之间怎样通信呢?)
SOA去中心化的演进——微服务
———— 一切都是服务!
优点:
- 高效(以分工提效率)
- 职责清晰(细化职责)
问题:
- 数据一致性(每个服务的数据怎么对上)
- 高可用(复杂的调用链条如何沟通)
- 治理(调用链条中间出问题怎么容灾)
- 解耦vs过载(运行成本如此之高,是否进行拆分呢?)
小结
架构演进的初衷:
需求增大,终归要增加人手(横向的,分布式)
复杂度提高,终归要分工(职责复杂,要进行解耦)
架构演进的思路:
切分:
垂直(进行横向的拓展)
水平(层级越深,提高模块独立性,进行解耦)