RPC-注册中心zk介绍与安装

88 阅读4分钟

跟孙哥学java

孙哥主页

zookeeper简介

集群管理技术 提供了强一致性的保证,基于Paxos算法的ZAB协议保证的数据一致性 顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zookeeper: 是一个分布式(集群)的、开源的程序协调服务(服务),是 hadoop 项目下的一个子项目。他提供的主要功 能包括:配置管理、名字服务、分布式锁、集群管理。 广泛引用在java开发中: 大数据 hadoop hbase javaEE dubbo kafka RocketMQ
存在趋势:去zookeeper 。原因:

  1. 数据一致性的算法不够优秀 (RAFT优于Paxos) 2.完整的整体

zk的功能

注册中心,配置中心,负载均衡,故障转移,分布式锁..... 注册中心:

  1. 把一组功能相同的rpc服务管理起来,并且给这一组服务命名
  2. 健康检查(定期检查rpc服务是否正常运行)
  3. 负载均衡,通过负载均衡选择一个特定的RPC服务(轮询。。。)

注意: 服务发现与注册/注册中心/命名服务 这三者是一样的

zk的替代性产品

consul,etcd ,applo,nacos...

zookeeper的逻辑结构

树形结构 根节点 / 后续接待你 绝对路径 起始 / 树上的节点 名词 znode zookeeper节点的分类

  • 持久节点
  • 临时节点
  • 有序的持久节点
  • 有序的临时节点

zookeeper 物理结构

单机版 standalone 单机版的zk 只能进行测试 而不用用于生产环境。 原因:1. 单点故障 2. 受限硬件资源 (CPU 内存 网络)

集群版 集群zk注意事项:

  1. zk-server分为 主节点(leader) 从节点(flower) 其他的集群命名一般是主Master从Slave,zk为了与其他Client集群命名产生歧义,所以把主节点叫leader,从节点叫flower
  2. 如何确定zk集群中节点的身份 (主从) zk使用选举算法(投票)过半数认可,就是主节点
  3. 主节点作用 : 主节点管理树状结构 增加,删除--->节点 查询节点
  4. 从节点作用: 主节点修改了树状结构,会同步到从节点,从节点主要负载查询树状
  5. 注意:如果一半的从节点更新到了最新的数据,那么zk就认可这个操作成功了
  6. zk集群的容错性:只要集群中过半节点出现问题,zk集群就会中断服务
  7. zk集群节点数有说明要求:
    1. 任何个数节点(大于3)都可以作为 zk集群 3....-->zk集群
    2. 建议zk集群的个数用奇数 。因为就容错性来说,增加一个节点为偶数时,并不会增加系统的可靠性,但是硬件资源占了更多

安装zk、

docker安装 blog.csdn.net/lanse_huanx… linux安装: apache归档 archive.apache.org/dist/ 下载3.6.1版本和孙哥一样 image.png 移动到linux上 image.png tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz 解压缩到当前路径 image.png 改个名字 image.png

2.配置zookeeper 修改名字 mv conf/zoo_sample.cfg conf/zoo.cfg image.png

进入zoo.cfg vim zoo.cfg image.png

image.png 创建数据文件夹 mkdir /root/zookeeper3.6.1/data image.png

  1. 启动zk服务

cd bin 查看命令 image.png

./zkServer.sh start 启动服务

ps -ef |grep java 查看允许进程 jps 直接查看java进程 image.png image.png 看到Quo rumPeerMain 说明启动成功了

./zkServer.sh status /stop 查看状态、停止

客户端访问: bin下面 ./zkCli.sh 连接到zk服务器

image.png

集群版zk

  1. ssh登录 :linux远端登录操作的一种手段,对比其他的登录方式(telnet),ssh登录非常安全,可以防止黑客恶意的劫持。
  2. ssh登录 :在ssh登录过程中,需要提供用户名、密码。
  3. ssh免密登录 : 在集群环境下,个个节点间可能需要进行相互通信,设置会相互执行一些命令,那么在执行命令时,需要登录到另一台服务上,才可以执行。按照传统的ssh登录需要提供用户名密码,会造成通信的复杂度,设置需要人工干预,繁琐。所以ssh提供了免密登录,降低服务器之间登录通信的难度。所以在集群环境下搭建ssh免密登录是一种常见的运维手段。
  4. ssh免密登录运行流程

:::info 免密登录 默认使用 ssh root@blue.huy.com 用户名@主机名 ssh 免密登录: 生成公私钥对 1. 生成公私钥对 ssh-keygen -t rsa
公私钥对的放置的位置 ~/.ssh id_rsa id_rsa.pub 2. 公钥发送给远端的主机 ssh-copy-id 用户名@主机名 公钥存储在远端主机 ~/.ssh authorized_keys
:::