详解分布式应用程序协调服务Zookeeper

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 详解分布式应用程序协调服务Zookeeper

主从结构:HDFS、Yarn、HBase、storm、spark、zookeeper都存在单点故障问题


hadoop1.x没有解决方案


hadoop2.x利用zookeeper实现HA


zookeeper是开源的分布式应用程序协调服务,是Google chubby的开源实现


zookeeper相当于一个数据库,可以实现HA,zookeeper的功能:配置管理、集群管理、分布式锁


zookeeper的体系结构:leader和follower


zookeeper集群本身具有leader选举功能(解决单点故障问题,因此zookeeper集群至少需要三台)和数据同步功能(保证数据的安全性),


选举端口号:3888,同步端口号:2888


zookeeper也支持单点部署,不存在leader选举功能(paxos协议)和数据同步功能(zab协议),状态:standalone(单独的、独立的)


paxos协议的核心思想:当多数server写成功,则任务数据写成功。如果有3个server,则两个写成功即可。


安装和配置zookeeper:


安装zookeeper:


tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training


配置zookeeper:配置ZOOKEEPER_HOME环境变量:


vim ~/.bash_profile
export ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10
                export PATH=$ZOOKEEPER_HOME/bin:$PATH
source ~/.bash_profile

         

zookeeper的核心配置文件:conf/zoo.cfg 使用cp zoo_sample.cfg zoo.cfg得到zoo.cfg


zookeeper的安装模式:


1、单点模式:一台机器,不存在leader选举功能和数据同步功能 状态:standalone


修改配置文件zoo.cfg:


1、指定zookeeper中数据保存的目录:


dataDir=/root/training/zookeeper-3.4.10/tmp


2、指定zookeeper的主机是谁:


server.1=bigdata11:2888:3888


3、指定server.1的myid:1


2、集群模式:至少三台机器以上  具有leader选举功能和数据同步功能 状态:一个leader,多个follower


1、在bigdata12上安装和配置zookeeper:


安装zookeeper:tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training


配置zookeeper:配置ZOOKEEPER_HOME环境变量:


ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10
PATH=$ZOOKEEPER_HOME/bin:$PAHT


2、修改配置文件zoo.cfg:


1、指定zookeeper中数据保存的目录:


dataDir=/root/training/zookeeper-3.4.10/tmp


2、指定zookeeper的主机:


server.1=bigdata12:2888:3888
server.2=bigdata13:2888:3888
server.3=bigdata14:2888:3888


3、指定server.1的myid:1


3、把bigdata12上的zookeeper复制到其他节点上:


scp -r zookeeper-3.4.10 root@bigdata12:/root/training
scp -r zookeeper-3.4.10 root@bigdata13:/root/training
scp -r zookeeper-3.4.10 root@bigdata14:/root/training


4、修改bigdata13和bigdata14上的myid文件:


5、在每个节点上启动zookeeper:zkServer.sh start


zookeeper的数据模型:


zookeeper的数据模型类似于Linux文件系统,呈树形结构,每个目录称作一个z节点,每个z节点上可以存储少量数据,默认1M


  • 启动zookeeper:zkServer.sh start


  • 停止zookeeper:zkServer.sh stop


  • 查看zookeeper的状态:zkServer.sh status


  • 启动zookeeper的客户端命令行工具:zkCli.sh


  • zookeeper的客户端命令行工具端口号:2181


  • 在zookeeper中创建节点添加数据:create /mydata helloworld


  • 在zookeeper中查看节点:get /mydata


作者:李金泽AllenLi,清华大学在读硕士,研究方向:大数据和人工智能


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
10天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
10天前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
5天前
|
存储 NoSQL Java
分布式session-SpringSession的应用
Spring Session 提供了一种创建和管理 Servlet HttpSession 的方案,默认使用外置 Redis 存储 Session 数据,解决了 Session 共享问题。其特性包括:API 及实现用于管理用户会话、以应用容器中性方式替换 HttpSession、简化集群会话支持、管理单个浏览器实例中的多个用户会话以及通过 headers 提供会话 ID 以使用 RESTful API。Spring Session 通过 SessionRepositoryFilter 实现,拦截请求并转换 request 和 response 对象,从而实现 Session 的创建与管理。
分布式session-SpringSession的应用
|
8天前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
31 3
|
11天前
分布式-Zookeeper-数据订阅
分布式-Zookeeper-数据订阅
|
11天前
|
监控
分布式-Zookeeper-Zab协议
分布式-Zookeeper-Zab协议
|
9天前
|
存储 NoSQL Java
分布式session-SpringSession的应用
Spring Session 提供了一种创建和管理 Servlet HttpSession 的方案,默认使用外置 Redis 存储 Session 数据,解决 Session 共享问题。其主要特性包括:提供 API 和实现来管理用户会话,以中立方式替换应用程序容器中的 HttpSession,简化集群会话支持,并在单个浏览器实例中管理多个用户会话。此外,Spring Session 允许通过 headers 提供会话 ID 以使用 RESTful API。结合 Spring Boot 使用时,可通过配置 Redis 依赖和支持缓存的依赖实现 Session 共享。
分布式session-SpringSession的应用
|
11天前
|
Java
分布式-Zookeeper-分布式锁
分布式-Zookeeper-分布式锁
|
11天前
|
存储 负载均衡 算法
分布式-Zookeeper-Master选举
分布式-Zookeeper-Master选举
|
11天前
|
NoSQL 容灾 关系型数据库
分布式协调服务-Zookeeper
分布式协调服务-Zookeeper
下一篇
无影云桌面