这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
架构是啥?
官方说法:
架构,又称为软件架构。
- 是有关软件整体结构
- 用于指导软件系统各个方面的设计
通俗来说:
实现一个软件有很多种方法,架构在方法选择上起着至关重要的作用。
俺的拙见:
俺也没能理解,应该是做一个事情,有很多很多办法。类似于你想挣大钱衣食无忧的生活,你可以选择努力奋斗最后还是一无所有,也可以选择傍上富婆走上人生巅峰,还可以选择就地重开一切推倒重来。。
单机架构
具体来看一个问题:
刘师傅要开一个蛋糕坊,需要解决以下问题:
1,怎么做蛋糕
自己做,独家秘方,品质有保障。
2,怎么卖蛋糕
小本生意,边做边卖,避免货物堆积。
蛋糕问题引申到软件系统,就是单机问题。把所有的软件功能都实现在一个进程里,并部署在一台服务器上。(单机架构)
这样做的优点:
简单得不能再简单。
问题:
由于所有得服务都部署在一个进程上,所以我们同一时间内只能给一名用户提供服务,也就是当有很多的顾客来购买蛋糕时,只能给一名顾客提供蛋糕。同时,如果做蛋糕的师傅生病或者店面需要装修等,就必须停止营业。
那么问题来了,怎么才能卖更多的蛋糕呢?
雇佣更多的蛋糕师傅。
单体架构,垂直应用架构|垂直切分
单体架构:对应到蛋糕问题,就是雇佣更多的师傅,每个师傅的业务可以做水平拓展。既可以做蛋糕,也可以卖蛋糕。同时,引入大堂经理,实现客户分流。
同时,为了更好地满足客户的需求,可以对师傅们做一个垂直切分,即将师傅们划分为戚风蛋糕师傅,肉松蛋糕师傅,慕斯蛋糕师傅等等。
这样做的好处是:
实现了蛋糕店的水平扩容,满足了客户的具体需求。并且运维不需要停服。
问题:
每个师傅的职责过多,开发(做蛋糕)的效率不高。
某个师傅如果生病请假的话,影响范围广,爆炸半径大。
那么问题来了,如何提高做蛋糕的效率?
分工协作。
SOA架构、微服务架构|水平切分
SOA(Service-Oriented Architecture):1,将应用的不同功能单元抽象为服务;2,定义服务间的通信标准。
微服务架构:SOA的去中心化演进方向。
用做蛋糕的例子来解释,就是在上一步的基础上把师傅们进一步划分,首先划分为售卖蛋糕的师傅和制作蛋糕的师傅,制作蛋糕的师傅又可以分为和面师傅,烘培师傅和雕花师傅等等。师傅们的任务和目的只有一个,就是为客户提供服务。同时,人多了师傅们交流起来也比较困难。为了更好地方便师傅们沟通交流,还需定义一套服务间的通信标准,用于方便更好地维护蛋糕系统的稳定性。
问题:
- 数据一致性:
装货台一共交付了多少蛋糕?
- 高可用:
这么多师傅,如何合作?
- 治理:
烤箱坏了,怎么容灾?
- 解耦 vs 过微
运维成本高了,值当么?
小结
架构演进的初衷:好比做蛋糕
- 需求量越来越大,终归需要增加人手。
- 越做越复杂,终归要分工合作。
架构的演进思路:就像切蛋糕,蛋糕越做越大,一口吃不下,终归要切分。
- 竖着切(垂直切分)
具备横向拓展的能力,一个扛不住就多个来扛。
- 横着切(水平切分)
随着层级越来越深,水平切分可以让每个模块的独立性越来越强,耦合性降低。
企业级后端架构解析
刘师傅蛋糕店经过 3 年的勃发展,积累了良好的口碑和用户基础,接下来,需要扩大规模,那么问题来了:
- 店面怎么盘:
1,买房。 2,租房。
- 师傅怎么招:
1,刘师傅全家出马。 2,招培训班出身的。
-
是否继续坚持纯手工制作?
-
规模大了之后,工作重心应该是?
1,精进蛋糕制作收益。
2,蛋糕店重点方向梳理 & 未来规划。
云计算的概念:通过软件实现全自动化的管理,提供计算资源的服务网络。
- 基础:
1,虚拟化技术 - 整租 vs 合租
2,编排方案 - 业主 vs 租赁平台架构
- 架构:
1,laaS (Infrastructure as a Service)
买房子 vs 房屋租赁平台
2,PaaS (Platform as a Service)
清包 vs 全包
3,SaaS (Software as a Service)
从零培训 vs 雇佣培训过的师傅
4,FaaS (Function as a Service)
纯手工制作 vs 蛋糕机批量生产