Dubbo+ZooKeeper之旅
Posted 几度平凡人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo+ZooKeeper之旅相关的知识,希望对你有一定的参考价值。
dubbo 结构体系
- 服务容器启动,加载,运行Provider。
- Provider向Registry注册自己提供的服务,只在启动时与Registry交互。
- Consumer向Registry订阅自己所需的服务,只在启动时与Registry交互。
- Registry返回Provider地址列表给Consumer,如果有变更,Registry将持续推送变更数据给Consumer。
- Consumer从Provide地址列表中用负载均衡算法选一台provide进行调用,如果调用失败,再选另一台。
- Consumer和provide在内存中累计调用次数、时间,每分钟发送一次给Monitor并显示报表。
Dubbo 架构具有以下几个特点:
连通性
- Provider向Registry注册其提供的服务,并汇报调用时间到Monitor
- Consumer向Registry获取Provider地址列表,并根据负载算法直接调用provide,并汇报调用时间给Monitor
- Registry,Provider,服务Consumer三者之间均为长连接,Monitor在完成注册和订阅之后就不再交互
- Registry实时感知Provider,Provider宕机,Registry将立即推送事件通知Consumer
- Registry和Monitor全部宕机,不影响已运行的provide和Consumer,Consumer缓存了provide列表
- Registry和Monitor都是可选的,服务Consumer可以直连Provider。
健壮性
- Monitor宕机仅丢失部分采样数据
- 数据库宕机,Registry能通过缓存提供服务列表查询,但不能注册新服务
- Registry为等位集群,任意一台宕机后,自动切任一成员
- Registry全部宕机后,Provider和服务Consumer可通过缓存通讯
- Provider任意一台宕机后,不影响使用
- Provider全部宕机后,Consumer应用无法使用时,将不间断连接Provider
机动性
- Registry为等位集群,可动态增加部署,所有客户端将自动发现新的Registry
- Provider无响应,可动态增加部署,Registry将推送新的Provider信息给Consumer
升级性
如果服务集群扩大规模,会影响IT治理结构升级,可以实现动态部署,进行流动计算。
下载
zookeeper——Registry(Registry)
zookeeper官网下载地址:https://zookeeper.apache.org/releases.html#download
apache-zookeeper-3.6.0-bin.tar.gz
dubbo官网:
需要需要一个Monitor——incubator-dubbo-ops-master
ops属于ali开发的软件,主要功能包括dubbo的admin和Monitor两项功能,即注册和监控控制台。
百度搜索dubbo然后点击github,发现阿里的ops已经找不到了,只剩下“dubbo-admin-develop”。
以前可以下载到ops现在下载不到了,无奈安装现有的dubbo-admin-develop莫名出错,而且运行时间又长,只能先找之前的ops包来使用。
不过最后还是让我找到了ops的下载网址(哈哈):
https://github.com/zzrrwwyy/incubator-dubbo-ops
安装zookeeper
首先解压zookeeper到单独文件夹
进入以下目录新建一个data文件夹
进入配置文件所在区
复制zoo_sample.cfg并命名为zoo.cfg
再去修改zoo.cfg配置文件
# The number of milliseconds of each tick ## Metrics Providers |
修改之后保存退出。
接着需要启动服务器,根据当前路径搜索cmd,之后键入命令zkServer.cmd并回车启动服务:
zkServer.cmd
启动结果如下:
似乎和之前版本有点不一样。
接着在bin目录下用cmd启动客户端并键入如下命令:
zkCli.cmd
启动效果如图
接着就可以在客户端上键入常用命令看看是否好使
1 在根节点下创建一个节点"yuan" 并赋值为“abcd”
create -e /yuan abcd
2 接着在根节点下查看该节点
ls /
3 获得节点"yuan"中的值
get /yuan
这样zookeeper就安装并启动好了,zookeeper可以作为Registry来使用,之后可以与dubbo的监控台一起使用。
安装dubbo的ops
需要解压incubator-dubbo-ops-master到一个新建的文件夹
进入此文件夹,然后再这里启动cmd
键入打包命令mvn clean package
如果运行没有问题,那么效果是这样:显示“build success”
接着可以看到生成“target”文件夹
打开它就可以看到一个jar包
接着把这个jar包复制到zookeeper里
此时要保证zookeeper里的服务端和客户端都处于启动状态,否则dubbo的控制台没有响应。
当前文件夹下打开cmd,执行如下命令
java -jar dubbo-admin-0.0.1-snapshot.jar
如果一切正常就会有如下显示,可以看到tomcat started on 7001(http) with context path
接下来在浏览器中访问,用户名和密码默认是root
访问网址;localhost:7001
输入之后就可以看到Monitor:
Monitor的作用是将一些发布的接口,注册到这里。只要服务器一启动,通过spring的自动加载dubbo的监控服务也会启动起来,它监控的就是所有放在spring配置文件里的接口。
放在监控台的接口特点为:可以被其它服务器重复利用,所有接口独立部署在一台服务器上;里面所有接口与其它服务器解耦,与其它服务器的依赖程度只有pom文件级别。
上图中的应用名就是其它服务器里对接口的实现。各应用程序需要的bean、接口都可以在放在发布了接口的共享服务器。
好啦,接着一起搭建dubbo+zookeeper的项目吧。
以上是关于Dubbo+ZooKeeper之旅的主要内容,如果未能解决你的问题,请参考以下文章