软件架构(上) | 青训营笔记

98 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天。今天学习了后端开发的软件架构知识。

课程大纲

1. 架构的定义

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

单机架构

定义:所有功能是现在一个进程里,并部署在一台机器上。

优点:开发简单

缺点:运维需要停服、C10K问题,底层架构的并发连接有上限。

单体架构

单体架构:将服务进行分布式部署

垂直应用架构:按应用垂直切分单体架构

优点:水平扩容、运维不需要停服

缺点:职责多、开发效率低、爆炸半径大

SOA微服务架构

定义:将应用的不同功能单元抽象为服务,服务间通过预定义的通信标准进行通信

问题:数据一致性、高可用、治理、解耦与过微的抉择

2. 企业级后端架构

云原生

云计算定义:通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。

架构:IaaS、PaaS、SaaS、FaaS

云原生架构:

弹性计算资源:

弹性存储资源:

DevOps:云原生时代软件交付的利器,提高软件开发和交付的效率

微服务架构:RPC调用,协议为Thrift、gRPC等,与HTTP调用和RESTful API协议相对应

服务网格:作为中间层,提供微服务之间的通信能力与治理能力,可以将业务代码和治理逻辑进行解耦。控制面进行管理,数据面进行通信与数据传输。