dubbo---zookeeper安装与配置

(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。
并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。
(2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。
(3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。
        其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。
        为解决这些问题,Dubbo为我们做了什么呢:
                             
负载均衡:
                          
            
        这就是所谓的软负载均衡!

        现在让我们一起来接触下这个优秀的框架:
        简介
     架构如图:
                     
                                

节点角色说明:
        Provider:  暴露服务的服务提供方。
        Consumer:  调用远程服务的服务消费方。
        Registry:  服务注册与发现的注册中心。
        Monitor:  统计服务的调用次调和调用时间的监控中心。
        Container:  服务运行容器。

调用关系说明:
        0.  服务容器负责启动,加载,运行服务提供者。
        1.  服务提供者在启动时,向注册中心注册自己提供的服务。
        2.  服务消费者在启动时,向注册中心订阅自己所需的服务。
        3.  注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
        4.  服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
        5.  服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。


        Dubbo 提供了很多协议, Dubbo 议、RMI 协议 、Hessian 协议, 我们查看Dubbo 源代码,有各种协议的实现,
        我们之前没用Dubbo 之前时,大部分都使用 Hessian来使用我们服务的暴露和调用,利用HessianProxyFactory 调用远程接口。

         上面是参考了 Dubbo 官方网介绍,接下来我们来介绍 SpringMVC Dubbo Zookeeper 整合使用。

第一步:安装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根目录下建立一个data文件夹,存放数据和日志
如要配置集群:在data文件夹中建立 myid文件,不带后缀
值是该zookeeper的服务id
(4)然后在对应的 zookeeper-3.4.6/conf  下有一个文件 zoo_sample.cfg 的这个文件里面配置了监听客户端连接的端口等一些信息,Zookeeper 在启动时会找zoo.cfg这个文件作为默认配置文件,所以我们复制一个名称为 zoo.cfg 的文件,linux命令 mv 移动 改名 cp -r 强制复制
如图所示:
zoo.cfg配置解说
# The number of milliseconds of each tick
#tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳;
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
#initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,
#而是Zookeeper服务器集群中连接到Leader的Follower服务器)
#初始化连接时最长能忍受多少个心跳时间间隔数。
#当已经超过10个心跳的时间(也就是tickTime)长度后Zookeeper 服务器还没有收到客户端的返回信息,
#那么表明这个客户端连接失败。总的时间长度就是10*2000=20 秒;
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
#syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,
#最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒;
syncLimit=5
# the directory where the snapshot is stored.
#dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里;
dataDir=E:\\dubbo-zookeeper\\zookeeper-1\\data
# the port at which the clients will connect
#clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
clientPort=2181
#顾名思义就是 Zookeeper 保存日志文件的目 dataLogDir=C:\\zookeeper-3.4.5\\log 
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

#server.A=B:C:D:
#A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址
#C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
#D是在leader挂掉时专门用来进行选举leader所用
#除了修改zoo.cfg配置文件,集群模式下还要配置一个文件myid,这个文件在dataDir目录下,这个文件里面就有一个数据就是A的值,
#在上面配置文件中zoo.cfg中配置的dataDir路径中创建myid文件

  第二步:配置dubbo-admin的管理页面,方便我们管理页面
dubbo管理控制台开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。
1、下载dubbo
地址: http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war
        (1)下载dubbo-admin-2.4.1.war包,在windows的tomcat部署,先把dubbo-admin-2.4.1放在tomcat的webapps/ROOT下,然后进行解压
        (2)然后到webapps/ROOT/WEB-INF下,有一个dubbo.properties文件,里面指向Zookeeper ,使用的是Zookeeper 的注册中心,如图所示:
        
[html]   view plain   copy
  1. <span style="font-size:18px;">dubbo.registry.address=zookeeper://127.0.0.1:2181  
  2. dubbo.admin.root.password=root  
  3. dubbo.admin.guest.password=guest</span>  

        (3)然后启动tomcat服务,用户名和密码:root,并访问服务,显示登陆页面,说明dubbo-admin部署成功,如图所示:
      
Zookeeper单机配置:
<dubbo:registry address="zookeeper://192.168.0.149:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
Zookeeper集群配置:
<dubbo:registry address="zookeeper://192.168.0.149:2181?backup=192.168.0.148:2181,192.168.0.147:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
同一Zookeeper,分成多组注册中心:
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="127.0.0.1:2181" group="1" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="127.0.0.1:2181" group="2" />
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值