这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
本堂课主要内容是软件架构初探,下面主要是我个人听课时的一些笔记,后续企业级后端架构的挑战和后端架构实战两部分内容见下一篇笔记。
个人笔记
什么是架构
-
架构,又称软件架构,
是有关软件整体结构与组件的抽象描述
用于指导软件系统各个方面的设计
-
几种经典的架构:
-
单机架构:
把所有功能都实现在一个进程里,并部署在一台机器上
缺点:
进行运维时需要停止服务
-
单体、垂直应用:
垂直应用架构,按应用垂直切分的单体
缺点:
- 指责太多,开发效率低
- 爆炸半径大
-
SOA架构(Service-Oriented Architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
-
微服务架构:在SOA架构的基础上进行去中心化演进
一些问题:
- 数据一致性
- 高可用问题
- 治理/容灾问题
- 运维成本问题
-
企业级后端架构剖析
-
云计算:
指通过软件自动化管理,提供计算资源的服务网络,云计算是现代互联网大规模熟悉分析和存储的基石。
其基础是:
- 虚拟化技术
- 编排方案
四种架构:
- laaS (Infrastructure as a Service)
- PaaS (Platform as a Service)
- SaaS (Software as a Service)
- FaaS (Function as a Service)
-
云原生:
主要涉及四大方面:
-
弹性资源:基于虚拟化容器以及灵活的编排调度机制,可以为云服务提供快速扩缩容能力,而且极大程度地提高了*物理资源的利用率**。在这方面,kubernetes 技术已经称为了业界的标准。
弹性资源又分为
- 弹性计算资源:如服务资源、计算资源、消息队列(也是一种特殊的计算资源)等
- 弹性存储资源:如经典的对象、大数据,关系型数据库,元数据,以及NoSQL类型的数据
-
微服务架构:微服务架构依托于功能单元解构,使得云服务具备了快速迭代的可能,业务得以迅速发展;统一的通信标准使得各组件之间的交互变的更容易。
通信标准有
- HTTP(RESTful API)
- RPC(Thrift, gRPC)
-
DevOps:设计→开发→测试→交付→开发→测试→交付,自动化的流程使得软件的工作流程更高效,将微服务架构的优势发挥的淋漓尽致
-
服务网格(Service Mesh):如果说微服务架构的重要进步,是将庞大的单体服务按照业务功能解耦开来,那么,服务网格的重要进步就是将业务逻辑与网络通信和治理解耦开来。业务不再需要关心异构系统中RPC中间件治理能力的不统一, 也使得复杂的治理能力的落地成为可能。
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦
相比较于RPC/HTTP 框架:
- 异构系统治理统化
- 与业务进程解耦,生命周期易管理
-
参考
- 字节内部课 —【后端入门 - 开发与迭代】