缘由
新入职一家公司,想要了解一下公司各系统各职责,并尝试理清各系统之间的关系,公司采用dubbo做rpc(服务治理),zookeeper作为服务的注册于发现,为什么服务治理几个字要用括号?呵呵
于是编写一个了一个程序,从zookeeper中获取所有的接口,以及结构对于的providers和consumers;
接口在zk中的结构为:
- /dubbo/${interface}/providers
-
/dubbo/${interface}/consumers
本想画出这些应用的依赖关系,于是我画啊画啊,就放弃了。
依赖关系
可以看到上面的服务层,我只画一小部分,就这样子了(服务名我屏蔽了)。
分析
上面的服务层中所有的服务都是平等的,就免不了存在循环依赖的问题。
解决办法
俗话说,任何问题,就要增加一层就能解决,如果不能,就再加一层。

增加一个DSP(datasource provider)层, 这一层主要是与数据打交道,主要提供CURD,和一些基本的当前领域的数据组装服务,为上面领域服务层提供数据支持。
服务层只依赖于DSP层,并不相互依赖。
网友评论