这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
前言
本文仅仅是对课程的总结和回顾,方便后续查阅,以及自己的一些心得总结,若有错误,请大家不吝赐教
架构是什么
有关软件整体结构与组件的抽象描述
演进过程
-
单机:一个进程,一台机器
问题:C10K problem、运维需要停服
-
单体架构:分布式部署
-
垂直应用架构:按应用垂直切分的单体
优点:水平扩容、运维不需停服
问题:职责太多,开发效率不高,爆炸半径大(?)
-
(水平切分)SOA:
1. 将应用的不同功能单元抽象为服务 2. 定义服务之间的通信标准 -
微服务架构:SOA的去中心化演进方向
思考:演进的思路其实就是随着一个软件的需求和使用量越来越大,需要越来越多的资源来对整个系统提供服务,从垂直和水平两个角度对职责进行切分,实质上是对分布式部署的一个发展
企业级后端架构剖析
云计算:通过软件自动化管理,提供计算资源的服务网络
基础:虚拟化技术,编排方案 架构:IaaS、PaaS、SaaS、FaaS
云原生
个人理解:基于虚拟化容器能够源源不断提供云资源,进行分布式的部署和软件开发,在不断扩大规模的过程中衍生出来的一系列的成熟的一个生态,包括开发流程和服务通信等
弹性资源:服务资源调度、计算资源调度、消息队列、弹性存储资源
DevOps:结合自动化流程,提高软件开发和交付的效率
微服务架构:
- 通信标准:HTTP、RPC
- 微服务中间件:HTTP和RPV的选择? RPC性能更高,有很多压缩方案 RPC的服务治理 HTTP协议可解释性更强
- 在云原生的场景下,业务只需要关注业务实现逻辑,而不需要关注通信,符合通信标准的交互逻辑交给框架来做。