SOA和微服务(microservice)有什么区别?

这些天,在工作场所或技术讲座上有关于Microservices的大量讨论。 如果您之前曾经与SOA合作,您可能会想知道SOA与微服务之间有什么区别。 以下是两种架构的详细比较。

SOA

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

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

图1:SOA架构

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

现在,我们来看看Microservices架构,然后将它们进行比较。

微服务架构

Microservices是一种软件架构模式,其中复杂应用程序由小而独立的进程组成,使用语言无关的API进行通信。

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

图2:微服务架构

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

微服务架构与SOA

如上所述,两种架构具有相似的优缺点和一些差异。 在这两种架构中,每个服务 – 不像单片架构 – 都有一定的责任。 因此,可以在各种技术层面开发服务,这将技术多样性带入开发团队。 服务的开发可以组织在多个团队中,但是每个团队都需要了解SOA中的通用通信机制。

在微服务中,与SOA不同,服务可以独立于其他服务进行操作和部署。 因此,更容易经常部署新版本的服务或独立扩展服务。

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

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

单元测试   开发人员在测试中必须模拟通信机制,这是更困难的。 由于许多不同的服务类型,部署和操作复杂性在两种体系结构中都是一个问题。

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

最后但并非最不重要的是,SOA与微服务的主要区别在于规模和范围。 Microservice必须明显小于SOA趋于成为,而且主要是小型(呃)独立部署的服务。 另一方面,SOA可以是整体,也可以由多个微服务组成。

图3:SOA和微服务

同样重要的是,SOA已经以各种样式设计和实现,这可能与此处描述的不同,通常是由于专注于用于集成单片应用程序的ESB。

 

原文地址:https://dzone.com/articles/microservices-vs-soa-2

Comments

So empty here ... leave a comment!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Sidebar