[dubbo实战] dubbo+zookeeper伪集群搭建
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文件
- # 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.
- dataDir=E:/zookeeper/zookeeper-1/data
- # the directory where the log
- dataLogDir=E:/zookeeper/zookeeper-1/log
- # the port at which the clients will connect
- clientPort=2181
- #Clusters
- server.1=192.168.24.140(127.0.0.1):2888:3888
- server.2=192.168.24.140:2889:3889
- 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的地址,如下:
- <!-- 本机 伪集群 测试 -->
- <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来,它内部存在投票选举机制。这里不多说了。就像MongoDB集群,会根据心跳机制选出主服务器。
接下来的测试,我继续打开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文件
- # 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.
- dataDir=E:/zookeeper/zookeeper-1/data
- # the directory where the log
- dataLogDir=E:/zookeeper/zookeeper-1/log
- # the port at which the clients will connect
- clientPort=2181
- #Clusters
- server.1=192.168.24.140:2888:3888
- server.2=192.168.24.140:2889:3889
- server.3=192.168.24.140:2890:3890
每个zookeeper的端口配置都应该不同,分别是2181,2182,2183
4.在data文件添加myid文件,并且里面的内容分别为:1,2,3
5.在dubbo项目中,provider和consumer的xml文件中修改zookeeper的地址,如下:
- <!-- 本机 伪集群 测试 -->
- <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来,它内部存在投票选举机制。这里不多说了。就像MongoDB集群,会根据心跳机制选出主服务器。
接下来的测试,我继续打开zookeeper-1或zookeeper-2,能正常提供服务。把zookeeper-3关闭,如果zookeeper-1和zookeeper-2重新启动成功后,也是能提供服务的。内部在恢复模式下同步状态。
[dubbo实战] dubbo+zookeeper伪集群搭建的更多相关文章
- 分享知识-快乐自己:zookeeper 伪集群搭建
1):单一 zookeeper 搭建步骤 2):zookeeper 伪集群搭建 1):新建一个集群目录 [root@zoodubbo opt]# mkdir zookeeper_cluster 2) ...
- zookeeper伪集群搭建
zookeeper伪集群搭建 1. 下载zookeeper: https://zookeeper.apache.org/ 2. 解压: tar -zxvf zookeeper-3.4.14.tar.g ...
- [dubbo实战] dubbo+zookeeper伪集群搭建 (转)
zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待.所以可以通过zookeeper集群解决. 一.为什么需要zookeeper呢? 大部分分布式应用需要一 个主控. ...
- 四、Zookeeper伪集群搭建
伪集群模式 Zookeeper不但可以在单机上运行单机模式 Zookeeper,而且可以在单机模拟集群模式 Zookeeper的运 行,也就是将不同实例运行在同一台机器,用端口进行区分,伪集群模式为我 ...
- windows下zookeeper伪集群搭建
下载 http://www.apache.org/dyn/closer.cgi/zookeeper/ 解压 D:\Java\soft\zookeeper-3.4.6 伪集群 1.在 \zookeepe ...
- win10环境下搭建zookeeper伪集群
一.下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 这里笔者下载的是zookeeper-3.3.6 二.配置zoo ...
- ZooKeeper伪集群环境搭建
1.从官网下载程序包. 2.解压. [dev@localhost software]$ tar xzvf zookeeper-3.4.6.tar.gz 3.进入zookeeper文件夹后创建data文 ...
- CentOS6.3搭建ZooKeeper伪集群
1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper 相关命令 # 解压 .tar.gz # 重命名 zookeeper 2. 进入zookeeper/conf/目录下, ...
- zookeeper伪集群(一)
Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成伪集群模式.集群模式. 本人将对伪集群.集群进行重点介绍: 铺垫: 1.集群必须是奇数(2N+1),伪集群和集群一致. 2 ...
随机推荐
- js函数中的BOM和DOM
BOM 浏览器对象模型 screen对象 console.log(screen.width);// 屏幕宽度 console.log(screen.height);// 屏幕高度 console.l ...
- VS2017专业版和企业版激活密钥
VS2017专业版和企业版激活密钥 Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q ...
- webpack前端工程化构建工具的使用
一.模块打包机 1.创建文件 在目标文件下建立一个src文件夹作为js代码区:作为例子,我创建了两个js文件,并利用commonJS规范require引入到index.js中: moduleA.js: ...
- 把angular项目整合到.net mvc中
之前的开发选择的是完全舍弃服务端,仅保留最简单web服务器提供angular经打包的静态资源,此外所有的业务与数据请求都访问一个分离的WebApi来实现.不过最近碰到一个需求,有必要使用多个客户端,而 ...
- 一起学习c++11——c++11中的新增的容器
c++11新增的容器1:array array最早是在boost中出现:http://www.boost.org/doc/libs/1_61_0/doc/html/array.html 当时的初衷是希 ...
- 【Android Developers Training】 76. 用Wi-Fi创建P2P连接
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 68. 序言:添加动画
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- VUE2.0+VUE-Router做一个图片上传预览的组件
之前发了一篇关于自己看待前端组件化的文章,但是由于学习和实践的业务逻辑差异,所以自己练习的一些demo逻辑比较简单,打算用vue重构现在公司做的项目,所以在一些小的功能页面上使用vue来做的,现在写的 ...
- Java post提交表单限制
According to Tomcat7's documentation, setting maxPostSize in Connector to a value less than or equal ...
- 多表链接 Left join
select * from( select U_User.LinkMan, SP_Approval.* ,SP_Approval_Msg.ApprovalUserID,ROW_NUMBER() ...