Dubbo原理简介、与Zookeeper整合利用

时间:2021-02-24 08:22:56

官方文档:http://dubbo.io/books/dubbo-user-book/

Dubbo的简单介绍

Dubbo是一个分布式服务框架,架构如图:

Dubbo原理简介、与Zookeeper整合利用

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注冊与发现的注冊中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务执行容器。

 

调用关系说明:

0. 服务容器负责启动,载入,执行服务提供者。

1. 服务提供者在启动时,向注冊中心注冊自己提供的服务。

2. 服务消费者在启动时。向注冊中心订阅自己所需的服务。

3. 注冊中心返回服务提供者地址列表给消费者,假设有变更。注冊中心将基于长连接推送变更数据给消费者。

4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,假设调用失败。再选还有一台调用。

5. 服务消费者和提供者,在内存中累计调用次数和调用时间。定时每分钟发送一次统计数据到监控中心。

 

Dubbo提供了非常多协议,Dubbo协议、RMI协议、Hessian协议,我们查看Dubbo源码,有各种协议的实现,如图所看到的:

Dubbo原理简介、与Zookeeper整合利用

我们之前没用Dubbo之前时,大部分都使用Hessian来使用我们服务的暴露和调用,利用HessianProxyFactory调用远程接口。

 

 Dubbo与Zookeeper整合使用

第一步:在Linux上安装Zookeeper

       Zookeeper作为Dubbo服务的注冊中心,Dubbo原先基于数据库的注冊中心,没採用Zookeeper。Zookeeper一个分布式的服务框架。是树型的文件夹服务的数据存储,能做到集群管理数据 ,这里能非常好的作为Dubbo服务的注冊中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注冊中心能自己主动删除提供者信息,当提供者重新启动时,能自己主动恢复注冊数据,以及订阅请求。我们先在linux上安装Zookeeper,我们安装最简单的单点,集群比較麻烦。

    (1)下载Zookeeper-3.4.6.tar.gz  地址http://www.apache.org/dist/zookeeper/

    (2) 我们放到Linux下的一个目录。然后解压: 

      #tar zxvf zookeeper-3.4.6.tar.gz

  (3)然后在相应的zookeeper-3.4.6/conf 下有一个文件zoo_sample.cfg的这个文件中面配置了监听client连接的port等一些信息。Zookeeper 在启动时会找zoo.cfg这个文件作为默认配置文件,所以我们复制一个名称为zoo.cfg的文件。如图所看到的:

 Dubbo原理简介、与Zookeeper整合利用

我们查看一下这个文件的里面的一些配置信息。如图所看到的:

Dubbo原理简介、与Zookeeper整合利用

说明:

 clientPort:监听客户端连接的port。

 tickTime:基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。

 我们能够对配置文件的port等或者进行高级配置和集群配置比如:maxClientCnxns:限制连接到 ZooKeeper 的client的数量等

 (4)启动Zookeeper 的服务,如图所看到的:

Dubbo原理简介、与Zookeeper整合利用

到这边Zookeeper的安装和配置完毕

  第二步:配置dubbo-admin的管理页面,方便我们管理页面

    (1)下载dubbo-admin-2.4.1.war包。在Linux的tomcat部署,先把dubbo-admin-2.4.1放在tomcat的webapps/ROOT下。然后进行解压:

   (2)然后到webapps/ROOT/WEB-INF下,有一个dubbo.properties文件。里面指向Zookeeper ,使用的是Zookeeper 的注冊中心。如图所看到的:

Dubbo原理简介、与Zookeeper整合利用

多个地址:

dubbo.registry.address=zookeeper://10.143.92.xx:2181?backup=10.143.92.xx:2181,10.143.92.xx:2181,10.143.92.xx:2181,10.143.92.xx:2181

(3)然后启动tomcat服务,username和password:root,并訪问服务,显示登陆页面。说明dubbo-admin部署成功。如图所看到的:

Dubbo原理简介、与Zookeeper整合利用