云原生系统规划
云原生是一种软件开发和部署的理念
2015年Linux基金会发起CNCF,并定义三大支柱:应用容器化、微服务架构、容器编排调度
根据CNCF的官方定义,云原生包含的三个维度:技术架构维度、系统特性维度、生态解耦维度
配置信息应该在环境中存储;进程必须无状态,不应在本地存储数据;依赖关系应该显式声明并隔离
云原生架构要求所有功能特性都必须由云设施提供
关于云原生代码的组成包括业务代码、三方软件和处理非功能特性的代码三部分
服务化原则支持多语言开发环境,不要求所有服务使用相同的开发语言。
弹性原则强调系统资源可根据业务量动态伸缩,无需预置固定容量。
所有过程自动化原则强调通过自动化工具标准化整个交付流程。
架构持续演进原则强调架构需要能够适应快速变化的业务需求。
可观测原则通过日志、链路追踪、度量指标等手段主动采集运行数据。
服务化原则强调系统拆分为独立服务,服务单体化违背这一原则。
韧性原则强调系统在面临故障时仍能维持服务,并能够恢复。
Logging需要由应用开发者主动提供、Tracing用于跟踪分布式系统的调用链路、
Metrics提供系统的多维度量化指标、Logging包含多个级别的详细信息
事件具有结构且可被校验;混沌工程系统(如Netflix混沌猴)属于第五步"增强生产环境韧性和安全性"的内容。
DevOps是一种思想和方法论,其核心是协作反馈,只有及时反馈才能反思和改进。
建设多云管理平台、封装异构资源是自服务敏捷响应基础设施的重要工作内容。
服务注册与发现属于第二步"服务管理和治理"的内容
根据云原生建设规划原则,以下五个步骤的实施顺序应为:构建微服务及容器云平台运行环境、实现服务管理与治理
构建持续交付与安全能力、构建自服务敏捷基础设施、增强生产环境的韧性与安全性
XA 强一致但性能差,不适合高并发,最大问题就是效率低。消息最终一致性性能好但通用性有限,并不具备强一致性。
TCC 模式由应用控制,性能和控制性较强,但 每个事务需要写三套接口(Try、Confirm、Cancel),
对业务入侵大,开发成本高。
SAGA 模式没有 Try 阶段,每个操作都有一个补偿操作,逻辑上比 TCC 简单一些,不是包含三段式结构。