博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[dubbo实战] dubbo+zookeeper伪集群搭建
阅读量:5305 次
发布时间:2019-06-14

本文共 3723 字,大约阅读时间需要 12 分钟。

 zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待。所以可以通过zookeeper集群解决。

一、为什么需要zookeeper呢?

   大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。目前,大多数都要开发私有的协调程序,缺乏一个通用机制,协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器,zookeeper提供通用的分布式锁服务,用以协调分布式应用。所以说zookeeper是分布式应用的协作服务。

二、zookeeper的工作原理

   核心原理是原子广播,这个机制保证了各个server之间的同步,实现这个机制的协议叫做Zab协议,它有两种模式:恢复和广播模式。

   当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,恢复模式就结束了。

    一旦zookeeper内部同步好了后,就可以开始广播信息了,这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,并且同步状态,同步结束后它也参与广播消息。

三、集群搭建准备

1.我用了三个zookeeper服务,分别是zookeeper-1,zookeeper-2,zookeeper-3

2.在每个zookeeper下添加data和log文件

3.配置zoo.cfg文件

 

[html]   
 
 
  1. # The number of milliseconds of each tick  
  2. tickTime=2000  
  3. # The number of ticks that the initial   
  4. # synchronization phase can take  
  5. initLimit=10  
  6. # The number of ticks that can pass between   
  7. # sending a request and getting an acknowledgement  
  8. syncLimit=5  
  9. # the directory where the snapshot is stored.  
  10. dataDir=E:/zookeeper/zookeeper-1/data  
  11. # the directory where the log  
  12. dataLogDir=E:/zookeeper/zookeeper-1/log   
  13. # the port at which the clients will connect  
  14. clientPort=2181  
  15. #Clusters  
  16. server.1=192.168.24.140(127.0.0.1):2888:3888  
  17. server.2=192.168.24.140:2889:3889  
  18. server.3=192.168.24.140:2890:3890   

 每个zookeeper的端口配置都应该不同,分别是2181,2182,2183

 

4.在data文件添加myid文件(touch myid),并且里面的内容分别为:1,2,3

5.在dubbo项目中,provider和consumer的xml文件中修改zookeeper的地址,如下:

 

[html]   
 
 
  1. <!-- 本机 伪集群 测试 -->       
  2.     <dubbo:registry  protocol="zookeeper"  address="192.168.24.140:2181,192.168.24.140:2182,192.168.24.140:2183"  />  


四、测试

 

    先分别启动zookeeper,然后依次启动服务和客户端。启动服务的时候会看到连接到哪个zookeeper上了。为了集群的特性,比如客户端启动后zookeeper-1提供服务,我关掉它,那么程序就继续发起连接,接着可能zookeeper-2提供服务。

   因为现在有三台服务器,所以要求至少有2台正常启动才能运行正常。那么zookeeper-2也关闭,那程序不会连接zookeeper-3,一直报错,提示no further connection。

   上面说了停掉某个服务,zookeeper内部会选举出下一个leader来,它内部存在投票选举机制。这里不多说了。就像集群,会根据心跳机制选出主服务器。

   接下来的测试,我继续打开zookeeper-1或zookeeper-2,能正常提供服务。把zookeeper-3关闭,如果zookeeper-1和zookeeper-2重新启动成功后,也是能提供服务的。内部在恢复模式下同步状态。

 

 zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待。所以可以通过zookeeper集群解决。

一、为什么需要zookeeper呢?

   大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。目前,大多数都要开发私有的协调程序,缺乏一个通用机制,协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器,zookeeper提供通用的分布式锁服务,用以协调分布式应用。所以说zookeeper是分布式应用的协作服务。

二、zookeeper的工作原理

   核心原理是原子广播,这个机制保证了各个server之间的同步,实现这个机制的协议叫做Zab协议,它有两种模式:恢复和广播模式。

   当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,恢复模式就结束了。

    一旦zookeeper内部同步好了后,就可以开始广播信息了,这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,并且同步状态,同步结束后它也参与广播消息。

三、集群搭建准备

1.我用了三个zookeeper服务,分别是zookeeper-1,zookeeper-2,zookeeper-3

2.在每个zookeeper下添加data和log文件

3.配置zoo.cfg文件

 

[html]   
 
 
  1. # The number of milliseconds of each tick  
  2. tickTime=2000  
  3. # The number of ticks that the initial   
  4. # synchronization phase can take  
  5. initLimit=10  
  6. # The number of ticks that can pass between   
  7. # sending a request and getting an acknowledgement  
  8. syncLimit=5  
  9. # the directory where the snapshot is stored.  
  10. dataDir=E:/zookeeper/zookeeper-1/data  
  11. # the directory where the log  
  12. dataLogDir=E:/zookeeper/zookeeper-1/log   
  13. # the port at which the clients will connect  
  14. clientPort=2181  
  15. #Clusters  
  16. server.1=192.168.24.140:2888:3888  
  17. server.2=192.168.24.140:2889:3889  
  18. server.3=192.168.24.140:2890:3890   

 每个zookeeper的端口配置都应该不同,分别是2181,2182,2183

 

4.在data文件添加myid文件,并且里面的内容分别为:1,2,3

5.在dubbo项目中,provider和consumer的xml文件中修改zookeeper的地址,如下:

 

[html]   
 
 
  1. <!-- 本机 伪集群 测试 -->       
  2.     <dubbo:registry  protocol="zookeeper"  address="192.168.24.140:2181,192.168.24.140:2182,192.168.24.140:2183"  />  


四、测试

 

    先分别启动zookeeper,然后依次启动服务和客户端。启动服务的时候会看到连接到哪个zookeeper上了。为了集群的特性,比如客户端启动后zookeeper-1提供服务,我关掉它,那么程序就继续发起连接,接着可能zookeeper-2提供服务。

   因为现在有三台服务器,所以要求至少有2台正常启动才能运行正常。那么zookeeper-2也关闭,那程序不会连接zookeeper-3,一直报错,提示no further connection。

   上面说了停掉某个服务,zookeeper内部会选举出下一个leader来,它内部存在投票选举机制。这里不多说了。就像集群,会根据心跳机制选出主服务器。

   接下来的测试,我继续打开zookeeper-1或zookeeper-2,能正常提供服务。把zookeeper-3关闭,如果zookeeper-1和zookeeper-2重新启动成功后,也是能提供服务的。内部在恢复模式下同步状态。

 

转载于:https://www.cnblogs.com/linjiaxin/p/7261251.html

你可能感兴趣的文章
Oracle的CLOB大数据字段类型
查看>>
tomcat教程
查看>>
IOS企业版app发布问题
查看>>
翻译之:SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
查看>>
pdf 右键选择默认方式失效 注册表
查看>>
03-稀疏矩阵
查看>>
45种Javascript技巧大全
查看>>
JS:offsetWidth\offsetleft 等图文解释
查看>>
Java中的TCP/UDP网络通信编程
查看>>
JAVA-初步认识-第四章-函数-两个明确-练习2
查看>>
MySQL主从复制与主主复制
查看>>
学习&使用技术的四种层次
查看>>
Python Cookbook 数据结构和算法
查看>>
Python简明教程
查看>>
ssm三大框架整合基本配置
查看>>
实验一
查看>>
php获取post参数的几种方式
查看>>
Apache与Tomcat的关系和区别 (转)
查看>>
linux内核分析 第18章读书笔记
查看>>
六度分离 HDU1869
查看>>