这是我参与「第五届青训营」笔记创作活动的第7天。
什么是架构
定义
架构,又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。
实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用。
单机
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上。
优点
简单。
问题
运维需要停服。
单体、垂直应用 | 垂直切分
单体架构:分布式部署。
垂直应用架构:按应用垂直切分的单体。
优点
水平扩容。
运维不需要停服。
问题
职责太多,开发效率不高。
爆炸半径大。
SOA、微服务 | 水平切分
SOA(Service-Oriented Architecture)
1.将应用的不同功能单元抽象为服务。
2.定义服务之间的通信标准。
微服务架构:SOA的去中心化演进方向。
问题
数据一致性。
高可用。
治理。
解耦vs过微。
小结
架构的演进初衷:
需求量越来越大,终归要增加人手。
越做越复杂,终归要分工合作。
企业级后端架构剖析
云计算
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。
基础:
虚拟化技术。
编排方案。
架构:
Iaas(Infrastructure as a Service)
Paas(Platform as a Service)
Saas(Software as a Service)
Faas(Function as a Service)
云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
弹性计算资源
弹性计算资源类型:
服务资源调度。
计算资源调度。
消息队列。
弹性存储资源
弹性存储资源类型:
经典。
关系型数据库。
元数据。
NoSQL。
DevOps
DevOps是云原生时代软件交付的利器,贯穿整个软件开发周期。
结合自动化流程,提高软件开发、交付效率。
微服务架构
通信标准:
HTTP(RESTful API)
RPC(Thrift,gRPC)
微服务中间件 RPC vs HTTP:
性能。
服务治理。
协议可解释性。
云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。
服务网格
服务网格(Service Mesh):
微服务之间通讯的中间层。
高性能网络代理。
业务代码与治理解耦。
相比较于RPC/HTTP框架:
异构系统治理一体化。
与业务进程解耦,生命周期易管理。