时下最流行的SOA架构到底是啥,总算是说清楚了

SOA是什么?

SOA本质是一种组件模型。下面看一下百度的定义:

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

一、SOA的应用场景:

(1)一开始我们的系统可能是这样的:

时下最流行的SOA架构到底是啥,总算是说清楚了

当我们的项目比较小时,我们只有一个系统,并且把他们写到一起,放在一个服务器上,但是随着平台越来越大,数据量越来越大,我们不得不通过分库,把多个模块的数据库分别放在对应得服务器上,每个模块调用自己的子系统即可。

时下最流行的SOA架构到底是啥,总算是说清楚了

随着我们系统的进一步复杂度的提示,我们不得不进一步对系统的性能进行提升,我们将多个模块分成多个子系统,多个子系统直接互相调用(因为SOA一般用于大型项目,比较复杂,所以一般总系统不会再集成,会拆分多个,分别做成服务,相互调用)。当我们的电商UI进行一个下订单的任务时,多个服务直接互相调用,系统通过数据总线,分别调用对于的子系统即可。

企业数据总线:企业数据总线不是对多个子模块的集成,他在这里充当数据通道的作用,数据总线不关心业务,数据总线根据给的地址和协议去调服务,上端不关心服务在哪里是什么,只找数据总线。

上面几个图应该算是比较清楚了,随着业务的深入,我们不得不对系统进行调整,分别是对数据和业务的拆分,最后每个子系统对面提供服务。

SOA主要的使用场景:

时下最流行的SOA架构到底是啥,总算是说清楚了

通过上面的图我们可以看出,多个子系统直接相互交互,相互调用非常凌乱,这样我们就很不爽,所以我们就用到了我们的SOA架构,SOA又叫服务治理,SOA就是帮助我们把服务之间调用的乱七八糟的关系给治理起来,然后提供一个统一的标准,把我们的服务治理成下图所示,以前我们的服务是互相交互,现在是只对数据总线进行交互,这样系统就变得统一起来。

时下最流行的SOA架构到底是啥,总算是说清楚了

统一标准:各系统的协议、地址、交互方式。

新的交互方式:各个系统分别根据统一标准向数据总线进行注册,各子系统调用其他子系统时,我们并不关心如果找到其他子系统,我们只招数据总线,数据总线再根据统一标准找其他子系统,所以数据总线在这里充当一个只路人的作用。

二、数据总线

时下最流行的SOA架构到底是啥,总算是说清楚了

其实我在上面写了,数据总线是起到调度服务的作用,数据总线不是集成服务,数据总线更新一个调度框架,每个服务需要根据约定向数据总线注册服务,那么如何注册那?其实数据总线就像一个字典结构,

数据总线里面一个key对于一个value,key指的是服务名,value则是服务的调度方式,还有一点需要说明的是,数据总线只是指路人,服务是不经过数据总线的,如上图的黄色线的路径。

数据总线通过域名解析实现:一个域名绑定多台服务器,ajax也可以,dns也可以,解析域名嘛。

其实数据总线还有一些高级应用,比如心跳检测,实现负载均衡等等,就不细说了,目前应用数据总线的有阿里的dubbo,还有zookeeper,以及Spring Cloud的Eureka

三、SOA最显著的优势:

(1)SOA具有低耦合性特点,业务伙伴对整个业务系统的影响较低

(2)SOA与平台无关,减少了业务应用实现的限制

更深入理解SOA,请看这篇文章:https://www.cnblogs.com/renzhitian/p/6853289.html

四、SOA与微服务架构的区别:

从下面一张图基本可以看出微服务架构的区别:

时下最流行的SOA架构到底是啥,总算是说清楚了

微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;

微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;

微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合;

郑重声明:网站刊登/转载此文出于传递更多信息之目的 ,并不意味着赞同其观点或论证其描述,不负责其真实性 。