微服务与SOA不同

我正在寻找SOA /微服务架构风格的差异,并找到了一个很好的链接https://www.infoq.com/articles/boot-microservices

它说:
作为“面向服务的体系结构”(SOA)的继承者,微服务可以归入同一系列“分布式系统”,并推广了许多与SOA相同的概念和实践。 然而,它们在不同的地方在于对个别服务的责任范围。 在SOA中,服务可能负责处理各种功能和数据域,而微服务的一般指导原则是它负责管理单个数据域以及围绕该域的相应功能。

请帮我理解:
单个数据域的含义(推荐用于微服务)。 是否表示必须构建一个单独的微服务来管理单个域/实体(以及具有该单一域/实体的关联/复合域/实体)。 如果出现这种情况,那么即使实现基本功能(企业)应用程序,也会有许多(〜20至〜50)微服务

编辑:我已经通过链接微服务架构和SOA之间的差异,但它解释说,它在前两个原则是相同的,并在第三点(在SOA中,服务共享模式和合同,而不是类),不同是SOAP合同,但是随后的SOA(使用REST)与微服务(主要使用REST)有什么不同?


我认为这是一个解释问题:

我认为在SOA中, service不是一个物理过程(Windows服务/应用程序域),而是一个逻辑边界...... SOA和微服务在最小的自治组件方面适用相同的规则。 他们拥有一个或多个域属性/域的集合(技术权限和数据所有者,意味着它们是唯一可以更改该数据段状态的组件)。

现在在运行时,我认为如果你不需要分发你的进程,那么你可以在同一个进程中部署它们(稍后当你需要扩展,分发你的组件以获得更好的性能时)。

合理?


除了肖恩所说的,微服务是人们在SOA开始在许多公司使用时开始调用API的东西。 领域驱动设计的兴起也导致该术语的使用量增加。 在目前的行业中,两者之间绝对没有区别,人们认为它们看起来合适。

原则上,当你说遵循哲学时,你最终会得到许多微服务,这是对的。 在我看来,无论是SOA还是微服务,对独立服务的抽象应该仅仅取决于用例,服务将如何部署以及有多少团队将并行处理这些服务。 如果跨主机部署服务(尽管容器和DC / OS框架现在正在解决此问题),但网络带宽的成本也在不断上升。 如果它是快速变化的服务,拥有大量移动部件,那么将一项大服务分解为微服务是有道理的。 否则,我会避免过早优化,并将功能打包成一个(或几个大的)服务。


在我看来,关于“域”的问题,我认为这是微服务的一个主要特征:微服务应该管理自己的功能域和数据模型。

假设您的公司内有产品目录应用程序。 您可能不希望有许多其他应用程序触及目录持久层并且(再次)抽象目录模型,因为它会加重模型重构/演化。 这可能会导致这些应用程序之间的并发问题,从而阻止对应用程序进行扩展。相反,您可能更愿意维护一个目录应用程序,这会暴露其他应用程序所使用的Web服务API(如REST端点)。

我在这个其他相关的问题“Microservices = SOA - ESB”中阅读了这个评论。 事实上,ESB与这种微服务特性不兼容:“智能端点和笨点”意味着当一个微服务需要另一个作为依赖时,它应该直接使用它,而不需要任何路由逻辑/组件处理管道。

最后,您可以根据Martin Fowler对微服务视频的介绍查看此备忘单。

链接地址: http://www.djcxy.com/p/34087.html

上一篇: Microservice vs SOA differs

下一篇: API Gateway Layer