架构初探-谁动了我的蛋糕(1) | 青训营笔记

72 阅读2分钟

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

此笔记的主要内容如下
  • 什么是架构

什么是架构

定义

架构,又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。

实现一个软件有很多种方式,架构在方法选择上起着至关重要的指导作用。

演进

单机

软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上。

就像一个蛋糕店只有老板一个人,老板负责蛋糕店的所有工作。

优点是架构简单,但是存在一些问题:C10K问题,即所有功能只部署在一台机器上,所能提供的服务能力是有瓶颈的;运维需要停服,因为只有一个进程,在对服务进行运维的时候,所有服务都需要停止。

单体、垂直应用|垂直切分

单体架构:分布式部署,垂直应用架构:按应用垂直切分的单体

就像蛋糕店除了老板本人,还有多名蛋糕师傅,一位师傅请假,其他师傅的工作正常进行。

优先是:可以水平扩容,运维不需要停服 但依旧存在问题:职责太多,开发效率不高;爆炸半径大

SOA、微服务|水平切分

SOAService-Oriented Architecture,将应用的不同功能单元抽象为服务,定义服务之间的通信标准 微服务架构,SOA的去中心化演进方向

蛋糕店分工更加细化,蛋糕师傅专攻某一种蛋糕,原料准备、蛋糕烤制、杂活等不需要师傅本人参与,有学徒负责准备原料、蛋糕烤制或杂活。将职责纵深降低。

但也带来了挑战:

  • 数据一致性:装货台共交付了多少蛋糕?
  • 高可用:这么多师傅,如何合作?
  • 治理:烤箱坏了,怎么容灾?
  • 解耦vs过微:运维成本高了,值当吗?

小结

架构演进的初衷好比做蛋糕:

  • 需求量越来越大,终归要增加人手;
  • 越做越复杂,终归要分工合作

架构的演进思路就像切蛋糕:蛋糕越来越大,一口吃不下终归要切分

  • 垂直切分
  • 水平切分