技术标签: zookeeper
ZooKeeper 一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心:服务生产者将自己提供的服务注册到 ZooKeeper 中心,服务的消费者在进行服务调用的时候先到 ZooKeeper 中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。Zk的数据保存在内存中,限制了znode节点的数据存储量。
通常 3 台服务器就可以构成一个 ZooKeeper 集群了,为什么最好使用奇数台服务器构成 ZooKeeper 集群?我们知道在 ZooKeeper 中 Leader 选举算法采用了 Zab 协议:当多数(过半原则) Server 写成功,则任务数据写成功。
角色 | 描述 |
---|---|
Leader | Leader服务器是zk集群工作机制的核心,事务请求的唯一调度者和处理者,保证集群事务请求处理的顺序性 |
Follower | Follower服务器是zk集群状态的跟随者,处理非事务请求,转发事务请求给Leader服务器,参与事务请求的proposal投票,参与Leader选举投票 |
Observer | Observer是一种新型的zk节点,Observer服务器只提供非事务服务.通常用于不影响集群事务处理能力的前提下提升集群的非事务的处理能力,Observer有另外一个优势,因为它不参与投票,所以他们不属于zk集群的关键部位,即使他们Failed,或者从集群中断开,也不会影响集群的可用性 |
sid:服务器id(myid)
zxid:事务操作序列号
epoch:选举次数
集群初始化时,任何节点都没有事务操作,zxid和epoch任何节点都是一样的,不同的只是sid。此时进行投票sid最大的并且过半时作为leader。1,2,3:2;1,2,3,4,5:3
集群运行时,此时每个节点已经有了事务操作,zxid已经有值,那么就不能考虑sid,zxid更大的数据更完整,所以应当优先考虑为leader;此时zxid一样再以sid较大的作为leader。
选择版本:apache-zookeeper-3.6.2-bin.tar.gz
需要开启相应端口:
名称 | host |
---|---|
zookeeper服务 | 2181 |
数据同步 | 2888 |
节点选举 | 3888 |
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
systemctl restart firewalld.service
通过命令:firewall-cmd --list-ports
查看是否成功
zookeeper需要依赖jdk1.8才能运行,不会的可移步:Centos7 安装 Java8
cd /usr/local/src
wget -c https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
mv apache-zookeeper-3.6.2-bin /usr/local/zookeeper-3.6.2
需要将zookeeper下的/conf目录中zoo_sample.cfg重命名为zookeeper默认的配置文件:zoo.cfg
mv zoo_sample.cfg zoo.cfg
修改需要的配置
dataDir=/usr/local/zookeeper-3.6.2/data
dataLogDir=/usr/local/zookeeper-3.6.2/logs
#server.服务序列号=ip.follower与leader服务器交换信息的端口(数据同步用):follower与leader服务器选举端口
server.1=192.168.37.101:2888:3888
server.2=192.168.37.102:2888:3888
server.3=192.168.37.103:2888:3888
根据上方zoo.cfg中的dataDir,创建/data目录和myid文件,内容分别是配置中server的服务序列号(1、2、3)
mkdir /usr/local/zookeeper-3.6.2/data
vim /usr/local/zookeeper-3.6.2/data/myid
使用./bin/zkServer.sh start
进行启动,使用./bin/zkServer.sh status
查看服务状态
使用官方提供的控制台去进行节点的查看:ZooInspector
链接指定的zookeeper./bin/zkCli.sh -server 192.168.37.101
,通过命令create /test "123"
创建一条数据,通过命令ls /
进行节点的查看
刷新zookeeper控制台同样可见:
文章浏览阅读658次。1.下载交叉编译工具及内核源码http://ftp.loongnix.cn/embedd/ls3a/toolchain/gcc-4.9.3-64-gnu.tar.gzhttp://ftp.loongnix.cn/embedd/ls2k/linux-3.10.tar.gz2.解压交叉编译工具并加入临时环境变量export PATH=$PATH:/home/ubuntu/loongson/gcc-4.9.3-64-gnu/opt/gcc-4.9.3-64-gnu/bin验证ubu.._龙芯 gcc-4.9.3-64 下载安装
文章浏览阅读10w+次,点赞1.2k次,收藏9.5k次。SSM框架(白痴都看完都会)文章目录SSM框架(白痴都看完都会)介绍SSM框架<原理>一、什么是SSM框架?1.Spring2.Spring MVC3.Mybatis (核心是SqlSession)二、代码实战1.创建配置工程2.代码书写介绍SSM框架<原理>一、什么是SSM框架?SSM框架是spring、spring MVC 、和mybatis框架的整合,是标准的MVC模式。标准的SSM框架有四层,分别是dao层(mapper),service层,controller层_ssm架构
文章浏览阅读4.4k次。Android磨砂图片处理(FastBlur)_fastblur
文章浏览阅读1.4k次。Python基础之time模块1.引入time模块import time2.获取时间戳(1)time.time()获取当前时间戳time1 = time.time()# 1532352941.8780842(2)time.localtime([sec]) 将时间戳格式化为本地时间,sec为指定时间戳,默认为当前时间time1 = time.loca..._python timeer
文章浏览阅读3.6k次,点赞2次,收藏13次。`netstat` 这个命令一直以为是 net status 的缩写,今天一查发现并没有找到官方的这种说法,然后参考了 man 手册,发现这个词更像是 net statistics 的缩写,命令的作用是显示网络连接、路由表、接口连接、无效连接和多播成员关系的..._linux netstat -ano
文章浏览阅读3.1k次,点赞2次,收藏26次。目录SqlmapSqlmap的简单用法探测指定URL是否存在SQL注入漏洞查看数据库的所有用户(--users)查看数据库所有用户名的密码(--passwords)查看数据库当前用户(--current-user)判断当前用户是否有管理权限(--is-dba列出数据库管理员角色(--roles)查看所有的数据库(--dbs)查看当前的数据库(--current-db)爆出指定数据库中的所有的表爆..._--tamper=space2comment
文章浏览阅读1k次。简介在Ext官方的例子中只有下拉列表控件,但是在实际业务中只有下拉列表无法满足需求的,像下拉树和下拉表格都是很常见的控件,对于刚使用Ext的人来说,自定义一个控件好难,其实多读官方的源码有些事情就不会那么难了。下面是下拉树的代码: 代码如下:Ext.define('ComboTreeBox',{extend : 'Ext.form.field.ComboBox',m_报表下拉树控件
文章浏览阅读2.7k次。function onRemove(e, treeId, treeNode) { var newTree=$.fn.zTree.getZTreeObj("tree"); var act=newTree.transformToArray(treeNode.children); var allId=[]; allId.push(treeN_ztree删除选中父节点
文章浏览阅读8.2k次。1.可运行jar包和普通jar包及目录结构可运行jar包是打jar包时,指定了main-class类,可以通过java -jar xxx.jar 命令,执行main-class的main方法,运行jar包。可运行jar包不可被其他项目进行依赖。普通jar包打包时,不用指定main-class,也不可运行。普通jar包可以供其它项目进行依赖。jar包的配置文件是META-INF文件夹下的MANIFEST.MF文件。里面配置了如下信息:Manifest-Version用来定义manifest文件的版本_jar包结构详解
文章浏览阅读819次。Spring AOP自定义注解_spring aop 日志实现注解
文章浏览阅读2.5w次,点赞3次,收藏22次。用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " ); 这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss 就不需要我再解释了吧! PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月..._java200807转日期格式
文章浏览阅读83次。B、中程调度的主要功能是当内存紧张是挂起部分暂时不运行的进程,并在内存有空闲时激活部分被挂起的进程,以提高内存利用与和系统吞吐量。[P1638] 在对记录型信号量的wait操作的定义中,当信号量的值( )时,执行wait操作的进程变为阻塞状态。[P1648] 作业的操作分为若干作业步,一个典型作业操作通常分为三个作业步,下列错误的是( )[P1637] 已知记录型信号量S,当前S.value的值为-5,下列选项错误的是( )A.用户数越少 B.用户数越多 C.内存越小 D.内存越大。_操作系统考研真题网盘