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] view plain copy

 

print?

  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] view plain copy

 

print?

  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来,它内部存在投票选举机制。这里不多说了。就像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文件

[html] view plain copy

 

print?

  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] view plain copy

 

print?

  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来,它内部存在投票选举机制。这里不多说了。就像MongoDB集群,会根据心跳机制选出主服务器。

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

[dubbo实战] dubbo+zookeeper伪集群搭建的更多相关文章

  1. 分享知识-快乐自己:zookeeper 伪集群搭建

    1):单一 zookeeper  搭建步骤 2):zookeeper 伪集群搭建 1):新建一个集群目录 [root@zoodubbo opt]# mkdir zookeeper_cluster 2) ...

  2. zookeeper伪集群搭建

    zookeeper伪集群搭建 1. 下载zookeeper: https://zookeeper.apache.org/ 2. 解压: tar -zxvf zookeeper-3.4.14.tar.g ...

  3. [dubbo实战] dubbo+zookeeper伪集群搭建 (转)

    zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待.所以可以通过zookeeper集群解决. 一.为什么需要zookeeper呢? 大部分分布式应用需要一 个主控. ...

  4. 四、Zookeeper伪集群搭建

    伪集群模式 Zookeeper不但可以在单机上运行单机模式 Zookeeper,而且可以在单机模拟集群模式 Zookeeper的运 行,也就是将不同实例运行在同一台机器,用端口进行区分,伪集群模式为我 ...

  5. windows下zookeeper伪集群搭建

    下载 http://www.apache.org/dyn/closer.cgi/zookeeper/ 解压 D:\Java\soft\zookeeper-3.4.6 伪集群 1.在 \zookeepe ...

  6. win10环境下搭建zookeeper伪集群

    一.下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 这里笔者下载的是zookeeper-3.3.6 二.配置zoo ...

  7. ZooKeeper伪集群环境搭建

    1.从官网下载程序包. 2.解压. [dev@localhost software]$ tar xzvf zookeeper-3.4.6.tar.gz 3.进入zookeeper文件夹后创建data文 ...

  8. CentOS6.3搭建ZooKeeper伪集群

    1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper 相关命令 # 解压 .tar.gz # 重命名 zookeeper 2. 进入zookeeper/conf/目录下, ...

  9. zookeeper伪集群(一)

    Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成伪集群模式.集群模式. 本人将对伪集群.集群进行重点介绍: 铺垫: 1.集群必须是奇数(2N+1),伪集群和集群一致. 2 ...

随机推荐

  1. php解决表单重复提交

    php解决表单重复提交时间:2015-2-28 | 评论:1条评论 | 被查看了 189 次 | 标签:php, W3cui重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交 ...

  2. Administrator账户密码忘了怎么办

    WIN7的Administrator账户密码忘了怎么办   1.准备一个带有winpe系统的系统光盘或者U盘 2.启动电脑,按F12选择U盘或者光盘启动,进入winpe操作系统 3.找到c:\wind ...

  3. django-xadmin列表页filter关联对象搜索问题

    环境:xadmin-for-python3 python3.5.2 django1.9.12 问题描述:Product ProductSku两个实体,ProductSku FK外键关联Product ...

  4. Example008关闭IE窗口时,不弹出询问对话框

    <!-- 实例008关闭IE主窗口时,不弹出询问对话框 --> <meta charset="UTF-8"> <a href="#" ...

  5. 由form表单来说说前后台数据之间的交互

    为什么从表单提交说起呢?因为大部分与后台的交互都是在form表单中实现,恰巧我入职一个月来都是在处理与后台交互的数据整合中度过,期间也发现一些小坑,出于喜欢总结,所以才想写这篇小博客. 各位童鞋,可以 ...

  6. AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能

    AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能 核心代码如下 1.index.html <!DOCTYPE html> < ...

  7. android源码、博文2

      每周精选 第 54 期   精品源码 仿网易新闻app下拉标签选择菜单     仿网易新闻app下拉标签选择菜单,长按拖动排序,点击增删标签控件##示例 https://github.com/we ...

  8. EBS系统启动&停止&增加表空间&替换首页图片

    EBS系统启动&停止&增加表空间&替换首页图片 数据库启动 使用oraprod账号登陆 [root@htdb data]# su oraprod [oraprod@htdb d ...

  9. Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

    Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project ...

  10. 如何将notMNIST转成MNIST格式

    相信了解机器学习的对MNIST不会陌生,Google的工程师Yaroslav Bulatov 创建了notMNIST,它和MNIST类似,图像28x28,也有10个Label(A-J). 在Tenso ...