QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

微服务架构的设计模式

  • 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:5841365
用户头像

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

关注

评论 1 条评论

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

软件测试/测试开发丨Linux常用命令之性能统计

测试人

Python Linux 程序员 性能 软件测试

点云标注在自动驾驶中的实践应用与挑战

数据堂

实现大文件远程传输、备份和共享的小秘诀

镭速

大文件远程传输

低代码技术分享官丨BPMN 2.0简介

inBuilder低代码平台

流程 低代码平台

软件测试/测试开发丨Python 数据类 dataclass 学习笔记

测试人

Python 软件测试 dataclass

阿里云蝉联 FaaS 领导者,产品能力获最高分

阿里巴巴云原生

阿里云 云原生 函数计算

华秋慕尼黑上海电子展圆满收官,数字化赋能智能制造!

华秋电子

软通动力与华秋达成生态共创合作,共同推动物联网硬件创新

华秋电子

LeetCode题解:2618. 检查是否是类的对象实例,迭代和递归

Lee Chen

JavaScript LeetCode

直播预告 | 博睿学院:让Arthas带你玩转jvm

博睿数据

JVM 可观测性 智能运维 博睿数据 博睿学院

向量检索在大模型应用场景的技术和实践

Baidu AICLOUD

向量检索 大模型

MES1.0.0正式发布|万界星空推出免费的MES系统

万界星空科技

开源 MES系统 制造业生产管理系统

有哪些好用的远程传输大文件的软件

镭速

远程传输大文件

IBM收购数据可观测性厂商 Databand.ai

乘云数字DataBuff

HashData:让大模型“飞入寻常百姓家”

酷克数据HashData

点云标注中的隐私保护和数据安全问题

数据堂

润和软件与华秋达成生态共创合作,共同推动物联网硬件创新

华秋电子

先楫半导体与华秋达成生态共创合作,共建技术生态社区

华秋电子

aspera替代方案:可靠和高效的企业文件传输工具

镭速

aspera替代方案 企业文件传输工具

将DAST集成到CI/CD管道中的优势和实施步骤

互联网工科生

CI/CD DAST web 服务

在《比特与瓦特》的交点,藏着未来能源的一些真相

脑极体

新能源

软件测试 | Java语言的特点

测吧(北京)科技有限公司

测试

深开鸿与华秋达成生态共创合作,共同打造硬件生态

华秋电子

开鸿智谷与华秋达成生态共创合作,共同打造硬件生态

华秋电子

应对突发流量,如何快速为自建 K8s 添加云上弹性能力

阿里巴巴云原生

阿里云 Kubernetes 云原生

国内市场知名的数据可视化工具

2D3D前端可视化开发

数据分析 数据可视化 商业智能 数据可视化工具 可视化大屏

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