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)
- 服务查找:
- 服务关系查看:
- 服务权重调配:
- 服务路由:
-
服务禁用:
image.png
三、Dubbo注册中心详解
注册中心的作用
为了到达服务集群动态扩容的目的,注册中心存储了服务的地址信息与可用状态信息,并实时推送给订阅了相关服务的客户端。
一个完整的注册中心需要实现以下功能:
- 接收服务端的注册与客户端的引用,即将引用与消费建立关联,并支持多对多。
- 当服务非正常关闭时能即时清除其状态
- 当注册中心重启时,能自动恢复注册数据,以及订阅请求
- 注册中心本身的集群
Dubbo所支持的注册中心
- Multicast 注册中心
- 基于组网广播技术,只能用在局域网内,一般用于简单的测试服务
- Zookeeper 注册中心(****推荐****)
- Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
- Redis 注册中心
- 基于Redis的注册中心
- Simple 注册中心
- 基于本身的Dubbo服务实现(SimpleRegistryService),不支持集群可作为自定义注册中心的参考,但不适合直接用于生产环境。
Redis 注册中心
关于Redis注册中心我们需要了解两点,
- 如何存储服务的注册与订阅关系
- 是当服务状态改变时如何即时更新
演示使用Redis 做为注册中心的使用。
- [ ] 启动Redis服务
- [ ] 服务端配置注册中心
- [ ] 启动两个服务端
- [ ] 通过RedisClient 客户端观察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
同样消费者也是类似其整体结构如下:
- 主 Key 为服务名和类型
- Map 中的 Key 为 URL 地址
- Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除
接下来回答第二个问题 当提供者突然 宕机状态能即里变更吗?
这里Dubbo采用的是定时心跳的机制 来维护服务URL的有效期,默认每30秒(默认的一半
)更新一次有效期。即URL对应的毫秒值。具体代码参见:com.alibaba.dubbo.registry.redis.RedisRegistry#expireExecutor
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
网课: 推荐 慕课网 图灵学院 谷粒学院
网友评论