这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天。今天学习了后端开发的软件架构知识。
课程大纲
1. 架构的定义
定义:架构又称软件架构,它是有关软件整体架构与组件的抽象描述,用于指导软件系统各个方面的设计。
单机架构
定义:所有功能是现在一个进程里,并部署在一台机器上。
优点:开发简单
缺点:运维需要停服、C10K问题,底层架构的并发连接有上限。
单体架构
单体架构:将服务进行分布式部署
垂直应用架构:按应用垂直切分单体架构
优点:水平扩容、运维不需要停服
缺点:职责多、开发效率低、爆炸半径大
SOA微服务架构
定义:将应用的不同功能单元抽象为服务,服务间通过预定义的通信标准进行通信
问题:数据一致性、高可用、治理、解耦与过微的抉择
2. 企业级后端架构
云原生
云计算定义:通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
架构:IaaS、PaaS、SaaS、FaaS
云原生架构:
弹性计算资源:
弹性存储资源:
DevOps:云原生时代软件交付的利器,提高软件开发和交付的效率
微服务架构:RPC调用,协议为Thrift、gRPC等,与HTTP调用和RESTful API协议相对应
服务网格:作为中间层,提供微服务之间的通信能力与治理能力,可以将业务代码和治理逻辑进行解耦。控制面进行管理,数据面进行通信与数据传输。