实战:Zookeeper 简介和单点部署ZooKeeper

Zookeeper 简介

ZooKeeper是一个开源的分布式协调服务,它是Apache软件基金会下的一个项目,旨在解决分布式系统中的协调和管理问题。以下是ZooKeeper的详细简介:

一、基本定义

  • ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。

  • 它以Fast Paxos算法为基础,提供了一个简单而强大的分布式环境,可用于构建和管理大规模分布式系统。

二、主要功能

ZooKeeper提供了多种核心功能来实现分布式系统的协调和管理,包括但不限于:

  1. 配置管理:ZooKeeper可以用来管理分布式系统的配置信息。各个节点可以从ZooKeeper中获取配置信息,这样当配置变化时,所有节点可以及时感知并进行相应调整。

  2. 命名服务:ZooKeeper可以用作命名服务,类似于分布式的文件系统。它允许应用程序在ZooKeeper上创建、删除和查找节点,从而实现简单的命名空间管理。

  3. 分布式锁:ZooKeeper提供了分布式锁的支持,允许多个节点在共享资源上进行协调,从而避免并发访问冲突。

  4. 分布式队列:ZooKeeper可以实现分布式队列,用于在多个节点之间传递消息和任务。

  5. 分布式通知:ZooKeeper的Watcher机制可以让客户端监视节点的变化,并在节点状态发生变化时接收通知,实现分布式的事件触发和通知机制。

  6. Leader选举:在ZooKeeper集群中,ZAB(ZooKeeper Atomic Broadcast)协议用于选举Leader节点,Leader负责处理所有客户端的写请求,并将更改广播给其他Follower节点。

三、数据模型

  • ZooKeeper的数据模型的结构与Linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。

  • 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时Flag设置为EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper里。

四、特点

  • 高效性:ZooKeeper提供了高性能的分布式协调服务。

  • 可靠性:ZooKeeper通过其独特的选举机制和数据复制策略,保证了数据的一致性和服务的可靠性。

  • 一致性:ZooKeeper提供强一致性保证,确保在分布式环境中各个节点的数据状态是一致的。

五、应用场景

ZooKeeper在分布式系统中有广泛的应用场景,包括但不限于:

  • 分布式数据库、分布式缓存、分布式计算等各种分布式应用的协调和管理。

  • 实时掌握分布式系统中每个节点的状态,并根据节点状态进行动态调整和优化。

  • 分布式系统中的服务注册与发现、负载均衡等。

六、总结

ZooKeeper作为一个分布式协调服务,为分布式系统提供了高可用性、高性能和强一致性的数据存储和协调能力。它是构建分布式系统和服务的重要基础设施,广泛应用于各种分布式应用中。

单点部署ZooKeeper 

ZooKeeper单点部署相对简单,主要适用于测试环境或小规模应用场景。以下是ZooKeeper单点部署的详细步骤:

一、环境准备

  1. 硬件环境:

    • 准备一台服务器或虚拟机,确保其性能满足ZooKeeper运行的基本需求。

  2. 软件环境:

    • 确保已安装Java环境(JDK 1.8或更高版本),因为ZooKeeper是用Java编写的。

    • 安装wget(如果需要通过wget命令下载ZooKeeper安装包)。

二、下载ZooKeeper安装包

  1. 访问ZooKeeper官网(http://zookeeper.apache.org/)下载最新稳定版本的ZooKeeper安装包。

  2. 使用wget命令下载(如果服务器可以连接公网):

    wget https://dlcdn.apache.org/zookeeper/zookeeper-版本号/apache-zookeeper-版本号-bin.tar.gz
    

    注意替换“版本号”为实际下载的ZooKeeper版本号。

三、安装ZooKeeper

  1. 解压安装包:

    将下载的ZooKeeper安装包解压到指定目录,例如/usr/local/zookeeper

    tar -zxvf apache-zookeeper-版本号-bin.tar.gz -C /usr/local/zookeeper
    
  2. 创建软连接(可选):

    为了方便操作,可以创建一个指向ZooKeeper安装目录的软连接。

    ln -s /usr/local/zookeeper/apache-zookeeper-版本号-bin /usr/local/zookeeper/zk
    

四、配置ZooKeeper

  1. 修改配置文件:

    • 主要配置项包括dataDir(数据目录)、clientPort(客户端端口)等。

    • 如果需要,还可以配置其他高级选项,如tickTimeinitLimitsyncLimit等。

    • 进入ZooKeeper的conf目录,将zoo_sample.cfg文件复制一份并重命名为zoo.cfg

    • 使用文本编辑器(如vim)打开zoo.cfg文件,根据需要进行修改。

如下图所示:

这里只修改了dataDir这个目录,其中data目录需要手动创建。

tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里clientPort:服务的监听端口,默认2181maxClientCnxns:最大并发客户端数,用于防止DOS的,默认值是10,设置为0或不设置是不加限制    

2. 创建数据目录

  1. 确保zoo.cfg中指定的dataDir目录存在,如果不存在,则需要手动创建。

五、启动ZooKeeper服务

  1. 启动服务:

    • 切换到ZooKeeper的bin目录下。

    • 执行./zkServer.sh start命令启动ZooKeeper服务。

  2. 检查服务状态:

    • 执行./zkServer.sh status命令检查ZooKeeper服务的状态。

    • 如果服务成功启动,状态将显示为“standalone”或类似的表示单点运行的信息。

六、验证ZooKeeper服务

   使用ZooKeeper客户端工具:

  • 可以使用ZooKeeper自带的客户端工具(如zkCli.sh)连接到ZooKeeper服务。

  • 执行一些基本操作(如创建、读取、更新、删除节点)来验证ZooKeeper服务是否正常工作。

七、注意事项

  • 防火墙和安全组:确保ZooKeeper的通信端口(默认是2181)在防火墙或安全组中是开放的。

  • 监控和日志:建议配置适当的监控和日志记录机制,以便在出现问题时能够及时发现和解决。

  • 备份和恢复:虽然单点部署的ZooKeeper没有集群的容错能力,但定期备份数据仍然是一个好习惯。

通过以上步骤,您可以成功部署一个ZooKeeper单点实例,并使其在生产环境或测试环境中稳定运行。然而,需要注意的是,单点部署的ZooKeeper在容错性和高可用性方面存在限制,因此在生产环境中建议部署ZooKeeper集群以提高系统的稳定性和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387026.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot的基础配置

目录 SpringBoot快速搭建web程序 第一步:导包 第二步:配置SpringBoot引导类 第三步:编写controller类 第四步:在SpirngBoot引导类中启动项目 起步依赖 SpringBoot基础配置 配置文件格式 yaml语法规则 读取yml配置文件的方…

UE5+OpenCV配置(Windows11系统)

一、概述 因为需要在UE5中使用OpenCV这些工具进行配置,所以在网络上参考借鉴一些资料进行配置。查询到不少的资料,最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 (一)版本 使用Windows11系统、UE5.…

ONLYOFFICE 协作空间 2.6 已发布:表单填写房间、LDAP、优化房间和文件管理等

更新后的 ONLYOFFICE 协作空间带来了超过 20 项新功能和优化,让工作更加高效和舒适。阅读本文了解详情。 表单填写房间 这次更新增加了一种新的房间类型,可在 ONLYOFFICE 协作空间中组织简单的表单填写流程。 通过表单填写房间,目前可以完成…

将控制台内容输出到文本文件

示例代码: Imports System.IO Module Module1Sub Main()Dim fs As New FileStream("D:\Desktop\test\输出结果.txt", FileMode.Create, FileAccess.Write, FileShare.None)Dim sw As New StreamWriter(fs)Console.SetOut(sw)Console.SetError(sw)For i …

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植篇-第六十九章uboot移植

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

移动UI:排行榜单页面如何设计,从这五点入手,附示例。

移动UI的排行榜单页面设计需要考虑以下几个方面: 1. 页面布局: 排行榜单页面的布局应该清晰明了,可以采用列表的形式展示排行榜内容,同时考虑到移动设备的屏幕大小,应该设计合理的滚动和分页机制,确保用户…

在线教育数仓项目(数据采集部分1)

文章目录 数据仓库概念项目需求及架构设计项目需求分析系统数据流程设计框架版本选型集群规模估算集群资源规划设计 数据生成模块目标数据页面事件曝光启动播放错误 数据埋点主流埋点方式(了解)埋点数据上报时机埋点数据日志结构 服务器和JDK准备服务器准…

Linux:shell的基础用法

shell的基础用法 shell变量 Shell 支持以下三种定义变量的方式: valueabcvalue‘abc’value“abc”(注意,赋值号的周围不能有空格) Shell 变量的命名规范 变量名由数字、字母、下划线组成必须以字母或者下划线开头不能使用 Shell 里的关键字&#xff08…

IDEA的pom.xml显示ignored 的解决办法

问题: idea中创建Maven module时,pom.xml出现ignored。 原因: 相同名称的module在之前被创建删除过,IDEA会误以为新的同名文件是之前删除掉的,将这个新的module的pom.xml文件忽略掉显示ignored. 解决: 在…

springboot超市商品管理系统-计算机毕业设计源码55289

摘 要 随着信息技术的快速发展和普及,传统的超市管理模式已经无法满足现代商业的需求。为了提高超市的管理效率,优化商品销售流程,本文提出了一种基于SpringBoot框架的超市商品管理系统。该系统结合了现代软件开发技术,包括MySQL数…

WATLOW Power Series SSR User’s Manual

WATLOW Power Series SSR User’s Manual

【Java】字符串String类(011)

目录 ♦️API和API帮助文档 ♦️创建String 🎏直接赋值类 🎏new类 🐡空参类 构造方法: 举例代码: 🐡有参类 构造方法: 举例代码: 🐡字符数组类 构造方法&…

【C++】类和对象——流插入和流提取运算符重载

目录 前言ostream和istream自定义类型的流插入重载自定义类型的流提取重载解决私有问题日期类总接口 前言 我们在上一节实现日期类时,在输入和输出打印时,经常会调用两个函数: void Insert()//输入函数{cin >> _year;cin >> _mo…

项目比赛经验分享:如何抓住“黄金一分钟”

项目比赛经验分享:如何抓住“黄金一分钟” 前言引起注意:用事实和故事开场明确痛点:描述问题和影响介绍解决方案:简明扼要激发兴趣:使用视觉辅助概述演讲结构:清晰的路线图我的开场白示例结语 前言 在创新的…

(源码分析)springsecurity认证授权

了解 1. 结构总览 SpringSecurity所解决的问题就是安全访问控制,而安全访问控制功能其实就是对所有进入系统的请求进行拦截,校验每个请求是否能够访问它所期望的资源。 根据前边知识的学习,可以通过Filter或AoP等技术来实现,Spr…

鸿蒙应用框架开发【简单时钟】 UI框架

简单时钟 介绍 本示例通过使用ohos.display接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间,使用Canvas绘制时钟,指针旋转角度通过计算得出。 例如:"2 * Math.PI / …

【PHP】系统的登录和注册

一、为什么要学习系统的登录和注册 系统的登录和注册可能存在多种漏洞,这些漏洞可能被恶意攻击者利用,从而对用户的安全和隐私构成威胁。通过学习系统的登录和注册理解整个登录和注册的逻辑方便后续更好站在开发的角度思考问题发现漏洞。以下是一些常见…

BUGKU-WEB-好像需要密码

如果点击start attrack 后出现 Payload set 1: Invalid number settings 的提示,先点hex 后点 decimal 再开始start attrack,这是一个软件bug,需要手动让它刷新。 解题思路 先随便输入测试:admin看看源码吧那就爆破了 据说&…

WEBKIT 通过JavaScript 调用本地,硬件未来之窗OS硬件APP

以酒店为例我们需要调用shen份证读取,采集人脸,门锁写房卡,如何通过浏览器调用 1.通过本地http服务 2.通过webkit模式 这里说政务单位模式的集成 由于篇幅问题,怎么集成webkit就不说了 一、webkkit加载交互本地代码 browser.…

旅游卡,免费,旅游是真的吗?真相是……

但这种包来回大交通,一旦成本大于利润,他们就会以各种理由推卸责任。这就是我在“揭秘:共享旅游卡免费旅游,包来回路费,这背后的3大真相!”这篇文章里面讲到那个大妈的惨痛教训。 以上这5点真相&#xff0…