Dubbo+ZooKeeper之旅

dubbo 结构体系

  1. 服务容器启动,加载,运行Provider。
  2. Provider向Registry注册自己提供的服务,只在启动时与Registry交互。
  3. Consumer向Registry订阅自己所需的服务,只在启动时与Registry交互。
  4. Registry返回Provider地址列表给Consumer,如果有变更,Registry将持续推送变更数据给Consumer。
  5. Consumer从Provide地址列表中用负载均衡算法选一台provide进行调用,如果调用失败,再选另一台。
  6. 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
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=../data                   #修改成上级目录中的data文件夹
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

修改之后保存退出。

接着需要启动服务器,根据当前路径搜索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的项目吧。

原文地址:https://www.cnblogs.com/timingstarts/p/12584190.html