这是我参与「第五届青训营」伴学笔记创作活动的第7天
1. 课前准备
预习相关概念:
常见软件架构:单机;单体;垂直应用;SOA;微服务
2. 重点内容
企业级后端架构剖析;企业级后端架构的挑战
3. 详细介绍
软件架构演进
软件架构:有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计
- 单机:把所有功能实现在一个进程里,并部署在一台机器上。缺点:C10K problem(性能瓶颈;运维需要停服
- 单体:分布式部署的单机
- 垂直应用架构:按应用垂直切分的单体。优点:水平扩容,运维不需要停服。缺点:每个单体职责太多,开发效率低;故障爆炸半径大
- SOA:将应用的不同功能单元抽为服务。定义服务之间的通信标准。优点:各服务的职责更清晰。运维粒度减小到服务,爆炸半径可控。缺点:需要一整套的企业服务总线。
- 微服务架构:SOA 的去中心化演进。在一个职责之内进行水平切分。优点:服务间的通信更灵活。缺点:数据一致性;运维成本上升。 架构演进的目的:满足上升的需求量,提高开发效率。 架构演进的思路:垂直切分:分布式;水平切分:分层、模块化
企业级后端架构解析
- 云计算:通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。基础:虚拟化技术;编排方案。架构:IaaS, Paas, SaaS, FaaS
- 云原生:弹性资源;微服务架构;DevOps;服务网络。弹性计算资源类型:服务资源调度,计算资源调度,消息队列。弹性存储资源类型:对象存储,大数据;关系型数据库;元数据;NoSQL。DevOps: 结合自动化流程,提高软件开发、交付效率。微服务架构:通信标准:HTTP,RPC。服务网格:微服务之间通讯的中间层。
企业级后端架构的挑战
基础设施层面:物理资源有限。资源利用率受制于部署服务。 用户层面:网络通信开销,网络抖动带来运维成本,异构环境下,不同实例资源水位不均。
思路
- 离在线资源并池:降低物理资源成本,提供更多的弹性资源
- 自动扩缩容:降低成本。扩缩容依赖CPU和内存的指标。依赖IO指标比较困难。
- 微服务亲和性部署:降低成本,提高服务可用性。将满足亲和性的条件调度到一台宿主机。
- 流量治理:提高微服务调用容错性。容灾。提高开发效率。
- CPU 水位负载均衡:打平异构环境算力差异,为自动扩缩容提供正向输入。
4. 总结
没有最好的架构只有最合适的架构。做架构设计需要从需求出发,在充分的业界调研基础上进行技术选型。特别注意架构设计中对软硬件异常的特殊处理。