1、Provider(服务提供方)先在注册中心注册自己的提供的服务。
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="gw-service-user" />
<!-- 1、提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="gw-service-user" />
<!-- 2、使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="10.108.1.206:2181" />
<!-- 3、 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 4、用户服务接口 -->
<dubbo:service interface="wusc.edu.facade.user.service.PmsUserFacade" ref="pmsUserFacade" />
说明:
(1)、第2点中,address=”10.108.1.206:2181“,是Zookeeper(注册中心)的IP地址和端口,可以是互联网上IP地址,也可以是本地IP,只要机器上装了Zookeeper并运行,当Provider(提供方)运行时,会向注册中心注册服务,并通过Provider机子上的20880端口提供注册的服务,供消费者Consumer(消费者)消费。
(2)、第4点中便是声明需要暴露的接口服务。
2、Consumer(消费者)在注册中心订阅服务。
<!-- 1、消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="edu-web-boss" />
<!-- 2、使用zookeeper注册中心暴露服务地址 -->
<!-- 注册中心地址 -->
<dubbo:registry protocol="zookeeper" address="10.108.1.206:2181<span style="font-family: Arial, Helvetica, sans-serif;">" /></span>
<!-- 3、用户服务接口 -->
<dubbo:reference interface="wusc.edu.facade.user.service.PmsUserFacade" id="pmsUserFacade" check="false" />
说明:
(1)、首先依然是和注册中心连接,<dubbo:registry protocol="zookeeper" address="10.108.1.206:2181" />,Zookeeper的IP地址和端口,
(2)、第3点中Consumer(消费者)向注册中心订阅服务。
注意:
(1)、消费者不需要注明请求的端口,只需要知道请求接口。
(在群上询问,听了别人的意见):因为不需要,调用者会从 服务提供方的 API信息里,获取到端口,就跟 调用时,不用写明 具体的服务提供方IP,一个道理。
(我的结论):Comsumer(消费者)第一次运行时,会在Zookeeper中获取一份服务地址列表,并在本地缓存了服务列表,不此时知道Zookeeper时候存在所需服务、服务地址、端口,所以不需要写明具体的服务提供方IP和端口。在Zookeeper(消息中心)注册了需要消费的接口,在消费的时候会获取具体接口地址(包括IP地址,接口路径以及端口),然后消费者会脱离与注册中心关系,直接请求服务提供方获取数据。