官方文档:http://dubbo.io/books/dubbo-user-book/
Dubbo的简单介绍
Dubbo是一个分布式服务框架,架构如图:
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注冊与发现的注冊中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务执行容器。
调用关系说明:
0. 服务容器负责启动,载入,执行服务提供者。
1. 服务提供者在启动时,向注冊中心注冊自己提供的服务。
2. 服务消费者在启动时。向注冊中心订阅自己所需的服务。
3. 注冊中心返回服务提供者地址列表给消费者,假设有变更。注冊中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,假设调用失败。再选还有一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间。定时每分钟发送一次统计数据到监控中心。
Dubbo提供了非常多协议,Dubbo协议、RMI协议、Hessian协议,我们查看Dubbo源码,有各种协议的实现,如图所看到的:
我们之前没用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的文件。如图所看到的:
我们查看一下这个文件的里面的一些配置信息。如图所看到的:
说明:
clientPort:监听客户端连接的port。
tickTime:基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。
我们能够对配置文件的port等或者进行高级配置和集群配置比如:maxClientCnxns:限制连接到 ZooKeeper 的client的数量等
(4)启动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.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部署成功。如图所看到的: