面试题:
1、什么是zookeeper?
2、zookeeper的选举机制?
3、zookeeper的特性是什么?
4、zookeeper所使用到的设计模式?
1、zookeeper就是分布式应用程序的协调和控制服务;
2、在另一篇中说到过;
3、CP性(一致性):数据一致性,在集群中的每一个节点上的数据要保持一致
4、观察者模式(zookeeper是被观察对象,在zookeeper中注册的服务是观察对象)
参考链接:
zookeeper:注册中心就是zookeeper的别名,zookeeper是Apache开源基金会下的一个顶级项目,
zookeeper是一个致力于开发和维护的开源服务器,作用于项目中的协调和控制功能。
zookeeper的应用场景:
在之前只适用于大数据,但是随着web项目越来越大,发展越来越快,zookeeper已经完全适用于整个web项目,在web项目中仍然起着协调和控制的作用。
zookeeper只是以集群的形式存在,也就是说三台zookeeper做同一件事,在官方文档上说明,zookeeper以奇数台为稳定,并且以中间这一台为leader,也就是
zookeeper至少需要三台。
面试题:
什么是zookeeper?
分布式协调和控制的注册中心
为什么要使用zookeeper?
为了解决分布式系统的数据一致性问题
zookeeper的观察者?
为了在不影响zookeeper写性能的条件下提升zookeeper的性能;
当消费者的请求越来越多的时候,我们需要对zookeeper集群进行拓展,
而观察者不会参与投票,所以我们可以任意进行添加,且观察者宕机(死亡)
不会带来任何影响。
不影响写性能:因为观察者不会参与投票
提升性能:观察者也能接受到消费者的请求,并发送给leader处理
配置zookeeper:
4.1.配置jdk
4.2.配置免秘钥登录
生成自己的公钥
ssh-keygen -t rsa 四次回车(都不能输入密码)
把自己的公钥copy其他服务器上
ssh-copy-id ip地址/hostname
4.3.解压zookeeper
tar -zxvf xxxxx
4.4.把conf目录下的zoo-sample.cfg文件改名为zoo.cfg
mv zoo-sample.cfg zoo.cfg
4.5.修改dataDir参数(不是必须所要修改的,但是要求修改)
指向的文件就是zookeeper每一台节点的唯一标识(id),而且这个唯一标识不能重复!!!!
在zookeeper目录中创建文件夹data
把dataDir修改为刚才所创建的data目录的绝对路径
dataDir=/home/apps/zookeeper-3.4.6/data
4.6.在zoo.cfg文件的末尾添加
server.1=zookeeper01:2888:3888
server.2=zookeeper02:2888:3888
server.3=zookeeper03:2888:3888
server.的数据就是每一台zookeeper的唯一标识
zookeeper01:HOSTNAME或者可以配置IP地址
2888:zookeeper集群之间通讯所用的端口号
3888:zookeeper集群的选举leader端口号
4.7.在之前创建data文件夹下创建myid文件
touch myid
4.8.写入myid文件
1
4.9.通过scp发送到另外两台服务器上
scp -r /home/apps/ zookeeper02:/home/
scp -r /home/apps/ zookeeper03:/home/
4.10.根据server.的数字分别修改myid文件
把zookeeper02修改为2
把zookeeper03修改为3
4.11.启动zookeeper
在bin目录中启动
./zkServer.sh start
看到以下信息说明启动成功:
JMX enabled by default
Using config: /home/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
4.12.分别检测三台zookeeper服务器的状态
在bin目录中
./zkServer.sh status
zookeeper的机制:
zookeeper:
乾坤未定,你我皆是黑马