系统架构-云原生架构设计
内涵
基于云原生技术,旨在将云应用中的非业务代码部分进行最大化的剥离,让云设施接管应用中原有的大量非功能特性。
云原生的代码包括三部分:业务代码、三方软件、处理非功能特性的代码
具备云原生架构的应用可以最大程度利用云服务和提升软件交付能力
架构原则
- 服务化原则:拆分为微服务架构
- 弹性原则:系统的部署可以随着业务量的变化而变化
- 可观测原则:通过日志、链路跟踪和度量等手段
- 韧性原则:软件有一定的抵御软硬件异常的能力
- 所有过程自动化原则:通过配置数据自描述和面向终态的交付过程
- 零信任原则:需要基于认证和授权重构访问控制的信任原则
- 架构持续演进原则:本身是一个需要不断演化的模型
主要架构模式
- 服务化架构模式:典型模式是微服务和小服务模式,通过服务化架构,把代码模块关系和部署关系进行分离
- Mesh化架构模式:把中间件框架从服务进程中分离
- Serverless模式:将“部署”这个动作从运维中分离,把应用运行的地点、操作系统、CPU性能、网络配置都交给云
- 存储计算分离模式:把暂存态数据、结构化和半结构化数据用云服务保存
- 分布式事务模式:一个大业务需要访问多个微服务,会带来分布式事务问题
- 可观测架构:可以Logging、Tracing、Metrics进行观测
- 事件驱动架构:本质上是应用/组件间的集成架构模式(隐式调用模式)
相关技术
- 容器技术:将应用及其所有依赖项打包,使应用不再受环境限制,在不同计算环境间快速、可靠地运行
- 云原生微服务:将后端单体应用拆分为松耦合的多个子应用,这些子应用称为微服务,多个微服务共同形成了一个物理独立但逻辑完整的分布式微服务体系。+
- 无服务器技术(Serveless)屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现
- 服务网格(ServiceMesh)实现应用与平台基础设施的解耦,意味着开发者无需关注微服务相关治理问题而聚焦于业务逻辑本身