微服务与soa






如今,在工作场所或技术讲座中,关于微服务的讨论很多。 而且,如果您以前使用过SOA,您可能会想知道SOA和微服务之间有什么区别。 这是两种架构的详细比较。

SOA

面向服务的体系结构是一种软件体系结构模式,其应用程序组件通过网络上的通信协议向其他组件提供服务。 该通信可以涉及简单的数据传递,也可以涉及两个或多个协调彼此之间连接服务的服务。 服务(例如RESTful Web服务)执行一些小的功能,例如验证订单,激活帐户或提供购物车服务。

SOA中有2个主要角色,即服务提供者和服务消费者。 软件代理可以扮演两个角色。 消费者层是消费者(人类用户,其他服务或第三方)与SOA进行交互的点,而提供者层则由SOA中定义的所有服务组成。 下图显示了SOA体系结构的快速视图。



SOA 微服务 dubbo soa与微服务的关联和区别_大数据

图1:SOA体系结构



企业服务总线(ESB)是一种集成体系结构,它允许通过公共通信总线进行通信,该通信总线由提供商和使用者之间的各种点对点连接组成。 除上述内容外,数据存储在SOA中的所有服务中共享。

现在,让我们看一下微服务架构,然后将两者进行比较。

微服务架构

微服务是一种软件体系结构模式,其中复杂的应用程序由使用语言不可知的API相互通信的小型独立进程组成。

微服务必须是系统架构中的真正需求,因为它可能被错误地设计。 这意味着服务应该是可独立部署的,或者能够在系统中不需要时关闭服务,并且对其他服务没有任何影响。 下图显示了微服务架构的快速视图。



SOA 微服务 dubbo soa与微服务的关联和区别_大数据_02

图2:微服务架构



如上所示,每个服务都有其自己的数据库,或者一个数据库在一些微服务之间共享。

微服务架构与SOA

如上所述,这两种架构都有相似的优缺点和不同之处。 在这两种体系结构中,每项服务(与整体体系结构不同)都有一定的责任。 因此,可以在各种技术堆栈中开发服务,从而将技术多样性带入开发团队。 可以在多个团队中组织服务的开发,但是,每个团队都需要了解SOA中的通用通信机制。

在微服务中,与SOA不同,服务可以独立于其他服务运行和部署。 因此,更容易频繁地部署服务的新版本或独立扩展服务。

在SOA中,ESB可能会成为影响整个应用程序的单点故障。 由于每个服务都通过ESB进行通信,因此如果其中一项服务变慢,则可能导致ESB被对该服务的请求所阻塞。 另一方面,微服务的容错性要好得多。 例如,如果一个微服务中存在内存泄漏,则仅会影响该微服务。 其他微服务将继续处理请求。

在两种体系结构中,开发人员都必须处理体系结构和分布式系统的复杂性。 开发人员必须在微服务之间(如果消息队列用于微服务体系结构中)或ESB与服务之间实现服务间通信机制。

单元测试   开发人员必须在测试中模拟通信机制,因此难度更大。 由于许多不同的服务类型,因此两种架构都需要考虑部署和操作复杂性。

在SOA中,服务共享数据存储(如图1所示),而每个服务在微服务中可以具有独立的数据存储。 共享数据存储有其优点和缺点。 例如,数据可以在所有服务之间重用,同时带来服务之间的依赖性和紧密耦合。

最后但并非最不重要的一点是,SOA和微服务之间的主要区别在于规模和范围。 微服务必须显着小于SOA的规模,并且主要是小型(可独立部署)的服务。 另一方面,SOA可以是整体,也可以包含多个微服务。



SOA 微服务 dubbo soa与微服务的关联和区别_数据库_03

图3:SOA和微服务



同样重要的是,SOA的设计和实现方式可能与此处描述的样式有所不同,这通常是由于侧重于用于集成单片应用程序的ESB。

翻译自: https://www.javacodegeeks.com/2016/11/microservices-vs-soa.html

微服务与soa