zoukankan      html  css  js  c++  java
  • 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的项目吧。

  • 相关阅读:
    JS_判断浏览器.
    JQ_使用AJAX获取SINA股票代码
    Struts2中的OGNL详解
    CSS原理与CSS经验分享
    Struts 与 Velocity 的集成
    30条HTML代码编写指南 for入门者
    OGNL使用小结
    Visual C++ 6.0 插件系列介绍
    C语言编译过程总结详解
    Web.xml配置详解
  • 原文地址:https://www.cnblogs.com/timingstarts/p/12584190.html
Copyright © 2011-2022 走看看