美文网首页Dubbo
《分布式_Dubbo》_DubboAdmin和配置中心汇总

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

作者: tjhuey | 来源:发表于2018-12-10 21:29 被阅读122次

    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注册中心详解


    注册中心的作用

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

    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服务
    • [ ] 服务端配置注册中心
    • [ ] 启动两个服务端
    • [ ] 通过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

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

    image.png image.png
    • 主 Key 为服务名和类型
    • Map 中的 Key 为 URL 地址
    • Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除

    接下来回答第二个问题 当提供者突然 宕机状态能即里变更吗
    这里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
    网课: 推荐 慕课网 图灵学院 谷粒学院

    相关文章

      网友评论

        本文标题:《分布式_Dubbo》_DubboAdmin和配置中心汇总

        本文链接:https://www.haomeiwen.com/subject/yzadhqtx.html