近期项目用到了dubbo。这边稍微记录下搭建流程,给自己加深下印象,也留个记录。

1、安装zookeeper用来作为dubbo的注册中心。主要环节是配置zoo.cfg配置文件。具体安装配置可参考:

2、dubbo-sdk项目创建。该项目是消费者和服务提供者沟通的桥梁,其中定义了api的接口,服务提供者进行具体实现,消费者进行使用。不一定要一定是项目,也可以是jar包之类,能保证被引用就行。

具体如图,只是简单的一个接口。

dubbo注册集群配置 dubbo服务注册流程_jar包

3、dubbo-register服务提供者项目创建。该项目用来实现接口,同时在注册中心进行注册。接口实现和一般项目一样。重点在于dubbo相关的配置。如下图所示,配置分两块,一块是暴露服务地址,一块是暴露服务接口。暴露的服务地址是启动的zookeeper地址,暴露的接口中的ref是实现的bean的id。和spring相似。

<dubbo:registry address="zookeeper://10.20.38.95:2181"></dubbo:registry>
<dubbo:service interface="com.durgan.test.api.TestRegister" ref="testRegister" />




dubbo注册集群配置 dubbo服务注册流程_zookeeper_02

4、dubbo-client的实现。dubbo是消费者,可以直接使用服务提供者提供的实现。使用方式和正常项目一样。重点同样在于dubbo相关配置。如图所示,重点同样是两块,暴露地址,配置要引用的接口。

<dubbo:registry address="zookeeper://10.20.38.95:2181"></dubbo:registry> 
<dubbo:reference interface="com.durgan.test.api.TestRegister" id="testRegister" />




dubbo注册集群配置 dubbo服务注册流程_dubbo注册集群配置_03

5、关于这几项配置解释:

dubbo:registry 标签一些属性的说明:
      1)register是否向此注册中心注册服务,如果设为false,将只订阅,不注册。
      2)check注册中心不存在时,是否报错。
      3)subscribe是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。
      4)timeout注册中心请求超时时间(毫秒)。
      5)address可以Zookeeper集群配置,地址可以多个以逗号隔开等。

  dubbo:service标签的一些属性说明:
     1)interface服务接口的路径
     2)ref引用对应的实现类的Bean的ID
     3)registry向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A
     4)register 默认true ,该协议的服务是否注册到注册中心。

 dubbo:reference 的一些属性的说明:
      1)interface调用的服务接口
      2)check 启动时检查提供者是否存在,true报错,false忽略
      3)registry 从指定注册中心注册获取服务列表,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔
      4)loadbalance 负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用

6、项目用到的相关jar包:

<dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>dubbo</artifactId>
             <version>2.5.3</version>
         </dependency>
         
          <dependency>
             <groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
         </dependency>
   
       <dependency>
       <groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
       </dependency>