写点什么

微服务架构的设计模式

  • 2015-04-21
  • 本文字数:969 字

    阅读完需:约 3 分钟

前不久,Java Code Geeks 发表了一篇文章,分析单体应用与微服务的优缺点。近日,该网站又发表了一篇文章,提供了六种微服务架构的设计模式。

聚合器微服务设计模式

这是一种最常用也最简单的设计模式,如下图所示:

聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web 页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY 原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X 轴和Z 轴独立扩展。

代理微服务设计模式

这是聚合器模式的一个变种,如下图所示:

在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作。

链式微服务设计模式

这种模式在接收到请求后会产生一个经过合并的响应,如下图所示:

在这种情况下,服务A 接收到请求后会与服务B 进行通信,类似地,服务B 会同服务C 进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。

分支微服务设计模式

这种模式是聚合器模式的扩展,允许同时调用两个微服务链,如下图所示:

数据共享微服务设计模式

自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用(monolithic application)”时,SQL 数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式,如下图所示:

在这种情况下,部分微服务可能会共享缓存和数据库存储。不过,这只有在两个服务之间存在强耦合关系时才可以。对于基于微服务的新建应用程序而言,这是一种反模式。

异步消息传递微服务设计模式

虽然REST 设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替REST 请求/ 响应,如下图所示:

感兴趣的读者可以参考《微服务中的耦合与自治》一文为自己的微服务选择合适的消息传递模式。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015-04-21 05:5841409
用户头像

发布了 1008 篇内容, 共 410.7 次阅读, 收获喜欢 346 次。

关注

评论 1 条评论

发布
用户头像
无论国内还是国外,很多人都没原创,只是写一些自己的读后感。以后标题写清楚:读后感。不是什么垃圾都叫文章
2020-11-30 14:09
回复
没有更多了
发现更多内容

Meta Earth:模块化公链的技术革新与市场潜力解析

股市老人

解析为什么企业出海需要SD-WAN专线

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

大模型工程化落地,足够细分的优质数据是关键

澳鹏Appen

AI工程化 数据标注 训练数据 大模型 LLM

云桌面厂商哪一个更好?

青椒云云电脑

云桌面 云桌面厂家

文件处理的神器,一键上传签署,安全又高效!

聚道云软件连接器

案例分享

华为天气“赏春计划”来袭,浪漫解锁影音会员、出行礼包多重福利

最新动态

Meta Earth:模块化公链的技术革新与市场潜力解析

股市老人

聚焦工业边缘需求,英特尔与阿普奇携手发布创新解决方案

E科讯

云手机解决海外社媒运营的诸多挑战

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 跨境云手机

2024上海国际智慧物业展览会

AIOTE智博会

智慧物业展 智慧物业展会 智慧物业展览会 智慧物业博览会

NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理

汀丶人工智能

大模型 NL2SQL

软件测试学习笔记丨Python的自动解包 自动组包

测试人

Python 软件测试 测试开发

英特尔和Altera发布边缘和FPGA产品,提供FPGA AI套件加速开发者创新

E科讯

RUM 最佳实践-交互延迟的探索与发现

观测云

性能优化

RAG 修炼手册|一文讲透 RAG 背后的技术

Zilliz

nlp 向量数据库 LLM rag enbedding

青椒云桌面玩转AIGC应用部署

青椒云云电脑

云桌面 AIGC

【精选】发布应用到应用商店的基本介绍

国内低代码哪家强?深入探讨低代码选型关键指标和评估模型

牛刀专业低代码

低代码开发平台 国内低代码 低代码选择 低代码平台比较 低代码排名

企业架构设计原则之品质均衡性(二)

凌晞

企业架构 架构设计 架构设计原则

几个编程、创新和AI领域的网站

算AI

人工智能 编程 创新

人大金仓:国产数据库的领航者,高速公路信息化的创新力量

科技热闻

智能制造与AI大模型

百度开发者中心

人工智能 深度学习 大模型 智能制造

企业架构设计原则之品质均衡性(三)

凌晞

企业架构 架构设计

电脑配置差卡顿?试试云电脑

青椒云云电脑

云桌面 云电脑平台

ETLCloud结合kafka的数据集成

RestCloud

kafka ETL 数据集成

牛蛙!GoFrame2.7正式版的监控组件真是及时雨

王中阳Go

Go golang 面试题 面经 大厂面经

大模型分布式训练并行技术

百度开发者中心

人工智能 深度学习 大模型

如何在云电脑串流中实现多屏操作

青椒云云电脑

云电脑 云电脑平台

微服务架构的设计模式_架构_谢丽_InfoQ精选文章