您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

10个必知必会的云原生架构设计模式

时间:2023-12-04 14:32:19  来源:  作者:IT168企业级

在构建云原生应用程序时,采用了一些不同的软件架构方法。云原生应用程序通常采用微服务架构,以最大程度地利用云计算模型的优势。这些应用程序需要能够在动态编排和容器化环境中运行。

云原生计算是一种在现代、动态环境(如公有云、私有云和混合云)中构建和运行可扩展应用程序的软件开发方法。

云环境中,软件架构的主要目标是关注点的分离,特别是通过将软件组件模块化到容器中。为了实现这一目标,有几种模式可供选择。本文介绍一些常用模式。

1 边车/副车模式

边车/副车模式(Sidecar/Adaptor Pattern)用于将主要应用程序的一些外围功能或附加功能抽象为独立的微服务。这种模式可以实现服务之间的独立性,打破紧密耦合的组件。

边车/副车模式适用于应用程序使用相同的语言和库,并且需要一个共享生命周期但可以独立部署的服务。然而,如果为每个实例部署边车服务的资源成本超过隔离优势,那么在应用程序中实施边车/副车模式可能不是一个明智的决策。例如,将日志记录、配置等功能抽象到单独的微服务中,如下面的示例所示,每个主要服务都有一个关联的辅助服务,它们之间形成一对一的关系。在应用边车/副车模式时,需要综合考虑资源成本和隔离优势。

10个必知必会的云原生架构设计模式

边车/副车模式

2 大使模式

大使模式(Ambassador Pattern)经常用于扩展现有服务的网络功能,特别是对于那些过于古老或复杂且无法修改的服务。

大使服务可以被视为与客户端共存的一个进程外代理。

通过此模式添加额外的代理会增加延迟。与边车不同,这种模式可以用于多个服务。这种模式对于增强遗留服务的连接功能非常有效。如果低延迟是关键因素,使用大使模式可能会增加代理开销成本,因此不是一个好的选择。

10个必知必会的云原生架构设计模式

大使模式

3 散点/聚集模式

散点/聚集模式(Scatter/Gather Pattern)是一种用于并行处理大规模数据集的设计模式。这种模式的要点是有一个聚合器,汇总来自不同服务的响应并提供报价。这种模式对于控制消息流到所有微服务非常有用。

10个必知必会的云原生架构设计模式

散点/聚集模式

散点/聚集模式适用于需要对大量数据进行并行处理的情况,如分布式计算、数据分析、并行搜索等。它可以提高系统的处理速度和吞吐量,利用多个处理单元同时处理数据,从而加快处理过程。

4 前端后端模式

前端后端模式(Backends For Frontends Pattern)的主要要点是在前端和实际后端之间添加另一层后端,这被称为前端后端。这是工业界广泛应用的最受欢迎的模式之一。通过添加这种额外的层,可以在不同的前端和后端服务器之间进行编排,验证过滤来自前端的响应,映射和转换来自后端的数据模型。

10个必知必会的云原生架构设计模式

BFF模式

5 反腐败层模式

反腐败层模式(Anti-Corruption Layer Pattern)用于解决在不同子系统或微服务之间通信时的语义不匹配问题。这种模式最初由埃里克·埃文斯在领域驱动设计中描述。

当存在多个子系统或微服务它们各自使用不同的语义和数据结构时,可能会导致通信困难和混乱。反腐败层模式的目标是在这些不兼容的系统之间建立一个翻译或转换层,以确保它们之间能够正确地交互和通信。这个层充当了一个中间件,负责将一个系统的请求转换为另一个系统可以理解的格式,并将响应从一个系统的格式转换为另一个系统可以接受的格式。

反腐败层模式的缺点和注意事项:

增加了额外的中间层,可能会引入性能延迟。

需要额外的开发和维护工作来处理转换逻辑。

需要确保反腐败层的正确性和稳定性,以避免引入更多问题。

10个必知必会的云原生架构设计模式

反腐败层模式

6 命令与查询职责分离模式

命令与查询职责分离模式(Command and Query Responsibility Segregation,CQRS)旨在将读操作(查询)和写操作(命令)分离开来,以优化系统的性能、可伸缩性和灵活性。

在传统的应用程序中,读操作和写操作通常共享相同的数据模型和数据库,这会产生一些问题,例如当需要进行复杂查询时,可能会对写操作的性能产生影响,或者在需要高并发写操作时可能会影响读操作的性能。

解决方案是命令查询职责分离(CQRS),将读取和写入分为不同的组件:

命令必须基于任务(例如“预订酒店房间”而不是“将预订状态设置为已预订”)。

命令通过异步通信实现。

查询不会改变数据库。查询响应使用不包含业务逻辑的数据传输对象(DTO)。

这种模式的缺点是需要保持读取和写入组件的同步。

10个必知必会的云原生架构设计模式

命令查询职责分离模式

7 事件溯源模式

事件溯源模式(Event Sourcing Pattern)是过去十年中流行的一种技术,用于处理CRUD应用程序缺乏一致性的情况。与传统CRUD应用程序仅保存当前状态不同,事件溯源的主要是以追加方式保存数据,以存储对数据执行的完整系列操作。它提供了事务数据的一致性,保持了完整的编辑历史记录,提供完全的审计控制。

优点:

通过实现强数据一致性来提高性能。

使用事件存储简化数据编辑的实现和管理。

事件对领域专家可读,不仅对开发人员可理解。

防止对同一数据的并发更新,因为其事件的时间顺序。

事件存储作为数据操作的单一数据源。

缺点:

对于小型领域应用来说可能过于工程化。

不适用于实时数据驱动的应用程序。

8 服务网格模 式

服务网格模式(Service Mesh Pattern)旨在提供对微服务之间通信、安全、监控和可观察性的细粒度控制。

此模式要点是将与应用程序无关的横切关注点(如通信、监控、安全性、身份验证/授权等)与核心业务逻辑隔离开来。这种专用基础设施层为低延迟、可配置性增加了价值。

除了身份验证/授权、服务发现,服务网格模式还提供其他重要功能,如:

断路器

速率限制

条件速率限制

流量转移

9 笨拙组件与智能组件(面向前端)模式

此模式是在关注点分离(SoC)原则基础上的一种进阶模式。在这种模式中,将前端组件分为两种类型:笨拙组件(Dumb Components)和智能组件(Smart Components)。笨拙组件主要负责呈现和展示数据,而智能组件则负责处理数据流和业务逻辑,将数据注入到笨拙组件中。主要通过在笨拙组件中基于@Input和@Output(EventEmitter)的双向数据绑定实现。通过这些注解,笨拙组件从智能组件获取相关数据,或将数据发送到智能组件。智能组件通常注入服务或外观(Facade)并处理数据流。

10 单向架构(面向前端)模式

单向架构(面向前端)模式是一种结合响应式编程的主要模式。在当今的前端框架中,数据流是单向的,由数据流向驱动。数据仅以一种方向流向视图,而视图的反馈会触发不同的操作。这种设计使得对数据的控制更加精确。在处理数据流时,使用不同的库如RxJs、NgRx、Flux,可以提供多种功能和工具。



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 架构  点击:(4)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27  Search: 架构  点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
京东小程序数据中心架构设计与最佳实践
一、京东小程序是什么京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提...【详细内容】
2024-03-27  Search: 架构  点击:(9)  评论:(0)  加入收藏
从 MySQL 到 ByteHouse,抖音精准推荐存储架构重构解读
ByteHouse是一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,可以通过增加服务器数量来提升处理能力。本文将从兴趣圈层...【详细内容】
2024-03-22  Search: 架构  点击:(23)  评论:(0)  加入收藏
全程回顾黄仁勋GTC演讲:Blackwell架构B200芯片登场
北京时间3月19日4时-6时,英伟达创始人黄仁勋在美国加州圣何塞SAP中心登台,发表GTC 2024的主题演讲《见证AI的变革时刻》。鉴于过去一年多时间里AI带来的生产力变革,以及英伟达...【详细内容】
2024-03-19  Search: 架构  点击:(17)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13  Search: 架构  点击:(5)  评论:(0)  加入收藏
有了LLM,所有程序员都将转变为架构师?
编译 | 言征 出品 | 51CTO技术栈(微信号:blog51cto)生成式人工智能是否会取代人类程序员?可能不会。但使用生成式人工智能的人类可能会,可惜的是,现在还不是时候。目前,我们正在见...【详细内容】
2024-03-07  Search: 架构  点击:(19)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  Search: 架构  点击:(36)  评论:(0)  加入收藏
通用数据湖仓一体架构正当时
这篇博文中提出的建议并不新鲜。事实上许多组织已经投入了数年时间和昂贵的数据工程团队的工作,以慢慢构建这种架构的某个版本。我知道这一点,因为我以前在Uber和LinkedIn做过...【详细内容】
2024-01-15  Search: 架构  点击:(75)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(4)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(5)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(8)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(114)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条