官方文档: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部署成功。如图所看到的:

最新文章

  1. TCP协议中的三次握手和四次挥手(图解)
  2. JQuery学习(选择器-简单-animated)
  3. Jenkins: 基础篇(环境配置)
  4. 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand问题解决
  5. 解读30个提高Web程序执行效率的好经验
  6. [转]C语言的那些秘密之---函数返回局部变量
  7. 基于appium的移动端自动化测试,密码键盘无法识别问题
  8. [ExtJS5学习笔记]第六节 Extjs的类系统Class System命名规则及定义和调试
  9. SpringBoot中使用Servlet,Filter,Listener
  10. C++学习笔记55:流类库与输入输出
  11. SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。
  12. python - class类 (三) 类的组合
  13. stl之容器、迭代器、算法几者之间的关系
  14. SQL与SQL Server
  15. Array.Copy 数据是克隆吗?
  16. Redis自学笔记 --string类型
  17. Reinvent the Wheel Often
  18. Phaser3 场景Scene之间的传值 -- HTML JAVASCRIPT 网页游戏开发
  19. Java八种基本类型
  20. flask-login 学习(1)

热门文章

  1. hihoCoder_1445_后缀自动机二·重复旋律5
  2. 使用google字体发生http://fonts.gstatic.com/s/ubuntu/v8/_aijTyevf54tkVDLy-dlnFtXRa8TVwTICgirnJhmVJw.woff2
  3. django通用视图
  4. Shape of passed values is (3490, 21), indices imply (3469, 21)
  5. 纯css3加载动画
  6. CSS伪代码
  7. android gson使用
  8. 301-React Ext-React创建组件的三种方式及其区别
  9. [LeetCode] 83. Remove Duplicates from Sorted List_Easy tag: Linked List
  10. js判断浏览器的类型和获得浏览器的版本