松耦合(Loose coupling)笔记

很多年前看过的一本书,有过这么一句话(大意):很多复杂问题的解决都是通过增加中间层来实现的。
比如:应用系统最早是两层架构,数据库的负载往往会很大,通过增加应用服务器来分摊数据库层的压力;
系统集成,点对点的对接,系统间相互的依赖性太大,增加一个中间层(ESB,企业服务总线)实现松耦合性。

开发语言上,想让对象与对象间松耦合,通过增加抽象类(Abstract Class)或者接口来做到。

松耦合(Loose coupling)笔记_第1张图片
------------------------------------------------------------------------------------------------------------------------------------------------------------------

松耦合的目标是最小化依赖。松耦合这个概念主要用来处理可伸缩性、灵活性和容错这些需求。


SOA应用于大型分布式系统。对于这样的系统来说,可伸缩性和容错性是可维护性的关键。另一个重要的目标是:最小化修改、故障对系统在整体上的影响。所以,松耦合就成了SOA的关键概念。


松耦合要付出使系统更加复杂的代价。松耦合意味着更多的开发以及维护工作量。


紧耦合 vs 松耦合

松耦合(Loose coupling)笔记_第2张图片

一个例子:A系统作为服务提供方,与B1,B2,B3....Bx等服务消费方系统对接,使用紧耦合点对点的方式来系统集成,那么假如A系统如果更改了地址,那么B1,B2,B3...Bx系统都需要求相应的请求地址。说明系统和系统间严重依赖。

要实现松耦合,通常的做法就是引入Mediator(中间层,也有翻译成中介者),在SOA中,这个中间层通常指的就是ESB(企业服务总线)。

Web Service在技术上是点对点的连接,在此你通常使用中间人来找到请求的物理端点,在运行时把请求路由到服务供应方。




你可能感兴趣的:(松耦合(Loose coupling)笔记)