微服务架构原理与开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.2 微服务与SOA的异同点

无论是从架构图出发,还是从核心概念相比,经过仔细对比后发现,微服务与SOA的概念异同点如下。

1. 相同点

(1)服务都是独立运行和部署的。

(2)对消费者而言,服务都是黑盒的。

(3)服务都是通过网络通信的。

2. 不同点

(1)微服务间的通信是轻量级的,既可以是不统一标准的,也可以是跨语言的。

(2)微服务是围绕业务功能设计的,但往往不能代表一项完整的业务活动,在服务划分上比SOA的粒度更细、更微小。

(3)SOA可以包含其他基础服务,而微服务本身可以调用其他服务,但不会包含或组合其他服务。两者相比较,微服务更像是基础服务。

概念上的不同导致了两者的发展方向完全不同。SOA更强调两点:一是业务封装;二是统一标准。一个SOA的服务往往包容一套完整的基础业务服务,提供统一对外接口,关于该业务所有的功能都可以通过这个服务来提供。而微服务可能更强调拆分,每个服务都是细粒度的、独立的存储方式,可以轻量级的进行通信,也可以跨语言。战略设计的不同导致了微服务和SOA在实际运用中的架构方式渐行渐远。

在一套SOA下的所有服务会定义一个统一的服务标准,消费者也需要遵守相应的标准才能调用相应的服务,这也导致SOA的整体架构显得有些笨重,无论是在原有SOA的体系下开发一个新的服务,还是集成已有的SOA服务,都需要做很多额外的工作。例如,无论是服务提供方还是调用者,都要遵循这个标准去开发统一的接口和客户端,而这样做往往会限制服务双方的技术选型。

那么,这个标准到底是怎样的呢?这里就不介绍具体的SOA接口标准的某个技术实现了,毕竟本书的重点是微服务,感兴趣的读者可以自行学习SOA具体实践。