架构初探 | 青训营笔记

119 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第7天

1. 课前准备

预习相关概念:
常见软件架构:单机;单体;垂直应用;SOA;微服务

2. 重点内容

企业级后端架构剖析;企业级后端架构的挑战

3. 详细介绍

软件架构演进

软件架构:有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计

  • 单机:把所有功能实现在一个进程里,并部署在一台机器上。缺点:C10K problem(性能瓶颈;运维需要停服
  • 单体:分布式部署的单机
  • 垂直应用架构:按应用垂直切分的单体。优点:水平扩容,运维不需要停服。缺点:每个单体职责太多,开发效率低;故障爆炸半径大
  • SOA:将应用的不同功能单元抽为服务。定义服务之间的通信标准。优点:各服务的职责更清晰。运维粒度减小到服务,爆炸半径可控。缺点:需要一整套的企业服务总线。
  • 微服务架构:SOA 的去中心化演进。在一个职责之内进行水平切分。优点:服务间的通信更灵活。缺点:数据一致性;运维成本上升。 架构演进的目的:满足上升的需求量,提高开发效率。 架构演进的思路:垂直切分:分布式;水平切分:分层、模块化

企业级后端架构解析

  • 云计算:通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。基础:虚拟化技术;编排方案。架构:IaaS, Paas, SaaS, FaaS
  • 云原生:弹性资源;微服务架构;DevOps;服务网络。弹性计算资源类型:服务资源调度,计算资源调度,消息队列。弹性存储资源类型:对象存储,大数据;关系型数据库;元数据;NoSQL。DevOps: 结合自动化流程,提高软件开发、交付效率。微服务架构:通信标准:HTTP,RPC。服务网格:微服务之间通讯的中间层。

企业级后端架构的挑战

基础设施层面:物理资源有限。资源利用率受制于部署服务。 用户层面:网络通信开销,网络抖动带来运维成本,异构环境下,不同实例资源水位不均。

思路

  • 离在线资源并池:降低物理资源成本,提供更多的弹性资源
  • 自动扩缩容:降低成本。扩缩容依赖CPU和内存的指标。依赖IO指标比较困难。
  • 微服务亲和性部署:降低成本,提高服务可用性。将满足亲和性的条件调度到一台宿主机。
  • 流量治理:提高微服务调用容错性。容灾。提高开发效率。
  • CPU 水位负载均衡:打平异构环境算力差异,为自动扩缩容提供正向输入。

4. 总结

没有最好的架构只有最合适的架构。做架构设计需要从需求出发,在充分的业界调研基础上进行技术选型。特别注意架构设计中对软硬件异常的特殊处理。

5. Ref

  1. 预习材料 【后端专场 学习资料三】第五届字节跳动青训营 - 掘金 (juejin.cn)
  2. The C10K problem (kegel.com)
  3. Cloud Native Computing Foundation (cncf.io)