在微服务架构中,最重要的是要保持服务间的隔离。实体服务(Entity Service)是被广泛应用于微服务架构上的一种模式,但其实它是一种反模式,因为它背离了服务隔离的原则。Michael Nygard在他的微服务系列博客中提到了这一点。

\\

Nygard是“Release It!”的作者,他说实体服务被用于解决一个非常常见的问题,在微软的一本关于微服务架构的电子书中和Spring的两个教程中均用到了这种模式。

\\

在Nygard看来,反模式只会让事情变得更糟。为了说明实体服务是一种反模式,他使用一个大型的遗留单体作为例子。这个应用程序有多个实例,每个实例都包含了所有特性:

\\

\\

根据Spring的教程,使用微服务架构对这个应用程序进行重构,将特性分解到单独的服务中。但Nygard说,大部分特性仍然需要多个实体,这样就会在多个实体之间形成依赖。比如,计算购物车的价钱需要所有服务的介入:

\\

\\

Nygard认为,这些依赖会造成耦合,从而影响可用性、性能和容量。他还强调说,这些依赖导致语义上的耦合,一个服务的变更会波及到其他服务。在最糟糕的情况下,这样会导致一个服务需要与不同版本的服务打交道。

\\

Nygard总结了在微服务架构中使用实体服务将会产生的结果:

\\

  • 团队仍然可以按照他们的节奏发布服务。\\\t
  • 语义上的耦合导致了跨团队的协商。\\\t
  • 大量请求需要调用实体服务,增加了流量负载。\\\t
  • 整体的可用性取决于更多的服务。\

基于以上几点,Nygard认为实体服务是一种反模式。

\\

来自Fourth.com的首席架构师Ben Morris在另一篇博文中引用了Nygard的文章,他说,在微服务架构中使用实体服务比单体架构还要糟糕。Morris认为,微服务的优势之一就是它的自治性,但细粒度的服务越多,它们之间的耦合就越大,从而降低了自治性。他强调说,流程的变更会变得很困难,因为困难涉及到大量的服务,而如果服务是由不同的开发团队进行维护的,那么变更会变得更加困难。使用大量小型耦合服务的另一个风险在于,一个服务发生故障会产生级联效应,影响到更多的服务。

\\

Nygard的博文引发了长时间的讨论。微软那本电子书的作者说,他们在书中已经针对使用HTTP调用来耦合微服务这样的做法提供了警告。他也强调,正确使用领域模型可以提升微服务的自治性。

\\

在Nygard后续的博文中,他将会介绍实体服务的替代方案。

\\

查看英文原文:Entity Services is an Antipattern

实体服务是一种反模式相关推荐

  1. [译] JavaScript 的函数式编程是一种反模式

    本文讲的是[译] JavaScript 的函数式编程是一种反模式, 原文地址:Functional programming in JavaScript is an antipattern 原文作者:A ...

  2. kubernetes 部署_用于Kubernetes部署的10种反模式

    kubernetes 部署 As container adoption and usage continues to rise, Kubernetes (K8s) has become the lea ...

  3. 微服务设计 10 大反模式和陷阱

    数据驱动迁移反模式(Data-Driven Migration) ​ 如上图所示,此种反模式的问题在于微服务的粒度没有最终确定之前就做了数据迁移,如此当不断的调整服务粒度时,那么数据库就免不了频繁迁移 ...

  4. php 三元预算? :_项目预算:一种反模式

    php 三元预算? : The desired benefits of agile development are many. Customers are happier and more willi ...

  5. SOA系列文章(二):服务设计原理:服务模式和反模式

    服务设计系列的法则已经发展到最佳通信实践和取样相关编码的程度.本文提供了设计和实现网络服务的基本原理,并且对面向服务的体系结构(SOA)的相关概念做了一个简要的回顾,以及有关于几种模式和反模式的详细讨 ...

  6. Ajax 和 XML: 五种 Ajax 反模式(转载)

    通过理解错误的编码方式,可以更好地了解如何正确地进行编码.当然,编写 Asynchronous JavaScript™ + XML(Ajax)有正确的方法,也有错误的方法.本文将讨论一些需要避免的常见 ...

  7. 五种 Ajax 反模式:避免常见的 Ajax 代码陷阱!

      developerWorks 中国  >  XML | Web development  > Ajax 和 XML: 五种 Ajax 反模式 避免常见的 Ajax 代码陷阱 文档选项 ...

  8. 反模式:神仙大类和黄金大锤

    数学中有正数和负数 物理学有『物质』和『反物质』的存在 武侠小说中有九阳神功也有九阴真经 生活中有婚姻也有出轨 ...... 事物总是充满这种相互矛盾而统一的有趣现象. 对于GoF提出的23种设计模式 ...

  9. 设计模式杂谈——模式与反模式之争

    摘要:探究事物的反面性是一种哲学上的思考,物理学在"物质"之上提出并证实了"反物质"的存在,就像数学上有正数也有负数,武侠小说中有九阳神功也有九阴真经,生活中有 ...

最新文章

  1. 36 张图梳理 Intellij IDEA 常用设置
  2. jenkins+findbugs+checkstyle+PMD静态代码检查(二)
  3. Session对象的清空
  4. discuz中又拍云在ie8,chrome22下不能上传的问题
  5. ▲▲▲▲▲▲▲▲▲▲▲yum源的配置(本地和ftp)▲▲▲▲▲▲▲▲▲▲▲▲▲v...
  6. 2022年各种经典java小游戏
  7. Word转PDF方法(jacob插件)
  8. PDF控件Aspose.Pdf 12月新版17.12发布 | 附下载
  9. 俄罗斯方块是java_俄罗斯方块java
  10. Python实现人脸识别
  11. 【毫米波雷达】人体目标探测理论
  12. FreeRtos在RH850 D1L芯片上移植
  13. Chrome安装Octotree插件
  14. 服务器系统2008 64,服务器主机server 2008 R2 操作系统漏洞
  15. requests结果显示“请开启JavaScript并刷新该页”,selenium不用cookie解决
  16. 蓝凌LKS-kOA怎么样?
  17. excel批量将数字转为文本格式
  18. PCIe学习笔记之pcie结构和配置空间
  19. 单片机C语言之学习矩阵按键
  20. 钉钉开会使用虚拟摄像头

热门文章

  1. 解读自动驾驶的2020:从硬件角度看,无人车商业化落地难在哪?
  2. 亚马逊首席技术官预测2021年将改变世界的八大技术趋势
  3. 【机器视觉】机器视觉产业链
  4. 《科学》封面特别报道:人类登月50年
  5. 网络安全:等保2.0落地在即,触发五百亿新增市场
  6. 半导体行业必将再火十年!两大趋势成发展新动能
  7. 下一次工业革命:计算生物学与生物平台
  8. 基于系统科学理论的认知科学研究进展
  9. Waymo正式向真正“无人车”迈进,申请DMV远程监控许可证
  10. AI指数评论:提防“路灯谬误”,开启全球多方对话