本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws

一.写在前面

ZK是一个高效的分布式协调服务,高可用的分布式管理协调框架。 朋友推荐一本书《从paxos到zookeeper》,对我帮助的确很大。

二.集群配置和踩坑

java安装和环境变量配置可以参考 http://www.cnblogs.com/tdws/p/4096300.html

1 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz   下载
2
3 tar -zxvf zookeeper-3.4.10.tar.gz   解压
4
5 mv zookeeper-3.4.10 /usr/local  剪切
6
7 mv zookeeper-3.4.10/ zookeeper 重命名

下面修改配置文件命名

1 cd /usr/local/zookeeper/conf
2 mv zoo_sample.cfg zoo.cfg

配置一共没几行 。指定配置中的  dataDir
dataDir=/usr/local/zookeeper/data

自行mkdir创建data文件夹。

在配置文件末尾 配置集群 我是单台机器伪集群 三个节点

1 server.1=your_ip:20881:30881
2 server.2=your_ip:20882:30882
3 server.3=your_ip:20883:30883

在data文件夹中创建文件myid 来做一个标识
nano myid 在文件中填写0 并且保存。需要注意的是刚才我们的zookeeper文件夹是不使用的,仅作为我们copy新节点的原本。
接下来复制三份zk
1 cp -r zookeeper/ zookeeper1
2 cp -r zookeeper/ zookeeper2
3 cp -r zookeeper/ zookeeper3

分别修改三台节点 其datadir 将路径指定到自己节点之下
分别修改其端口号和myid,是各个zoo.conf 配置的其中port 设置分别为2181 2182 2183
各个myid内容分别为1 2 3
下面 去三个zk bin目录下 执行zkServer.sh start
 
第一次 出错
Error contacting service. It is probably not running.
哎 检查好几个小时ZK配置文件 试了十几种方法, 结果之前JAVA_HOME不小心配置错了,我是yum安装的jdk。
 
第二次 出错与解决
后来又出一次错误 是我stop zk所有节点之后 再次启动起不来 首先 jps命令 然后看到进程id和QuorumPeerMain
把Quorumpeermain的进程kill -9杀死
 
第三次 我丢雷楼某! 这个真是困扰了
如果使用阿里云ECS 专有网络+弹性公网IP
一般不能直接在ECS实例的程序例绑定和使用弹性公网IP地址。因为这个公网IP地址在ECS之外。所以我开了所有的端口,根本没有用,最后使用0.0.0.0解决问题。
1 server.1=0.0.0.0:20881:30881
2 server.2=0.0.0.0:20882:30882
3 server.3=0.0.0.0:20883:30883

三.应用和小结

学习ZK一段时间,原生API比较难以使用,一般使用zkClient(dubbo依赖于此)和curator框架来操作ZK比较容易。 其典型应用场景包括以下几点:

1.数据发布与订阅

ZK在dubbo中作为注册中心的角色,服务方和调用方都在这里注册。举例来说明,我发布了一个dubbo service,消费者webapp引用这个服务

 <dubbo:service interface="com.s2s.service.ItemService" ref="itemServiceImpl"/>   发布的服务

 <dubbo:reference interface="com.s2s.service.ItemService" id="itemService"/>     引用服务(将使用RPC调用)

  接下来去服务器上查看数据节点,

可以看到根目录上有dubbo节点,dubbo下有com.s2s.service.ItemService, 其节点下又有consumers和providers等。

服务提供者启动时向/dubbo/com.s2s.service.ItemService/providers目录下写入URL

服务消费者启动时订阅/dubbo/com.s2s.service.ItemService/providers目录下的URL。 并且向/dubbo/com.s2s.service.ItemService/consumers目录下写入自己的URL

监控中心启动时订阅/dubbo/com.s2s.service.ItemService/目录下的所有提供者和消费者URL。

所以dubbo监控中心,查看到消费者和服务提供者

2.负载均衡

3.命名服务

4.分布式通知和协调

5.集群管理与Master选举

 比如SolrCloud管理。管理集群配置,监控集群状态,选举分片leader

6.分布式锁

有很多人用它做分布式锁 但是做法比较底层。临时节点是在一次会话内有效,保证了出现异常时,锁能得以释放。比如client1 做分布式操作 那他创建一个临时节点 然后去做一些其他数据操作 做完操作后, 再去把临时节点移除。这时c2才能去操作。如果有10个客户端 要操作同一个数据,但是这个数据,有多个复制的版本 在不同的DB当中(当然值是一致)。
这个时候 分布式锁的作用就是同步操作。客户端1 操作 这条数据, 那就去zk立即 就create个节点 代表占用了这条数据,这时候客户端2 并发操作这条数据 先去zk上get一下这个节点,get到的话 可以等待一下,等客户端1 释放掉后,去再次create一下占领数据。

7.分布式队列

本文主要是安装配置,分布式理论的学习还是比较好,接下来将会继续分享实践中的收获。

转载于:https://www.cnblogs.com/tdws/p/8282540.html

Centos7 Zookeeper相关推荐

  1. centos7 Zookeeper集群部署

    Node1 server.1=192.168.88.151:2888:3888 Node2 server.1=192.168.88.152:2888:3888 Node3 server.1=192.1 ...

  2. centos7 kafka2.3.1单机伪集群部署

    接上篇文章centos7 zookeeper单点部署,准备好相应的包 cp config/server.properties config/server0.properties vi config/s ...

  3. centos7 zookeeper3.5.6单机伪集群部署

    接上篇文章centos7 zookeeper单点部署准备好zookeeper包,进行集群部署 单机伪集群部署 zookeeper1 zookeeper2 zookeeper3 三个目录分别部署一个服务 ...

  4. centos7 kafka2.3.1单点部署

    依赖环境 kafka依赖zookeeper,故先要进行zookeeper部署,详见centos7 zookeeper部署. kafka下载 http://kafka.apache.org/downlo ...

  5. linux 查看zookeepr所在路径,Linux系统:Centos7下搭建ZooKeeper3.4中间件,常用命令总结...

    本文源码:[GitHub·点这里](https://github.com/cicadasmile/linux-system-base) || [GitEE·点这里](https://gitee.com ...

  6. Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结

    一.下载解压 环境版本 centos7 zookeeper 3.4.14 [root@localhost mysoft]$ cd /usr/local/mysoft/ [root@localhost ...

  7. centos7 安装配置mesos+marathon+zookeeper

    2019独角兽企业重金招聘Python工程师标准>>> 1,mesos介绍 Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache Incubator中的项目.M ...

  8. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  9. ZooKeeper学习:CentOS7下ZooKeeper集群搭建

    文章目录 准备 1.虚拟机 2.安装包 安装 1.创建安装目录 2.文件配置 3.验证 启动zookeeper 查看zookeeper启动状态 停止zookeeper 查看zookeeper启动过程 ...

最新文章

  1. java中script类_在Scripting java(javax.script)中导入一个类
  2. java泛型通配符和类型参数的范围
  3. DeepMatch :用于推荐广告的深度召回匹配算法库
  4. 支付宝支付-常用支付API详解(查询、退款、提现等)-转
  5. 李洪强漫谈iOS开发[C语言-025]-赋值运算符案例
  6. 转存储过程实现分页1
  7. 将Java服务公开为Web服务
  8. GIF动画解析RNN,LSTM,GRU
  9. LuoguP1113 杂务
  10. linux主备网卡切换脚本,Keepalived主备切换时执行脚本
  11. [PyTorch] 卷积函数 and 解卷积函数
  12. bcb image 动态大小_论车载音箱系统Limiter(限幅器)Threshold与Image(声像)稳定度的关系...
  13. 矩阵运算_SLAM中用到的矩阵计算_基本公式及知识汇总
  14. SharePoint 2013 开发——开发并部署Provider-hosted APP
  15. 一个在线工具箱:栅栏密码加密解密工具
  16. 基于AChartEngine绘制股票走势图----分时图二(五日,涨跌涨跌幅)
  17. 贴片晶振邻层挖空背后的原理
  18. 300秒就完成第一超算1万年的计算量,量子霸权真时代要来了吗
  19. Matplotlib——饼图pie()函数
  20. 向量组a可由向量组b线性表示什么意思

热门文章

  1. java 文件删除异常 ut_【JAVA-UT】12、抛出了指定的异常吗?
  2. php redis key,redis 在 php 中的应用(key篇)
  3. netty依赖_高性能:《一遍文章带你看懂 Netty世界》
  4. Linux mkdir 命令创建多级目录
  5. 【spring boot】【spring cloud】异常:找不到方法HikariDataSource.getMetricsTrackerFactory()
  6. AWS 基础服务学习
  7. mongodb单机部署
  8. html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
  9. java 采样_java 采集数据
  10. 日照油库系统推荐_数据中心很重要,消防防范更重要——七氟丙烷气体灭火系统...