简述SOA和微服务的概念以及两者之间的关系和异同

SOA

面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

微服务

一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。

关系

微服务在形式上与SOA很类似,在分布式环境中都是进行更多独立的服务、独立的部署,我们可以理解是SOA的继任者。但是骨子里微服务又将SOA那一套沉重的前期规划、设计和分层实施的思路彻底打烂,形成了一个新的思想变种,灵活、敏捷、小巧,更适合团队密切的协作。这就是进行了SOA基因的彻底改造,形成了更简化的一种分布式架构形态,尤其满足更为互联网化应用的需求。

异同

(SOA)具有企业范围,而微服务体系结构具有应用程序范围。微服务中的服务组件通常只有一个目的,并且确实很好地完成这一任务。另一方面,在SOA中,服务通常包含更多的业务功能,并且通常将它们实现为完整的子系统。

微服务,在某种程度上,是SOA演进的下一步。在提出微服务这个通用名称之前,有人将其称为“微型Web服务”或“细粒度SOA”。

在SOA中,它使用企业服务总线(ESB)进行通信,服务与服务之间通过总线进行消息传递。ESB可能会成为影响整个系统的单点故障。由于每个服务都通过ESB进行通信,因此如果其中一项服务变慢,则可能会阻塞对该服务的请求,从而阻塞ESB。

另一方面,微服务的容错性要好得多。例如,如果一个微服务发生故障,则仅会影响该微服务。所有其他微服务将继续定期处理请求。

你可能感兴趣的:(微服务,microservices,SOA,软件工程,软件开发)