Dubbo存在的意义就在于服务提供方只需要把自己的服务接口注册到注册中心中也就是Zookeeper中,而使用方只需要知道我需要什么接口,但是不必依赖于接口提供者的项目,通过Zookeeper作为中介进行沟通,消费者可以通过注册到上面的节点的数据获取到服务的相关信息,然后Dubbo中获取到这些信息之后,会使用配置好的协议来进行解析,建立与服务提供方的连接以及可以通过该协议调用接口中提供的方法,当然这里是远程调用的形式而存在的。
从图中可以看到的是接口分为providers和consumers两个节点,也就是服务的提供者作为providers中的一个节点来记录其相关的信息,而服务消费者作为consumers中的一个节点来记录其消费的服务的信息。
服务的提供者
服务的提供端会发布自己的服务的端口号,然后后面的是服务的类的全限定名,包括其中的参数有很多
是不是任何host都能够连接
应用的名称
dubbo的版本
服务的接口
日志类型
接口中包含的方法
进程id
版本
提供方
时间戳
dubbo://192.168.154.1:20880/cn.wy.facade.SeewoSysUnitFacadeService?
anyhost=true
&application=inviteCode_service
&dubbo=2.5.3
&interface=cn.wy.facade.SeewoSysUnitFacadeService
&logger=log4j
&methods=getSchoolByInviteCode,getSchoolInviteCode,getSchoolList
&pid=10228
&revision=1.0-SNAPSHOT
&side=provider
×tamp=1506244594511
服务消费者
消费端 ip地址/服务的全限定类名
消费端定义的应用名称
目录是consumers
是否需要对接口进行验证
默认的超时时间
dubbo的版本
dubbo的接口
dubbo的日志类型
该接口中的方法
进程id
服务消费端的版本
标识服务消费端
时间戳
consumer://192.168.154.1/cn.wy.facade.SeewoSysUnitFacadeService?
application=inviteCode_service_consumer
&category=consumers
&check=false
&default.timeout=10000
&dubbo=2.5.3
&interface=cn.wy.facade.SeewoSysUnitFacadeService
&logger=log4j
&methods=getSchoolByInviteCode,getSchoolInviteCode,getSchoolList
&pid=10228
&revision=1.0-SNAPSHOT
&side=consumer
×tamp=1506244605827
从上面的这些路径中可以看到所有的内容都是来源于我们自己配置好的配置文件,也就是说在加载完配置文件之后就会创建相应的路径在zookeeper中,然后根据你的配置文件区分是服务的提供者还是服务的消费者,如果是提供者就将解析好的配置文件中的数据构成上述路径,将其注册到zookeeper中去,当然其类型应该是临时节点。而如果是服务的消费者那么就把其注册到consumers节点下面的相应的类路径下面,并把配置文件中配置好的各种参数进行拼接,构成上面consumer部分的路径,然后将其注册到Zookeeper中去,当然这个也是临时节点。