Dubbo

《分布式_Dubbo》_DubboAdmin和配置中心汇总

2018-12-10  本文已影响122人  tjhuey

admin后台监控的简单使用和配置中心zk以及redis简单汇总

Dubbo控制管理后台使用


Dubbo 控制后台版本说明:

dubbo 在2.6.0 以前 使用dubbo-admin 作为管理后台,2.6 以后已经去掉dubbo-admin 并采用 incubator-dubbo-ops 作为新的管理后台,目前该后台还在开发中还没有发布正式的版本 ,所以这里还是采用的旧版的dubbo-admin 来演示。

Dubbo 控制后台的安装:

#从github 中下载dubbo 项目
git clone https://github.com/apache/incubator-dubbo.git
#更新项目
git fetch
#临时切换至 dubbo-2.5.8 版本
git checkout dubbo-2.5.8
#进入 dubbo-admin 目录
cd dubbo-admin
#mvn 构建admin war 包
mvn clean pakcage -DskipTests
#得到 dubbo-admin-2.5.8.war 即可直接部署至Tomcat
#修改 dubbo.properties 配置文件
dubbo.registry.address=zookeeper://127.0.0.1:2181

相关配置截图


image.png
image.png

控制后台基本功能介绍 :(文案很清楚,操作尝试即可,admin后台以=Node的形式存储在zk)

三、Dubbo注册中心详解


注册中心的作用

为了到达服务集群动态扩容的目的,注册中心存储了服务的地址信息与可用状态信息,并实时推送给订阅了相关服务的客户端。

image.png

一个完整的注册中心需要实现以下功能:

  1. 接收服务端的注册与客户端的引用,即将引用与消费建立关联,并支持多对多。
  2. 当服务非正常关闭时能即时清除其状态
  3. 当注册中心重启时,能自动恢复注册数据,以及订阅请求
  4. 注册中心本身的集群

Dubbo所支持的注册中心

  1. Multicast 注册中心
  2. 基于组网广播技术,只能用在局域网内,一般用于简单的测试服务
  3. Zookeeper 注册中心(****推荐****)
  4. Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
  5. Redis 注册中心
  6. 基于Redis的注册中心
  7. Simple 注册中心
  8. 基于本身的Dubbo服务实现(SimpleRegistryService),不支持集群可作为自定义注册中心的参考,但不适合直接用于生产环境。

Redis 注册中心

关于Redis注册中心我们需要了解两点,

  1. 如何存储服务的注册与订阅关系
  2. 是当服务状态改变时如何即时更新

演示使用Redis 做为注册中心的使用。

redis 注册中心配置:

<dubbo:registry address="redis://192.168.59.2:6379"></dubbo:registry>

当我们启动两个服务端后发现,Reids中增加了一个Hash 类型的记录,其key为/dubbo/huey.dubboserver.demo.UserService/providers。Value中分别存储了两个服务提供者的URL和有效期。


image.png

同样消费者也是类似其整体结构如下:

image.png image.png

接下来回答第二个问题 当提供者突然 宕机状态能即里变更吗
这里Dubbo采用的是定时心跳的机制 来维护服务URL的有效期,默认每30秒(默认的一半)更新一次有效期。即URL对应的毫秒值。具体代码参见:com.alibaba.dubbo.registry.redis.RedisRegistry#expireExecutor

image.png image.png

com.alibaba.dubbo.registry.redis.RedisRegistry#deferExpired
com.alibaba.dubbo.registry.integration.RegistryDirectory
com.alibaba.dubbo.registry.support.ProviderConsumerRegTable

Zookeeper 注册中心

关于Zookeeper 注册中心同样需要了解其存储结构和更新机制。
Zookeper是一个树型的目录服务,本身支持变更推送相比redis的实现Publish/Subscribe功能更稳定。
结构:


图片

[图片上传中...(image.png-a6186c-1544448478833-0)]

失败重连
com.alibaba.dubbo.registry.support.FailbackRegistry

提供者突然断开:
基于Zookeeper 临时节点机制实现,在客户端会话超时后 Zookeeper会自动删除所有临时节点,默认为40秒。
// 创建临时节点

com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient#createEphemeral

提问:
在zookeeper 断开的40秒内 如果 有客户端加入 会调用 已失效的提供者连接吗?
答:不会,提供者宕机后 ,其与客户端的链接也随即断开,客户端在调用前会检测长连接状态。

// 检测连接是否有效
com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker#isAvailable

创建 configurators与routers 会创建持久节点
// 创建持久节点

com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient#createPersistent

服务订阅机制实现:

// 注册目录
com.alibaba.dubbo.registry.integration.RegistryDirectory

源码解析:


image.png

测试配置中心


image.png image.png

总结

配置相对简单,源码跟踪无止境。。。。

参考

官网:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
GitBook:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html
网课: 推荐 慕课网 图灵学院 谷粒学院

上一篇 下一篇

猜你喜欢

热点阅读