写点什么

微服务架构的设计模式

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

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

关注

评论 1 条评论

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

测试外包服务 | 从人员外包到测试工具、测试平台,提供全方位的测试解决方案~

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

测试

Gamma是什么意思?5款可替代Gamma的ppt软件推荐!

职场工具箱

人工智能 PPT 办公软件 AIGC AI生成PPT

Java EasyExcel 导出报内存溢出如何解决

不在线第一只蜗牛

Java 内存

腾讯云的相关DDoS攻击问题概览

网络安全服务

腾讯云 服务器 DDoS 腾讯云服务器 DDoS 攻击

利用 Vector 将 Kafka 中的日志数据高效写入 GreptimeDB

Greptime 格睿科技

kafka 时序数据库 vector

深度解读GaussDB逻辑解码技术原理

不在线第一只蜗牛

数据库 oracle

语音识别模型

霍格沃兹测试开发学社

Vector 增加 GreptimeDB 日志写入支持,连接数十种数据源

Greptime 格睿科技

数据库 vector 集成

有数还要有术,数据洞察助力研发效能提升

思码逸研发效能

DevOps 研发效能 敏捷研发 研发效能管理 思码逸

研发效能度量核心三问:看什么、怎么看、怎么说服团队

思码逸研发效能

研发效能 绩效管理 软件研发 研发效能管理 思码逸

鸿蒙生态崛起,开发者如何抓住这波“红利”?

最新动态

Laravel后台极速开发框架 - 集成日历组件

YangGe

laravel

袋鼠云产品功能更新报告12期|让数据资产管理更高效

袋鼠云数栈

专业的技术、卓越的服务,为企业提供一体化测试服务,赋能企业发展创新

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

测试

crossover破解版Mac下载教程,crossover苹果电脑无限试用免费激活码分享

阿拉灯神丁

软件包 crossover mac 破解版 CrossOver 24虚拟机

2024年中国IT用户满意度调研结果公布

极客天地

香港 Web3 宣言两周年专访:传统企业转型 Web3 遇阻,香港虚拟资产之路如何走得更远?

TechubNews

高可用负载均衡实践

俞凡

架构

借助ETLCloud工具,轻松同步Doris数据至Inceptor数据库

谷云科技RestCloud

数据库 Doris ETL 数据集成 lnceptor

1024程序员节:合合信息“百宝箱”开启智能文档处理新纪元

颜淡慕潇

智能文档图像解析技术 textlin acge

阿里巴巴商品搜索API返回值中的关键信息点

技术冰糖葫芦

API 接口 API 测试 API 协议 API 优先

淘宝商品类目API的获取与应用探索

科普小能手

API 接口 API 测试 淘宝API接口 淘宝数据采集 淘宝评论API

BOE(京东方)首度全面解读ADS Pro液晶显示技术众多“真像” 倡导以创新推动产业高价值增长

爱极客侠

GitHub Star 数量前 5 的开源应用程序生成器

NocoBase

GitHub 开源 低代码 无代码 应用程序

【开源鸿蒙】OpenHarmony 5.0轻量系统最小开发环境搭建

码匠许师傅

OpenHarmony risc-v Hi3861

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