第一节 云原生架构产生背景
- Cloud:指其应用软件是在云端而非传统的数据中心
- Native:代表应用软件从一开始就是基于云环境、专门为云端特性而设计,可充分利用和发挥云平台的弹性+分布式优势,最大化释放云计算生产力
- DevOps:可以看作是开发、技术运营和质量保障三者的交集,促进之间的沟通、协作与整合。,从而提高开发周期和效率。
- 云原生技术价值:
- 能够实现DevOps和持续交付;
- 企业通过云原生构建一个完整的数字孪生的新体系
第二节 云原生架构内涵
一、云原生架构定义
- 代码结构发生巨大变化
- 非功能性特性大量委托
- 高度自动化的软件交付
二、云原生架构原则
1. 服务化原则
使用服务化的目的还在于从架构层面抽象化业务模块之间的关系,标准化服务流量的传输,从而帮助业务模块进行基于服务流量的策略控制和治理,不管这些服务是基于什么语言开发的
2. 弹性原则
指系统的部署规模可以随着业务量的变化而自动伸缩,无须根据事先的容量规划准备固定的硬件和软件资源。
3. 可观测性原则
SLO(Service Level Object):服务等级目标
对业务健康度和用户体验进行数字化衡量和持续优化
4. 韧性原则
核心目标:提高软件的平均无故障时间(Mean Time Between Failure,MTBF)
韧性包括:服务异步化能力、重试/限流/降级/熔断/反压、主从模式、集群模式、AZ内的高可用、跨region容灾、异地多活容灾等。
5. 所有过程自动化原则
IaC(Infrastructure as Code)
OAM(Open Application Model)
- 标准化企业内部的企业内部的软件交付过程
- 在标准化的基础上进行自动化,通过配置数据自描述和面向终态的交付过程,让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化。
6. 零信任原则
核心思想:默认情况下不应该信任网络内部和外部的任何人、设备、系统,需要基于认证和授权重构访问控制的信任基础,诸如IP地址、主机、地理位置、所处网络等均不能作为可信的凭证。
核心问题:身份
7. 架构持续演进原则
- 增量迭代
- 目标选取
- 组织(架构控制委员会)层面的架构治理和风险控制
三、主要架构模式
1. 服务化架构模式
微服务、小服务
2. Mesh化架构模式
3. Serverless模式
4. 存储计算分离模式
5. 分布式事务模式
- 微服务模式
- 提倡每个服务使用私有的数据源,但往往大颗粒度的业务需要访问多个微服务,必然带来分布式事务问题,否则数据就会出现不一致。
- 架构师根据不同的场景选择合适的分布式事务模式
6. 可观测架构
7. 事件驱动架构 (EDA,Event Driven Architecture)
- 本质:是一种应用/组件间的集成架构模式
- 事件具有schema,可以校验event的有效性
- 事件驱动架构不仅可以用于(微)服务解耦,还可应用于下面的场景中
四、典型的原生架构反模式
- 庞大的单体应用
- 单体应用“硬拆”为微服务
- 缺乏自动化能力的微服务
云原生架构相关技术
一、容器技术
1. 价值与背景
2. 容器编排
Kubernetes
二、云原生微服务
- 微服务发展背景
- 微服务设计约束
- 主要微服务技术
三、无服务器技术
1. 技术特点
Serverless 包含以下特征
2. 技术关注点
- 计算资源弹性调度
1.1 容错
1.2 资源利用率
1.3 性能
1.4 数据驱动 - 负载均衡和流控
- 安全性