这是我参与「第五届青训营 」笔记创作活动的第4天
架构
定义
架构,又称软件架构
- 是有关软件整体结构与组件的抽象描述
- 是用于知道软件系统各个方面的设计
类型
-
单机
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上。
单机服务的模式,除了简单之外没有任何优点。当今互联网时代,单机服务的形态一般只适合出现在预研或初创阶段,但凡业务有发展和迭代的诉求,就应该快速做架构迭代。
-
单体、垂直应用|垂直切分
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体
经过垂直切分的架构,尝试解决了单机服务的水平扩容、运维停服问题。但仍有职责太多,开发效率不高,爆炸半径大等问题
-
SOA、微服务|水平切分 SOA(Service-Oriented-Archtecture):将应用的不同功能单元抽象为服务;定义服务之间的通信标准
微服务架构:SOA的去中心化演进方向
演进
初衷:
- 需求量越来越大,增加人手
- 越做越复杂,分工合作
思路:
- 垂直切分
- 水平切分
企业级后端架构剖析
云计算
是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石.
基础:
- 虚拟化技术
- 编排方案
架构:
- IaaS:基础设施即服务。消费者通过Internet可以从完善的计算机基础设施获得服务。IaaS就是提供场外的服务器,存储和网络硬件,用户只要租用就可以,大大节省了维护成本及办公场地。这一层的作用就是将虚拟机或者其他资源作为服务提供给用户。
- PaaS:平台即服务。PaaS实际上是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。用户可以在云基础设施上部署创建或采购的应用,这些应用使用服务商支持的编程语言或工具开发,用户并不管理或控制底层的云基础设施,包括网络服务器、操作系统、或者存储等,但是可以控制部署的应用,以及应用主机的某个环境配置。
- SaaS:软件即服务。它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。通过SaaS这种模式,用户只要接上网络,并通过浏览器,就能直接使用在云端上运行的应用,而不需要管理或控制任何云计算基础设施,SaaS主要面对的是普通的用户。
- FaaS:功能即服务。使用FaaS只需要关注业务代码逻辑,无需关注服务器资源,所以FaaS也跟开发者无需关注服务器Serverless密切相关。可以说FaaS提供了一个更加细分和抽象的服务化能力。
云原生
弹性资源: 将存储资源当成服务一样
- 虚拟化容器
- 快速扩缩容
DevOps:结合自动化流程,提高软件开发、交付效率
- 敏捷开发
- CI/CD
微服务架构:云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做
- 业务功能单元解耦
- 统一的通信标准:HTTP vs RPC
服务网格:微服务之间通讯的中间层;高性能网络代理;业务代码与治理解耦
- 业务与治理解构
- 异构系统的治理统一化
- 复杂治理能力