实体服务是一种反模式

实体服务是一种反模式

大家好,又见面了,我是全栈君。

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

\\

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

\\

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

\\

82000b2ddadd942dc6bf7da4c4814170.png

\\

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

\\

9d73e770fdc92059a54a634676f15729.png

\\

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

\\

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

\\

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

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

\\

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

\\

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

\\

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

\\

查看英文原文Entity Services is an Antipattern

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107787.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • STM32 RT-Thread Nano(3)移植控制台与Finsh

    STM32 RT-Thread Nano(3)移植控制台与Finsh 本文介绍如何基于KeilMDK移植RT-Thread的控制台/Finsh。这样有利于开发过程中的调试,进行输入输出控制。开发平台:KeilMDK5.24硬件平台:XNUCLEO-F103RB 移植系统:RT-ThreadNanoV3.1.3 在Nano上添加UART控制台在RT-ThreadNano上添加UART控制台打印…

  • 编程分苹果问题_分析解决问题有关总结

    编程分苹果问题_分析解决问题有关总结分苹果问题分析及程序*n只奶牛坐在一排,每个奶牛拥有ai个苹果,*现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同*,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,*问最少需要移动多少次可以平分苹果,如果方案不存在输出-1。

    2022年10月11日
  • 适配器简单介绍

    适配器简单介绍适配器的作用如下图:1、这种通信适配器上面装有处理器和存储器(RAM和ROM),硬件地址固化在适配器的ROM中,软件地址(IP地址)在计算机的存储器中。2、适配器在接收和发送各种帧时,不使用计算机的CPU,此时计算机的CPU可以处理其他任务。3、当适配器收到有差错的帧时,就把帧直接丢弃不通知计算机。4、当计算机手收到正确的帧时,就使用中断通知计算机,并交付协议栈中的网络层。5、当计算机发送IP数据…

  • PyCharm激活码永久有效PyCharm2018.1.4激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2018.1.4激活码教程-持续更新,一步到位PyCharm激活码永久有效2018.1.4激活码教程-Windows版永久激活-持续更新,Idea激活码2018.1.4成功激活

  • 【转载】How browsers work–Behind the scenes of modern web browsers (前端必读)

    【转载】How browsers work–Behind the scenes of modern web browsers (前端必读)

    2021年11月18日
  • 电子元器件/模块供应商汇总

    电子元器件/模块供应商汇总本榜单内的35家企业中,上市/拟上市公司有11家、官方自愿披露数据的企业有16家,累计约占总样本数的80%;非官方来源的第三方佐证数据有8个,约占20%。中电港产品线:3PEAK、华大北斗、AMD、Amlogic、AMS、Barefoot、上海贝岭、BOSCH、Centec、Dialog、DatangNXP、奇鲸科技、Dynax、EPSON、复旦微电子、Gemalto、HDSC、Hosonic、ISSI、Lattice、Liteonsemi、Maxim、MAXLINE…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号