zookeeper分布式算法和部署
####二阶段提交(Two-Phase Commit)
投票和执行
+ 协调者向参与者发送事务内容,询问是否可以提交,各参与者节点执行事务并向协调者反馈
+ 如果所有参与者反馈yes,那么提交事务;如果有no或者超时,中断事务回滚。参与者执行完操作后再向协调者发送ack消息; 协调者收到ack消息,完
Paxos算法
提高分布式系统容错性的一致性算法
三个角色
Proposer(提案人),Acceptor(接收人),Learner(学习人)
一个提案被选定需要被半数以上的Acceptor接受
chubby的Quorum机制
过半机制
chubby分布式锁处理
- 锁延迟,如果锁因为异常情况被释放,chubby会为锁保留一定时间,类似自旋等待
- 锁序列器,锁的持有者向chubby请求一个锁序列器,包括锁名字,模式,序号,服务端检测验证
Zookeeper
所有机器通过选举确定Leader。Follower和Observer都能提供读服务,Observer机不参与Leader选举过程,也不参与过半写成功策略。
机器节点和数据节点
机器节点是集群中的机器,数据节点是数据模型中的数据单元-Znode,所有数据存储在内存中,数据模型就是一棵树Znode Tree
ZAB(Zookeeper Atomic Broadcast)原子广播协议
崩溃恢复(恢复模式下选举产生新的Leader)和消息广播,其中消息广播协议是基于具有FIFO特性的tcp协议来进行网络通信的,因此容易保证广播过程中消息接受与发送的顺序性
####安装单机伪分布式zk
```bash
cd /usr/local/src/
tar xvf zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11 ../zookeeper00
cd ../zookeeper00/
cd conf/
cp zoo_sample.cfg zoo.cfg
cd ../
mkdir {dataDir,dataLogDir}
cd dataDir/
vim myid # 配置该节点的id为1
cp zookeeper00 zookeeper01 -rf
cp zookeeper00 zookeeper02 -rf
<span id="config">
####节点1配置文件
其他节点修改clientPort端口号和dataDir,dataLogDir对应路径,创建对应的myid为2和3
```bash
[root@sjck-node03 conf]# cat 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.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper00/dataDir
dataLogDir=/usr/local/zookeeper00/dataLogDir
# the port at which the clients will connect
clientPort=2181
# master
server.1=172.16.67.131:2888:3888
server.2=172.16.67.131:2889:3889
server.3=172.16.67.131:2890:3890
####简单集群zk监控脚本
```bash
[root@sjck-node03 zk]# cd /home/soft/zk/
[root@sjck-node03 zk]# cat start.sh
#!/bin/bash
/usr/local/zookeeper00/bin/zkServer.sh start
/usr/local/zookeeper01/bin/zkServer.sh start
/usr/local/zookeeper02/bin/zkServer.sh start
[root@sjck-node03 zk]# cat stop.sh
#!/bin/bash
/usr/local/zookeeper00/bin/zkServer.sh stop
/usr/local/zookeeper01/bin/zkServer.sh stop
/usr/local/zookeeper02/bin/zkServer.sh stop
[root@sjck-node03 zk]# cat checkzk.sh
#!/bin/bash
/usr/local/zookeeper00/bin/zkServer.sh status
/usr/local/zookeeper01/bin/zkServer.sh status
/usr/local/zookeeper02/bin/zkServer.sh status
```
####集群zk状态监控
```bash
[root@sjck-node03 zk]# sh start.sh
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper00/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper01/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@sjck-node03 zk]# sh checkzk.sh
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper00/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper01/bin/../conf/zoo.cfg
Mode: leader
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper02/bin/../conf/zoo.cfg
Mode: follower
```
####常用监控命令
jps(Java Virtual Machine Process Status Tool)
查看java进程pid,-l输出完整package名,-v输出jvm参数
```bash
[root@sjck-node03 zk]# jps
7984 Jps
7746 QuorumPeerMain
7804 QuorumPeerMain
7773 QuorumPeerMain
```
####查看监听的端口
netstat -lntp |grep java
####连接
其他节点对应连接,2182,2183端口
```bash
[root@sjck-node03 bin]# ./zkCli.sh -server localhost:2181
```
####创建znode,其他节点连接查看数据是否同步
```bash
[zk: localhost:2181(CONNECTED) 0] create /data test-data
Created /data
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, data]
[zk: localhost:2181(CONNECTED) 2] get /data
```
####退出
```bash
[zk: localhost:2181(CONNECTED) 0] quit
```
zookeeper分布式算法和部署的更多相关文章
- Zookeeper的安装部署
1.Zookeeper的安装部署 7.1 Zookeeper工作机制 7.1.1.Zookeeper集群角色 Zookeeper集群的角色: Leader 和 follower (Observer ...
- Hadoop生态圈-zookeeper完全分布式部署
Hadoop生态圈-zookeeper完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客部署是建立在Hadoop高可用基础之上的,关于Hadoop高可用部署请参 ...
- Centos6下zookeeper集群部署记录
ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper设计目的 最终一致性:client不论 ...
- zookeeper 单机集成部署
概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等,是很多分布式的基础设置,比如dubbo,k ...
- Zookeeper安装和部署
Zookeeper安装和部署:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用 ...
- 分布式协调服务之Zookeeper集群部署
一.分布式系统概念 在聊Zookeeper之前,我们先来聊聊什么是分布式系统:所谓分布式系统就是一个系统的软件或硬件组件分布在网络中的不同计算机之上,彼此间通过消息传递进行通信和协作的系统:简单讲就是 ...
- HBase集成Zookeeper集群部署
大数据集群为了保证故障转移,一般通过zookeeper来整体协调管理,当节点数大于等于6个时推荐使用,接下来描述一下Hbase集群部署在zookeeper上的过程: 安装Hbase之前首先系统应该做通 ...
- zookeeper安装及部署
安装及部署 一. 单机安装.配置 1.下载zookeeper二进制安装包 下载 curl -L -O http://apache.fayea.com/zookeeper/stable/zookeepe ...
- Zookeeper集群部署
一. 部署前的准备工作 保证各个主机之间能够正常通信,最好是在同一网段. 修改host文件,加入IP和主机名的映射.方法为修改/etc/hosts和etc/hostname文件,不同的Linux发行版 ...
随机推荐
- java请求url返回json
package cn.it.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...
- Python进行数据分析—可视化之seaborn
安装seaborn,可以使用 pip: pip install seaborn 也可以使用 conda: conda install seaborn 一个简单的箱线图: import numpy as ...
- 「七天自制PHP框架」第一天:路由与控制器
我们为什么要使用路由? 原因1:一个更漂亮的URI 1.URI的改进 刚刚开始学PHP时,我们一定写过blog.php?id=1之类的URI,使用GET方式获取参数.这样的URI有两个缺点,一是容易被 ...
- linux ll 命令参数详解
linux ll和Linuxls 的区别 可看 http://www.cnblogs.com/jxhd1/p/6548449.html 用法:ls [选项]... [文件]... 列出 FILE 的信 ...
- 【CODEVS】1034 家园
[算法]网络流-最大流(dinic) [题解] 飞船有可承载人数限制,地球为源点,月球为汇点,人像水流一样从以飞船上限为容量的边流向汇点. 人在各站点都面临着上船与否的选择,难以用DP解决最优策略,于 ...
- 【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
题目链接 不是双倍经验我会去\(debug\)一上午? 一开始我是用的\(map+string\),跑的太慢了,T了4个点. 后来我手写了\(string\),重载了小于号,依然用的\(map\),T ...
- 【洛谷 P3299】 [SDOI2013]保护出题人 (凸包,三分,斜率优化)
题目链接 易得第\(i\)关的最小攻击力为\(\max_{j=1}^i\frac{sum[i]-sum[j-1]}{x+d*(i-j)}\) 十分像一个斜率式,于是看作一个点\(P(x+d*i,sum ...
- CMDB概述(二)
运维自动化路线: cmdb的开发需要包含三部分功能: ·采集硬件数据 ·API ·页面管理 执行流程:服务器的客户端采集硬件数据,然后将硬件信息发送到API,API负责将获取到的数据保存到数据库中, ...
- android内存回收顺序
最近做项目的时候,经常会考虑到系统回收进程,释放资源等问题.特别查找了相关资料,了解下android内存回收顺序以及回收场景. 下面内容都为网络查找资料,若有错误,欢迎指出. 以下顺序,依次被回收的可 ...
- 树莓派开发系列教程3--ssh、vnc远程访问
注意:树莓派系列的3篇文章里面的图片因为博客转移过程丢失了,非常抱歉 前言 远程访问有很多种方式可以实现.比如ssh.telnet.ftp.samba.远程桌面等等,各有优缺点.本文主要以ssh和远程 ...