近期项目用到了dubbo。这边稍微记录下搭建流程,给自己加深下印象,也留个记录。
1、安装zookeeper用来作为dubbo的注册中心。主要环节是配置zoo.cfg配置文件。具体安装配置可参考:
2、dubbo-sdk项目创建。该项目是消费者和服务提供者沟通的桥梁,其中定义了api的接口,服务提供者进行具体实现,消费者进行使用。不一定要一定是项目,也可以是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" />
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" />
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>