云原生架构设计理论与实践

云原生架构

定义

云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化地剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。

原则

(1)服务化原则:通过服务化架构把不同生命周期的模块分离出来,分别进行业务迭代。
(2)弹性原则:弹性是指系统的部署规模可以随着业务量的变化而自动伸缩。
(3)可观测原则:通过日志、链路跟踪和度量等手段,使得多次服务调用的耗时、返回值和
参数都清晰可见。
(4)韧性原则:软件所依赖的软硬件组件出现各种异常时,软件表现出来的抵御能力。
(5)所有过程自动化原则:让自动化工具理解交付目标和环境差异,实现整个软件交付和运
维的自动化。
(6)零信任原则:不应该信任网络内部和外部的任何人/设备/系统,需要基于认证和授权重构访问控制的信任基础。
(7)架构持续演进原则:架构具备持续演进能力。

主要架构模式

(1)服务化架构模式
(2)Mesh 化架构模式
(3)Serverless 模式
(4)存储计算分离模式
(5)分布式事务模式
(6)可观测架构
(7)事件驱动架构

典型的云原生架构反模式

(1)庞大的单体应用:缺乏依赖隔离,代码耦合,责任和模块边界不清晰,模块间接口缺乏治理,变更影响扩散,不同模块间的开发进度和发布时间要求难以协调,一个子模块不稳定导致整个应用都变慢,扩容时只能整体扩容而不能对达到瓶颈的模块单独扩容等。
(2)单体应用“硬拆”为微服务:强行把耦合度高、代码量少的模块进行服务化拆分;拆分后服务的数据是紧密耦合的;拆分后成为分布式调用,严重影响性能。
(3)缺乏自动化能力的微服务。

云原生架构相关技术

容器技术

容器作为标准化软件基础单元,它将应用及其所有依赖项打包发布,由于依赖项齐备,应用不再受环境限制,在不同计算环境间快速、可靠地运行。

容器编排技术

容器编排技术包括资源调度、应用部署与管理、自动修复、服务发现与负载均衡、弹性伸缩、声明式 API、可扩展性架构、可移植性。

微服务

微服务模式将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能。这些子应用称为“微服务”,多个“微服务”共同形成了一个物理独立但逻辑完整的分布式微服务体系。这些微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率。微服务设计约束如下:
(1)微服务个体约束:微服务应用的功能在业务领域划分上应是相互独立的。
(2)微服务与微服务之间的横向关系:在合理划分好微服务间的边界后,从可发现性和可交互性处理微服务间的横向关系。可发现性是指当服务 A 发布和扩/缩容的时候,依赖服务 A 的服务B 在不重新发布的前提下,能够自动感知到服务 A 的变化。可交互性是指服务 A 采用什么样的方式可以调用服务 B。
(3)微服务与数据层之间的纵向约束:提倡数据存储隔离(DSS)原则,对于数据的访问都必须通过相对应的微服务提供的 API 来访问。
(4)全局视角下的微服务分布式约束:高效运维整个系统,从技术上实现全自动化的 CI/CD流水线满足对开发效率的诉求,并在这个基础上支持蓝绿、金丝雀等不同发布策略,以满足对业务发布稳定性的诉求。

无服务器技术
特点

(1)全托管的计算服务—客户只需要编写代码构建应用,无须关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作。
(2)通用性
(3)自动弹性伸缩—让用户无须为资源使用提前进行容量规划。
(4)按量计费—让企业的使用成本有效降低,无须为闲置资源付费。

关注点

计算资源弹性调度(容错、资源利用率、性能、数据驱动)、负载均衡和流控、安全性

服务网格(Service Mesh)

服务网格旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值