Golang架构初探(day6)| 青训营笔记

59 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第6天

image.png

本文基于字节内部课+上网自学的内容。

什么是架构? 地基,巨人的肩膀!!!!

架构与蛋糕——用蛋糕房类比架构

1.自己做、边做边卖——单机架构

所有功能都在一个进程里,并且部署在一台机器上。
优点:

  • 简单

缺点:

  • C10K prpblem(服务的承载能力,如何支持10K并发,由于是单机,承载能力十分有限)
  • 运维时需要停服

2.更多师傅,卖更多蛋糕——单体架构|垂直应用架构(都使用了垂直切分的理念)

单体架构:分布式部署
垂直应用架构:按应用垂直切分为不同的单体(各种类别的服务,数目不等),以应对更多的请求。 优点:

  • 水平扩容
  • 维护时不需要停服,只需进行分别维护

缺点:

  • 职责太多,拖开发效率(实际上每个单机依然有很多工作要做)
  • “爆炸”半径大(某薄弱环节造成的大规模故障影响的范围)

3.提高效率,进行分工——SOA、微服务|水平切分

将不同的功能单元抽象为服务
定义服务之间的通信标准(服务之间怎样通信呢?)
SOA去中心化的演进——微服务
———— 一切都是服务!
优点:

  • 高效(以分工提效率)
  • 职责清晰(细化职责)

问题:

  • 数据一致性(每个服务的数据怎么对上)
  • 高可用(复杂的调用链条如何沟通)
  • 治理(调用链条中间出问题怎么容灾)
  • 解耦vs过载(运行成本如此之高,是否进行拆分呢?)

小结

架构演进的初衷:

需求增大,终归要增加人手(横向的,分布式)
复杂度提高,终归要分工(职责复杂,要进行解耦)

架构演进的思路:

切分:
垂直(进行横向的拓展)
水平(层级越深,提高模块独立性,进行解耦)