云原生架构落地指南

云原生架构包含了 6 个关键架构维度(简写为 SESORA,Service + Elasticity + Serverless + Observability + Resilience + Automation),因此我们先定义关键维度的成熟度级别

指标维度ACAN-1(0分)ACAN-2(1分)ACAN-3(3分)ACAN-4(4分)
服务化能力(Service)
(单体应用)
部分服务化 & 缺乏治理
(自持技术,初步服务化)
全部服务化 & 有治理体系
(自持技术,初步服务化)
Mesh 化的服务体系
(云技术、治理最佳实践)
弹性能力(Elasticity)全人工扩缩容
(固定容量)
半闭环
(监控+人工扩缩容)
非全云方式闭环
(监控+代码伸缩,百节点规模)
基于云全闭环
(基于流量等多策略,万级节点规模)
无服务器化程度(Serverless)未采用 BaaS无状态计算委托给云
(计算、网络、大数据)
有状态存储委托给云
(数据库、文件、对象存储等)
全无服务器方式运行
(Serverless/FaaS 运行全部业务)
可观测性 (Observability)性能优化 & 错误处理
(日志分析、应用级监控、APM)
360度 SLA 度量
(链路 Tracing、Metrics度量)
用户体验持续优化
(用观测大数据提升业务质量)
韧性能力 (Resilience)十分钟切流
(主备HA、集群HA、冷备容灾)
分钟级切流
(熔断、限流、降级、多活容灾等)
秒级切流、业务无感
(Serviceless、Service Mesh 等)
自动化能力(Automation)基于容器自动化
(基于容器CI/CD)
具备自描述能力的自动化
(提升软件交付自动化)
基于 AI 的自动化
(自动化软件交付和运维)

从自动化能力、无服务化能力、弹性能力、可观测性、韧性能力这五个维度,贯穿说明如何落地云原生架构

微服务化

对付复杂性的最好方法之一是将明确定义的功能分成更小的服务,并让每个服务独立迭代。这增加了应用程序的灵活性,允许根据需要更轻松地更改部分应用程序。每个微服务可以由单独的团队进行管理,使用适当的语言编写,并根据需要进行独立扩缩容。

将生产服务容器化

容器化云应用的基础是容器管理和编排服务。虽然存在各种各样的服务,但占据统治地位的显然是 Kubernetes,Kubernetes 建立了一个活跃的社区并获得了众多领先商业供应商的支持,已然成为行业中的容器编排标准。

Kubernetes 定义了被称为 Pod 的抽象。每个 Pod 通常只包含一个容器(例如图 4 中的 Pod A 和 B),但也可以包含多个容器(例如 Pod C)。每个 Kubernetes 服务运行一个包含一定数量节点的集群,每个节点通常是一个虚拟机。图 4 仅显示四个虚拟机,但一个真实的集群可能轻易就包含 100 个或更多虚拟机。当 Pod 部署到 Kubernetes 集群上时,服务会确定该 Pod 的容器应该在哪些虚拟机中运行。由于容器指定了其所需的资源,因此 Kubernetes 可以智能地选择为每个虚拟机分配哪些 Pod。

Pod 的部署信息会指明应该运行的 Pod 实例(副本)数量。Kubernetes 服务随后会创建该数量的 Pod 容器实例并分配给虚拟机。例如,在图 4 中,Pod A 和 Pod C 的 Deployment 都请求了三个副本。但是,Pod B 的 Deployment 请求了四个副本,因此,此示例集群包含容器 2 的四个运行实例。如图所示,包含多个容器的 Pod(例如 Pod C)的容器将始终被分配给相同节点。

Kubernetes 还提供其他服务,包括:

  • 监控正在运行的 Pod,如果容器出现故障,服务将启动新实例。这可确保 Pod 的 Deployment 中请求的所有副本保持可用。
  • 负载均衡流量,以智能方式将对每个 pod 发出的请求分散到容器的副本中。
  • 自动零停机地发布新容器,新实例将逐步替换现有实例,直到新版本完全部署为止。
  • 自动扩缩,集群根据需求自主添加或删除虚拟机。
Last Updated:
Contributors: isno