SOA面向服务编程(分布式的服务架构)

1,595 阅读2分钟

SOA是什么?

SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构

SOA的发展:

可参考

当我们的项目比较小的时候,我们只有一个人系统,并把他们写在了一起,放在一个服务器上

比如以前写的web应用,一个工程下面有pojo service dao

我们将多个模块分成多个子系统,多个子系统直接互相调用(因为SOA一般用于大型项目,比较复杂,所以一般总系统不会再集成,会拆分多个,分别做成服务,相互调用)。

类似于E3项目一开始的时候会用maven把common parent manager分开,但此时的web(也就是表现层)是与业务层 数据层高度耦合的

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

SOA的好处:

  • 降低用户成本,用户不需要关心各服务之间是什么语言的、不需要知道如果调用他们,只要通过统一标准找数据总线就可以了。

  • 程序之间关系服务简单

  • 识别哪些程序有问题(挂掉)

缺点:提示了系统的复杂程度,性能有相应影响。

数据总线是什么?

  • 数据总线里面一个key对于一个value,key指的是服务名,value则是服务的调度方式,还有一点需要说明的是,数据总线只是指路人,服务是不经过数据总线的,如上图的黄色线的路径。
  • 数据总线通过域名解析实现:一个域名绑定多台服务器,ajax也可以,dns也可以,解析域名嘛。

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