探讨云原生架构中的服务化、Service Mesh、Serverless等常用模式,助力构建弹性、可扩展的云原生应用。
原文标题:云原生架构中几种常用架构模式
原文作者:牧羊人的方向
冷月清谈:
怜星夜思:
2、Serverless架构虽然看起来很美好,但它的冷启动问题一直被人诟病。除了文章提到的Redis缓存外,还有哪些方法可以缓解冷启动带来的性能影响?
3、文章提到了CAP理论,在分布式事务中需要在一致性、可用性和分区容错性之间做出权衡。那么,在实际业务场景中,我们应该如何选择合适的分布式事务模式?有没有一些通用的原则或者经验?
原文内容
基于服务化、弹性扩缩容、可观测和自动化等设计原则的引入,传统的应用架构由单体应用逐步向云原生架构发展。云原生技术架构迭代逐步演化为服务化架构、服务网格Mesh、Serverless架构、EDA事件驱动和可观测等架构模式。本文对这几种主要的架构模式进行简要的介绍。
1、云原生架构模式
服务化架构的核心在于通过接口契约定义服务单元的功能,实现服务间的高效通信。例如,通过服务接口定义、IDL(接口定义语言)和OpenAPI等技术规范服务接口,确保服务间的互操作性。服务化通常是通过微服务化技术实现,通过将单体应用拆分为独立部署的小型服务实现系统解耦,每个服务聚焦单一业务能力并拥有专属技术栈和数据库,支持异构技术选型(如Java/Go/Python等)。服务间通过轻量级API(REST/gRPC)通信,摒弃传统ESB中心化治理,实现去中心化协作。该架构赋予服务独立演进能力,支持按需扩缩容和持续交付,显著提升系统弹性(单点故障隔离)和迭代效率。不过微服务化架构也引入了分布式事务一致性、跨服务监控等复杂性,需配合服务网格、容器化等技术降低运维成本。
服务网格以基础设施层形式抽象微服务通信逻辑,通过Sidecar代理(如Envoy)接管流量管理,使业务代码无需嵌入网络策略。其核心在于分离数据平面(处理流量路由、负载均衡、TLS加密)和控制平面(如Istio统一配置熔断、重试策略)。该架构提供透明的可观测性,自动生成服务依赖拓扑和实时指标(延迟/错误率),并基于mTLS实现零信任安全。服务网格彻底解耦业务逻辑与网络治理,大幅降低分布式系统复杂度,是规模化微服务架构的基石。
通过Service Mesh技术,实现了业务逻辑和非业务逻辑的分离,为应用的轻量化和云原生化提供可能;并通过将非业务逻辑的各种功能下沉到基础设施和云,极大地增强了基础设施和云的能力,为云原生的落地提供了极大助力。
Serverless架构以事件驱动函数为核心单元,由HTTP请求、消息队列等事件触发执行,执行完毕后立即释放资源。其核心价值在于全托管式自动弹性伸缩能力,可根据并发量毫秒级扩容实例,空闲时缩容至零,实现按实际资源消耗计费(而非预留资源)。开发者无需直接管理服务器、操作系统、网络配置等底层资源,而是由云服务提供商负责基础设施的配置、维护和扩展。Serverless架构采用按需付费的模式,提升了成本效益,同时简化了运维并提升了开发效率。
Serverless架构存在一定的局限性,比如冷启动问题,函数初始化时的延迟可能会影响性能;另外Serverless不擅长处理有状态应用,需结合其他技术(如Redis缓存)解决上下文丢失问题。
存储计算分离架构通过解耦计算节点(无状态)与存储节点(持久化),打破传统单体架构的资源绑定限制。数据集中存储于存储系统,计算层通过网络访问共享数据池,实现独立扩展:计算层快速弹性伸缩不影响数据一致性,存储层可独立提升吞吐能力。
可观测架构通过整合指标(Metrics)、日志(Logging)、追踪(Tracing)三大支柱构建深度系统洞察力,其中 Logging 提供多个级别的详细信息跟踪,由应用开发者主动提供;Tracing 提供一个请求从前端到后端的完整调用链路跟踪,对于分布式场景尤其有用;Metrics则提供对系统量化的多维度度量。指标实时监控性能数据(CPU/QPS)并通过Prometheus可视化;日志聚合工具(EFK栈)实现跨节点检索与关联分析;分布式追踪(Jaeger/Zipkin)还原请求全链路因果关系。可观测架构结合持续剖析(Profiling)定位代码瓶颈,关联多源数据(告警/日志/追踪)快速溯源根因,为复杂分布式系统提供运维确定性。
分布式事务模式用于解决微服务架构中跨服务、跨数据库的数据一致性问题,常见模式包括2PC、TCC、Saga等。在分布式系统中根据CAP理论,无法同时满足一致性、可用性和分区容错性,实际应用场景中根据业务的数据一致性要求,在性能和一致性上权衡选择合适的算法。
《》中已对常见的分布式事务实现算法进行了介绍。
CQRS模式分离命令(写操作)与查询(读操作)模型:命令端处理业务逻辑并更新写数据库,查询端通过视图等结构优化读取性能。通过将写操作和读操作独立设计,降低耦合度,优化了读写业务的数据模型,读模型简化了查询逻辑、写模型则专注于业务逻辑。CQRS低些分离架构可以有效解决读写负载冲突,支持读服务水平扩展,但需容忍数据同步延迟以及可能的最终一致性问题,并增加架构复杂度。
EDA架构以事件为通信核心:生产者服务发布状态变更事件至消息中间件,消费者服务订阅事件并异步触发业务逻辑。其核心优势在于生产者与消费者松耦合和最终一致性,支持通过事件溯源重建系统状态。
在云原生架构中,微服务通过事件进行解耦,同时也可以通过事件来触发自动化任务减少人工干预,也可以通过流式ETL(如实时分析用户行为)和事件溯源(Event Sourcing)结合,支持复杂业务逻辑。
参考资料:
-
云原生架构,阿里云
-
https://www.cnblogs.com/IT-Evan/p/18033135
-
Service Mesh发展趋势:云原生中流砥柱