Dubbo入门学习--Dubbo注册及监控中心(3)

Dubbo入门学习–Dubbo注册及监控中心

Dubbo提供广播、Zookeeper、Redis和Simple四种注册中心类型。

Multicast注册中心

《Dubbo入门学习--Dubbo注册及监控中心(3)》
《Dubbo入门学习--Dubbo注册及监控中心(3)》

提供方启动时广播自己的地址。

消费方启动时广播订阅请求。

提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了unicast=false,则广播给订阅者。

消费方收到提供方地址时,连接该地址进行RPC调用。

Or:

为了减少广播量,Dubbo缺省使用单播发送提供者地址信息给消费者,

如果一个机器上同时启了多个消费者进程,消费者需声明unicast=false,否则只会有一个消费者能收到消息:

Or:

Zookeeper注册中心

《Dubbo入门学习--Dubbo注册及监控中心(3)》
《Dubbo入门学习--Dubbo注册及监控中心(3)》

流程说明:

服务提供者启动时

向/dubbo/com.foo.BarService/providers目录下写入自己的URL地址。

服务消费者启动时

订阅/dubbo/com.foo.BarService/providers目录下的提供者URL地址。

并向/dubbo/com.foo.BarService/consumers目录下写入自己的URL地址。

监控中心启动时

订阅/dubbo/com.foo.BarService目录下的所有提供者和消费者URL地址。

支持以下功能:

当提供者出现断电等异常停机时,注册中心能自动删除提供者信息。

当注册中心重启时,能自动恢复注册数据,以及订阅请求。

当会话过期时,能自动恢复注册数据,以及订阅请求。

当设置时,记录失败注册和订阅请求,后台定时重试。

可通过设置zookeeper登录信息。

可通过设置zookeeper的根节点,不设置将使用无根树。

支持*号通配符,可订阅服务的所有分组和所有版本的提供者。

在provider和consumer中增加zookeeper客户端jar包依赖:

    org.apache.zookeeper

    zookeeper

    3.3.3

或直接下载:http://repo1.maven.org/maven2/org/apache/zookeeper/zookeeper

支持zkclient和curator两种Zookeeper客户端实现:

ZKClient Zookeeper Registry

从2.2.0版本开始缺省为zkclient实现,以提升zookeeper客户端的健状性。

《Dubbo入门学习--Dubbo注册及监控中心(3)》

缺省配置:

Or:

dubbo.registry.client=zkclient

Or:

zookeeper://10.20.153.10:2181?client=zkclient

需依赖:

    com.github.sgroschupf

    zkclient

    0.1

或直接下载:http://repo1.maven.org/maven2/com/github/sgroschupf/zkclient

Curator Zookeeper Registry

从2.3.0版本开始支持可选curator实现。

《Dubbo入门学习--Dubbo注册及监控中心(3)》

如果需要改为curator实现,请配置:

Or:

dubbo.registry.client=curator

Or:

zookeeper://10.20.153.10:2181?client=curator

需依赖

    com.netflix.curator

    curator-framework

    1.1.10

或直接下载:http://repo1.maven.org/maven2/com/netflix/curator/curator-framework

Zookeeper单机配置:

Or:

Zookeeper集群配置:

Or:

同一Zookeeper,分成多组注册中心:

Redis注册中心

《Dubbo入门学习--Dubbo注册及监控中心(3)》
《Dubbo入门学习--Dubbo注册及监控中心(3)》

数据结构:

使用Redis的Key/Map结构存储数据。

主Key为服务名和类型。

Map中的Key为URL地址。

Map中的Value为过期时间,用于判断脏数据,脏数据由监控中心删除。(注意:服务器时间必需同步,否则过期检测会不准确)

使用Redis的Publish/Subscribe事件通知数据变更。

通过事件的值区分事件类型:register, unregister, subscribe, unsubscribe。

普通消费者直接订阅指定服务提供者的Key,只会收到指定服务的register, unregister事件。

监控中心通过psubscribe功能订阅/dubbo/*,会收到所有服务的所有变更事件。

调用过程:

服务提供方启动时,向Key:/dubbo/com.foo.BarService/providers下,添加当前提供者的地址。

并向Channel:/dubbo/com.foo.BarService/providers发送register事件。

服务消费方启动时,从Channel:/dubbo/com.foo.BarService/providers订阅register和unregister事件。

并向Key:/dubbo/com.foo.BarService/providers下,添加当前消费者的地址。

服务消费方收到register和unregister事件后,从Key:/dubbo/com.foo.BarService/providers下获取提供者地址列表。

服务监控中心启动时,从Channel:/dubbo/*订阅register和unregister,以及subscribe和unsubsribe事件。

服务监控中心收到register和unregister事件后,从Key:/dubbo/com.foo.BarService/providers下获取提供者地址列表。

服务监控中心收到subscribe和unsubsribe事件后,从Key:/dubbo/com.foo.BarService/consumers下获取消费者地址列表。

选项:

可通过设置redis中key的前缀,缺省为dubbo。

可通过设置redis集群策略,缺省为failover。

failover: 只写入和读取任意一台,失败时重试另一台,需要服务器端自行配置数据同步。

replicate: 在客户端同时写入所有服务器,只读取单台,服务器端不需要同步,注册中心集群增大,性能压力也会更大。

Config redis registry:

Or:

Or:

Or:

Simple注册中心

《Dubbo入门学习--Dubbo注册及监控中心(3)》

Export simple registry service:

   

   

   

       

       

   

Reference the simple registry service:

Or:

Simple监控中心

《Dubbo入门学习--Dubbo注册及监控中心(3)》

1.1 暴露一个简单监控中心服务到注册中心: (如果是用安装包,不需要自己写这个配置,如果是自己实现监控中心,则需要)

   

   

   

   

   

1.2 通过注册中心发现监控中心服务:

Or:

dubbo.monitor.protocol=registry

2.1 暴露一个简单监控中心服务,但不注册到注册中心: (如果是用安装包,不需要自己写这个配置,如果是自己实现监控中心,则需要)

   

   

   

   

2.2 直连监控中心服务:

Or:

Or:

dubbo.monitor.address=127.0.0.1:7070

❈❈

《Dubbo入门学习--Dubbo注册及监控中心(3)》
《Dubbo入门学习--Dubbo注册及监控中心(3)》

长按指纹,识别二维码,一键关注

    原文作者:Java帮帮
    原文地址: https://www.jianshu.com/p/f764ed4623d2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞