微服务与SOA:有什么区别?
在“什么是微服务”中,了解到具有分布式架构的SOA和微服务比单片架构具有明显的优势。
在本博客中,我将解释基于分层的架构,并告诉你微服务和SOA架构之间的区别。
在深入研究微服务和SOA之间的差异之前,让我告诉你单片式架构,SOA和微服务之间的基本差异:
用外行的术语来说,一个整体类似于一个大容器,其中应用程序的所有软件组件都组装在一起并紧密包装。
面向服务的架构本质上是服务的集合。 这些服务相互通信。 通信可能涉及简单的数据传递,也可能涉及两个或多个协调某些活动的服务。 需要一些将服务相互连接的方法。
微服务又称微服务架构,是一种架构样式,可将应用程序构造为围绕业务领域建模的小型自治服务的集合。
你还可以观看下面的视频,其中我们的微服务架构专家解释了微服务架构和SOA之间的区别。
Edureka微服务与SOA教程
现在,让我们看看微服务和SOA之间的主要区别:
微服务与SOA
在将微服务与SOA进行比较时,它们都依赖于服务作为主要组件,但是在服务特征方面差异很大
面向服务的架构
SOA定义了四种基本服务类型,如下所示:
商业服务:
?定义核心业务运营的粗粒度服务。
?通过XML,业务流程执行语言(BPEL)等代表。
企业服务:
?实施业务服务定义的功能。
?主要依靠应用程序服务和基础结构服务来满足业务请求。
应用服务:
?限于特定应用程序上下文的细粒度服务。
?专用的用户界面可以直接调用服务。
基础设施服务:
?执行非功能性任务,例如身份验证,审核,安全性和日志记录。
?可以从应用程序服务或企业服务中调用。
微服务的服务分类标准有限。 它们由两种服务类型组成,如下所示。
功能服务:
?支持特定的业务运营。
?服务的访问是在外部完成的,这些服务不会与其他服务共享。
?与SOA一样,基础结构服务实现诸如审核,安全性和日志记录之类的任务。
?在这种情况下,服务不会向外界公开。
SOA和MSA之间的主要区别
微服务和SOA之间的主要区别在细节上
?服务粒度:微服务架构中的服务组件通常是单用途的服务,可以真正,非常好地完成一件事情。借助SOA,服务组件的大小范围可以从小型应用程序服务到大型企业服务。实际上,在SOA中以大型产品甚至子系统为代表的服务组件是很常见的。
?组件共享:组件共享是SOA的核心宗旨之一。实际上,组件共享就是企业服务的全部内容。 SOA增强了组件共享,而MSA则尝试通过“有界上下文”来最大程度地减少共享。有界上下文是指将组件及其数据耦合为具有最小依赖性的单个单元。由于SOA依靠多种服务来满足业务请求,因此基于SOA构建的系统可能会比MSA慢。
?中间件与API层:微服务架构模式通常具有所谓的API层,而SOA具有消息传递中间件组件。 SOA中的消息传递中间件提供了MSA中未提供的许多其他功能,包括中介和路由,消息增强,消息和协议转换。 MSA在服务和服务使用者之间有一个API层。
?远程服务:SOA体系结构依赖于消息传递(AMQP,MSMQ)和SOAP作为主要的远程访问协议。大多数MSA依赖于REST和简单消息传递(JMS,MSMQ)这两种协议,并且MSA中发现的协议通常是同质的。
?异构的互操作性:SOA通过其消息中间件组件促进了多种异构协议的传播。 MSA尝试通过减少集成选择的数量来简化体系结构模式。如果要在异构环境中使用不同协议集成多个系统,则需要考虑SOA。如果可以通过相同的远程访问协议公开和访问所有服务,则MSA是更好的选择。
最后,我要说要判断哪种架构比另一种架构还不是那么简单。 它主要取决于你要构建的应用程序的目的。 SOA更适合需要与许多异构应用程序集成的大型和复杂的业务应用程序环境; 较小的应用程序不需要消息中间件组件,因此不适合SOA。 另一方面,微服务更适合于较小且分区合理的基于Web的系统,在这些系统中,微服务为你提供了作为开发人员的更大控制权。 结论是,由于它们都具有不同的体系结构特征,因此这主要取决于要构建的应用程序的目的。
文章写道这里,如有不足之处,欢迎评论交流补充!