zookeeper
Posted hikoukay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper相关的知识,希望对你有一定的参考价值。
一,前言
与redis的联系
redis 单实例,数据在内存-读取快
鉴于雪崩击穿等问题 ->复制到集群 HA sentinel 哨兵实现高可用
不是绝对的实时同步,可能连最终一致性都算不上
集群模式 分片
完成分布式 协调分布式锁
二,zookeeper(不要把zk当做数据库用)
主从集群 主是单点的(zk运行状态,1.可用状态,有主模型2.不可用状态,无主模型3.不可用状态恢复到可用状态,应该越快越好 200毫秒)
1.leader可能会挂
2.导致服务不可用
3.事实,zk集群及高可用
4.如果有一种方式可以快速的复制出一个leader
一个leader多个follower,客户端想连谁就连谁(每个客户端连接会有一个session,即临时节点)
zookeeper是一个目录结构-->不同目录即为一个节点,可以存数据,官方声明为1M->统一配置管理1.2.3.4.
持久节点
临时节点-->session
序列节点(序列化,要么是持久节点要么是临时节点)
1.统一配置管理<-1M数据 |
分布式锁,临时节点 |
client代码实现 |
|
2.分组管理<--path结构 |
|
锁依托一个父节点,具备 -s |
队列式事务锁 |
3.统一命名<--sequential |
|
代表父节点下可以有多把锁 |
|
4.同步<--临时节点 |
HA 选主 |
|
|
担保
- ZooKeeper非常快速且非常简单。但是,由于其目标是作为构建更复杂的服务(例如同步)的基础,因此它提供了一组保证。这些是:
- 顺序一致性-来自客户端的更新将按照其发送顺序进行应用。
- 原子性-更新成功或失败。没有部分结果。
- 统一视图-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。
- 可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。
- 及时性-确保系统的客户视图在特定时间范围内是最新的。
三 安装启动
- 1.先安装jdk (下载,解压,配置环境变量)
export JAVA_HOME=/app/jdk1.8.0_231/
export CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
Java-version验证是否安装成功
- 2.再zookeeper(下载,解压,配置环境变量)
export JAVA_HOME=/app/jdk1.8.0_231/
export CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar
export ZOOKEEPER_HOME=/app/zookeeper/apache-zookeeper-3.5.5-bin/
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
输入zk按tab键验证是否成功
配置zk相关配置:
conf/zoo.cfg
#配置数据文件夹和日志文件夹
dataDir=/var/houkai/zk
dataLogDir=/var/houkai/zk/log
#配置集群 2888: leader接收writer请求用 3888:选主投票用
server.1=192.168.65.10:2888:3888
server.2=192.168.65.20:2888:3888
server.3=192.168.65.30:2888:3888
server.4=192.168.65.40:2888:3888
server.5=192.168.65.50:2888:3888
mkdir -p /var/houkai/zk
进入/var/houkai/zk文件夹
vi myid 文件中写自己的id号,即上面的.1.2.3.4.5
- 3.启动
- zkServer.sh help 查看帮助
- zkServer.sh start-foreground
- java.net.NoRouteToHostException: No route to host (Host unreachable)
service iptables status 查看防火墙状态
service iptables off
service iptables stop 即时生效,重启后复原
chkconfig iptables off 永久关闭防火墙
- zkServer.sh status 查看主机状态是主还是从
- zkCli.sh 启动客户端
- o ll显示节点
- o create /newnode "" 创建新的(持久)节点,东西的话不报错但是不创建,所以带个字符串
- o create -s /newnode 创建(顺序)节点,可以规避节点被覆盖
- o create -e /newnode 创建(临时)节点
- o create [-s] [-e] path data acl 其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl用来进行权限控制。
- create -s -e /newnode
- create/newnode/sonnode "koukay" 也可以创建多级节点,数据最大1M,二进制安全的
- get /newnode/sonnode 获取节点 因为节点相当于文件夹,所以名字前必须带/
- get -s /koukay 获取节点,显示数据参数
- set /newnode "hello"为节点设置值
- rmr /test 删除节点及数据
netstat -napt |egrep ‘(2888|3888)‘
以上是关于zookeeper的主要内容,如果未能解决你的问题,请参考以下文章