07-SOA与微服务的区别

SOA和微服务的区别

如果你是IT从业者,你可能听过SOA和微服务的争论,毕竟,现在微服务和敏捷开发应用非常流行。

首先,这两种架构听起来非常相似,他们跟单体应用架构有着明显的区别,单体应用是将所有服务集成到自身中。而这两种每个服务都各自负责一部分,两者对解耦都有一定程度的帮助

二者主要的区别就是服务范围。简而言之,面向服务体系架构(SOA)面向的范围更加企业化(范围更广),而微服务的范围更加应用化。

这里有一些基本的定义来区分(两者):

  • SOA 是面向企业级的架构,主要用来构建可重用,统一同步的服务API。帮助开发人员更快的构建,并集成其他系统的数据(更关心企业服务)

  • 微服务 是一种构建灵活,可扩展,可伸缩应用的一种架构。(更关心应用架构)


为啥这个区别需要注意

当你忽视这两者的差异时,两者核心中的许多方法和原则会不相兼容。了解这些差异,可以了解两者是互补的,而不是二选一的竞争关系。

以下是这种区别发挥作用的几种情况:

  1. 重用. SOA中,集成重用是主要的目标,企业中寻找某种程度上的重用性非常重要,微服务架构创建整个应用程序时会导致依赖关系,从而降低敏捷性和服务的弹性。微服务组件更喜欢使用复制代码,接受其他服务的数据来解耦。

  2. 同步调用. SOA中的可重用服务可在整个企业范围内使用,主要使用RESTful API等同步协议。但是,在微服务应用程序中,同步调用会引入实时依赖性,从而导致弹性丧失。它还可能存在延迟,从而影响性能。在微服务应用程序中,首选异步通信作为交互方式,例如事件源,其中使用发布订阅模型使微服务组件能够在另一个组件中的数据发生更改时保持更新。

  3. 数据重用. 在SOA中提供服务的明确目标是让所有应用程序直接在其主要源上同步获取和更改数据,从而减少维护复杂数据同步模式的需要。在微服务应用程序中,每个微服务理想地具有对其所需的所有数据的本地访问,以确保其与其他微服务以及实际上来自其他应用程序的独立性,即使这意味着在其他系统中存在一些数据重复。当然,这种重复增加了复杂性,因此必须与敏捷性和性能的提升相平衡,但这这已经被作为微服务现实情况被大家接受了。

有些人会指出,SOA与微服务之间的争论要复杂得多。没错。这其中还有很多。

有关这些细微差别的更详细的技术说明,您可能需要阅读这篇文章. 。它更详细。然而,从商业角度来看,两者包含的范围是至关重要的区别。

要了解有关如何构建敏捷应用程序的更多信息,请下载Agile Applications Architecture电子书的免费副本。.

原文:https://www.ibm.com/blogs/cloud-computing/2018/09/06/soa-versus-microservices/


喜欢请点个赞

转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

如有错误,请务必不吝指正。谢谢

我的博客:https://xzing.github.io/