云原生架构
概念
云原生:是基于分布部署和统一运营的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。
云原生架构设计原则
- 服务化原则:使用微服务
- 弹性原则:可根据业务变化自动伸缩
- 可观测性原则:通过日志、链路追踪和度量
- 韧性原则:面对异常的抵御能力
- 所有过程自动化原则:自动化交付工具
- 零信任原则:默认不信任网络内部和外部的任何人/设备/系统
- 架构持续演进原则:业务告诉迭代情况下的架构与业务平衡
云原生架构模式
模式
- 服务化架构模式:典型代表微服务,服务拆分使维护压力增大
- Mesh化架构模式:
- Serverless模式:非常适合事件驱动的数据计算任务
- 存储计算分离模式:各类暂态数据(如session)用云服务保存
- 分布式事务模式:解决微服务模式中多数据源事务问题
- 可观测架构:包括Logging、Tracing、Metrics三个方面
- 事件驱动架构:本质上是一种应用/组件间的集成架构模式
差异性
从左到右,业务层越来越轻,基础设施层越来越重。
以Serverless架构模式为例,公共的SDK以及核心非业务逻辑在基础设施层,服务进程更轻量、更纯粹,方便服务扩展,不涉及环境相关因素
云原生机构反模式
- 庞大的单体应用。需要多人开发的业务模块,考虑通过服务化进行拆分,并让组织与架构匹配。
- 单体应用“硬拆”为微服务(服务拆分要适度)。小规模软件拆分微服务(为拆而拆)、数据依赖(服务间数据依赖)、性能降低
- 缺乏自动化能力的微服务。手动大量微服务是不现实的。
微服务设计约束
- 微服务个体约束。每个微服务都是独立的,修改一个微服务不能影响其它微服务。
- 微服务与微服务之间横向关系。通过第三方服务注册中心来满足服务的可发现性。
- 微服务与数据层之间的纵向约束。数据为微服务的“私产”,需要通过微服务访问数据。
- 全局视角下的微服务分布式约束。高效运维整个系统。
传统应用与云原生应用