一、分类
Zookeeper(默认)、Multicase、Redis、Simple
二、Zokeeper注册中心
安装请参照:http://blog.csdn.net/axin1240101543/article/details/79368271
1、简介
Zookeeper是Dubbo推荐使用的注册中心,是Apache Hadoop的子项目,是一个树型的目录服务,支持变更服务,工业强度较高,适用生产环境。
流程说明:
- 服务提供者启动时:向/dubbo/com.foo.BarService/Providers目录下注册自己的URL地址;
- 服务消费者启动时:订阅/dubbo/com.foo.BarService/Providers目录下的提供者URL地址,并向/dubbo/com.foo.BarService/consumers目录下写入自己URL地址;
- 监控中心启动时:订阅/dubbo/com.foo.BarService目录下的所有提供者和消费者URL地址。
支持以下功能:
- 当提供者出现断电等异常停机时,注册中心自动删除提供者信息;
- 当注册中心重启时,能自动恢复注册数据,以及订阅请求;
- 当会话过期时,能自动恢复注册数据,以及订阅请求;
- 当设置<dubbo:registry check="false" />时,记录失败注册和订阅请求,后台定时重试;
- 可通过<dubbo:registry username="admin" password="1234" />设置zookeeper登陆信息;
- 可通过<dubbo:registry group="dubbo" />设置zookeeper的根节点,不设置将使用无根树;
- 支持*号通配符<dubbo:reference group="*" version="*" />,可订阅服务的所有分组和所有版本的提供者。
2、依赖
在provider和consumer中加入zookeeper客户端jar包依赖:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>
3、客户端
Dubbo支持zkclient和curator客户端
a、zkcilent客户端(默认)
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
从2.2.0版本缺省为zkclient实现,以提升zookeeper客户端的健壮性。zkclient是Datameer开源的一个zookeeper客户端实现。
<dubbo:registry client="zkclient"/>
或者:dubbo.registry.client=zkclient
或者:zookeeper://127.0.0.1:2181?client=zkclient
b、curator客户端
<dependency>
<groupId>com.netflix.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>1.1.10</version>
</dependency>
从2.3.0版本开始支持可选curator实现。Curator是Netflix开源的一个zookeeper客户端实现。
<dubbo:registry client="curator"/>
或者:dubbo.registry.client=curator
或者:zookeeper://127.0.0.1:2181?client=curator
4、单机和集群配置
a、单机
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
或者:<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
b、集群
<dubbo:registry address="zookeeper://127.0.0.1:2181?backup=192.168.0.1:2181,192.168.0.2:2181"/>
或者:<dubbo:registry protocol="zookeeper" address="192.168.0.1:2181,192.168.0.2:2181"/>
同一zookeeper,分成多组注册中心:
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="127.0.0.1:2181" group="china"/>
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="127.0.0.1:2181" group="intl"/>
5、配置参数说明
<dubbo:registry />注册中心配置,对应的配置类:com.alibaba.dubbo.config.RegistryConfig。
如果有多个注册中心,可声明多个<dubbo:registry />,通过id属性来区分,并在<dubbo:service />或<dubbo:reference/>的registry属性指定使用的注册中心。
属性 | 对应的URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
id | string | 配置关联 | 标识此注册中心 | 1.0.16以上 | |||
address | <host:prot> | string | 必填 | 服务发现 | 注册中心地址, 无端口缺省值9090, 同一集群地址用 逗号分隔,不同 集群配置多个 <dubbo:registry /> | 1.0.16以上 | |
protocol | <protocol> | string | dubbo | 服务发现 | 注册中心地址协议, 支持dubbo、http、local 三种协议 | 2.0.0以上 | |
port | <port> | string | 9090 | 服务发现 | 注册中心缺省端口, 当address没有端口, 使用此参数 | 2.0.0以上 | |
username | <username> | string | 服务治理 | 登陆注册中心用户名 不需验证可为空 | 2.0.0以上 | ||
password | <password> | string | 服务治理 | 登陆注册中心密码 不需验证可为空 | 2.0.0以上 | ||
transport | registry.transporter | string | netty | 性能调优 | 网络传输方式 mina、netty | 2.0.0以上 | |
timeout | registry.timeout | int | 5000 | 性能调优 | 注册中心请求超时时间 单位:毫秒 | 2.1.0以上 | |
session | registry.session | int | 60000 | 性能调优 | 注册中心会话超时时间 单位:毫秒 用于检测提供者非正常 断电后的脏数据,比如 心跳检测。 | 2.1.0以上 | |
file | registry.file | string | 服务治理 | 使用文件存储注册中心 及服务提供者列表,应用 重启时将基于此文件恢复 (两个注册中心不能用一个文件) | 2.0.0以上 | ||
wait | registry.wait | int | 0 | 服务治理 | 停止时等待通知完成时间 单位:毫秒 | 2.0.0以上 | |
check | check | boolean | true | 服务治理 | 注册中心不存在,是否报错 | 2.0.5以上 | |
register | register | boolean | true | 服务治理 | 是否开启向注册中心注册 | 2.0.5以上 | |
subscribe | subscribe | boolean | true | 服务治理 | 是否开启向注册中心订阅 | 2.0.5以上 | |
dynamic | dynamic | boolean | true | 服务治理 | 服务是否动态注册 | 2.0.5以上 |
三、Multicase注册中心
1、流程说明
此注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
a、提供者启动时,广播自己的地址
b、消费方启动时,广播订阅请求
c、提供方收到订阅请求后,单播自己的地址给订阅者,如果设置了unicast=false,则广播给订阅者。
d、消费方收到提供方地址时,连接该地址进行RPC调用。
组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段:224.0.0.0-239.255.255.255
2、配置
<dubbo:registry address="multicast://224.5.6.7:1234" />
或者:
<dubbo:registry protocol="multicast" address="224.5.6.7:1234" />
为了减少广播量,Dubbo默认使用单播发送提供者地址给消费者,如果一台机器上同时启动了多个消费者进程,消费者需声明unicast=false,否则只有一个消费者收到消息:
<dubbo:registry protocol="multicast" address="224.5.6.7:1234?unicast=false" />
或者:
<dubbo:registry address="multicast://224.5.6.7:1234" >
<dubbo:parameter key="unicast" value="false"/>
<dubbo:registry/>
四、Redis注册中心
略
五、Simple注册中心
略