• Zookeeper笔记(四)Zookeeper在Dubbo中的应用


    Dubbo的架构

    节点角色说明:

    Provider: 暴露服务的服务提供方。
    Consumer: 调用远程服务的服务消费方。
    Registry: 服务注册与发现的注册中心。
    Monitor: 统计服务的调用次调和调用时间的监控中心。
    Container: 服务运行容器。
    调用关系说明:

    0. 服务容器负责启动,加载,运行服务提供者。
    1. 服务提供者在启动时,向注册中心注册自己提供的服务。
    2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
    3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
    5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    Dubbo推荐使用Zookeeper注册中心

    流程说明:

    服务提供者启动时
    向/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="*" />,可订阅服务的所有分组和所有版本的提供者。

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

    <dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.3.3</version>
    </dependency>
    

      

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

    zkclient客户端实现:

    ZKClient Zookeeper Registry

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

    ZKClient是Datameer开源的一个Zookeeper客户端实现,开源比较早,参见:https://github.com/sgroschupf/zkclient

    缺省配置:

    <dubbo:registry ... client="zkclient" />

    或:

    dubbo.registry.client=zkclient

    或:

    zookeeper://10.20.153.10:2181?client=zkclient

    需依赖:

    <dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
    </dependency>
    

      

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

    Zookeeper单机配置:

    <dubbo:registry address="zookeeper://10.20.153.10:2181" />
    Or:
    <dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
    

      

    Zookeeper集群配置:

    <dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
    Or:
    <dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
    

      

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

    <dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
    <dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />
    

      

    转自 Dubbo用户指南

  • 相关阅读:
    2015-12-25-(菜单栏的效果)
    2015-12-23-(实现左边题目,右边内容的效果)
    2015-12-23-( dispaly:table的用法)
    2015-12-21(box-sizing:border-box)
    闭包
    js中this的用法
    jQuery或Angular实现弹出框单击显示,双击隐藏
    jQuery 点击任意处隐藏,除某个元素外
    导航栏滚动到顶部后固定
    h5 audio标签在手机上不能自动播放????
  • 原文地址:https://www.cnblogs.com/binyue/p/4759734.html
Copyright © 2020-2023  润新知