志宇-zookeeper是啥呀


zookeeper入口在哪

在这里插入图片描述
首先通过 ./zkServer.sh start 开启zookeeper
通过 jps -l 查看开启了那些java线程运行的类,图中表明运行了QuorumPeerMain

源码启动zookeeper

在github上下载zookeeper源码
1.将代码导入idea,配置信息如下信息
在这里插入图片描述
2.通过maven下载jar包
在这里插入图片描述
在这里插入图片描述

-Dlog4j.configuration=file:F:\message\study\framework\zookeeper\zookeeper源码\zookeeper-master/conf/log4j.properties

3.如果这里的jar包报红线,则根据路径删除jar包重新下载
在这里插入图片描述
4.还是不好使则将不好使的项目先clean 然后在compile
尽量不要用 clean 和 complile 如果class没有编译好可以试试
在这里插入图片描述
5.然后在 zookeeper-server 项目中添加如下接口

package org.apache.zookeeper.version;

public interface Info {
    int MAJOR = 3;
    int MINOR = 5;
    int MICRO = 6;
    String QUALIFIER = null;
    String REVISION_HASH = "c11b7e26bc554b8523dc929761dd28808913f091";
    String BUILD_DATE = "10/08/2019 20:18 GMT";
}

6.针对单机版本和集群版本,启动分别对应两个类:
单机:ZooKeeperServerMain
集群:QuorumPeerMain
启动QuorumPeerMain即可
在这里插入图片描述

zk启动流程
1.初始化配置
2.初始化datatree
3.监听客户端端口
4.领导选举
5.初始化服务器其他信息

为什么在本服务器上节点过半才可用

如果节点为5个,节点必须要大于等于3个才好使
zookeeper为什么节点过半才可以使用?为什么要这样设置
主要是为了在部署zookeeper集群的时候节点部署到多个服务器上,服务器之间如果由于网络原因中断,那么在中断的时间内zookeeper会在这段时间内选举出一个节点作为leader,当本服务器上部署的节点数过半时候才可以选举出来leader节点,如果不过半就可以选举出leader节点的话,那么两台服务器则会选举出来两个leader节点,这样当网络恢复正常则会出现问题(脑裂)。
要求zk运行时只有一个leader或者没有leader才可以持续运行。
在这里插入图片描述

Paxos算法

Paxos算法是为了保证一致性,在一致性算法中Paxos最好
Paxos算法的前提条件就是 不存在拜占庭将军问题(传递的信息不能被篡改)
达到一致性的方法有两种 共享内存消息传递
共享内存: 可以理解为有一个中心存储着所有投票信息,最终做出决定(中心挂了则不能服务)
消息传递: 没有中心,每个节点和别的所有的节点单独通信
Paxos 算法采用消息传递方案来解决一致性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值