这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
一、架构的定义
架构,又称软件架构,
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
通俗易懂的例子
兰师傅蛋糕坊要开张了,亟须解决如下问题:
- 如何做蛋糕
独家秘方,还是亲自做比较好- 如何卖蛋糕
刚开始客流量应该不大,边做边卖看起来问题都解决了,开张!
单机
单机就是把所有功能都实现在一个进程里,并部署在一台机器上。
- 优点:简单
- 问题:运维需要停服
回到兰师傅蛋糕店,仅靠兰师傅自己卖蛋糕,就算再怎么磨练手速,每天能卖出去的量也是有上限的。如果兰师傅去上厕所,蛋糕店就必须得关闭。
解决方法是多雇几个蛋糕师傅。
垂直应用 | 垂直拆分
垂直应用架构是按应用垂直切分的单体架构。
- 优点:水平扩容、运维不需要停服
- 缺点:职责太多,开发效率不高、爆炸半径大
单体架构的问题可以通过多雇几个蛋糕师傅来解决。在单体架构中每一个蛋糕师傅都是全栈的,可以负责制作蛋糕到卖蛋糕的整个流程。
在垂直应用架构中,每个蛋糕师傅只负责对应的任务,按按照任务可以分为戚风师傅、肉松师傅、慕斯师傅。
随着业务场景越来越复杂,服务的职责也越来越多。开发者不仅要关心Web后端业务逻辑,还要关心缓存、持久化存储,甚至跟机器打交道。长此以往,很难分出精力专注于业务能力的开发。
SOA、微服务 | 水平切分
SOA(Service-Oriented-Achitecture)将应用的不同功能单元抽象为服务,并定义服务之间的通信标准。(即将包含众多复杂逻辑的进程抽象成多个服务。)
微服务架构:SOA的去中心化演进方向。
例子
如果说之前蛋糕店雇的多个师傅需要通过他们之间的交流沟通才能确定最后每一个产品的形成。那么SOA相当于将这多个师傅沟通的每一个细节都进行确定,比如经过确定后肉松师傅的工作有撒料、装货等。
二、企业级后端架构剖析
云原生:实际上是云原生(计算)的一种简称,它是云计算发展到现在的一种形态。
云原生主要涉及四大方面:
- 弹性资源
虚拟化容器、快速扩缩容 (总结:将存储资源当服务一样) - 微服务架构
业务功能单元解耦、统一的通信标准 - DevOps
敏捷开发、CI/CD - 服务网络
业务与治理解耦、异构系统的治理统一化、复杂治理能力