Zookeeper用作服务发现~记当牛马的日子

1.什么是Zookeeper?

Zookeeper是一个开源的、分布式的协调服务,它可以用于管理和协调大规模的分布式系统。它提供了一个简单的接口,用于处理分布式应用程序中的一些关键任务,比如统一命名服务、配置管理、分布式锁、分布式队列等。

Zookeeper设计的目标是高可用性、高性能和严格的顺序访问。它的核心是一个分布式的文件系统,所有的数据都存储在内存中,并通过ZAB(Zookeeper Atomic Broadcast)协议来保持数据的一致性。

Zookeeper的主要特点包括:

  1. 简单的数据模型:Zookeeper提供了一个类似于文件系统的树形结构,可以通过创建、删除和更新节点来管理数据。
  2. 高性能:Zookeeper将所有数据存储在内存中,并且使用了一种基于内存的消息传递机制,可以实现快速的读写操作。
  3. 可靠性和容错性:Zookeeper采用了分布式的架构,所有的数据都会被复制到多个节点上,以保证数据的可用性和可靠性。
  4. 顺序访问:Zookeeper提供了严格的顺序访问保证,所有的更新操作都会被顺序执行,并且可以基于版本号来实现乐观锁机制。
  5. 可扩展性:Zookeeper支持动态地添加和删除节点,可以根据需要调整集群的规模。

2. Zookeeper怎么用作服务发现

Zookeeper可以作为一个服务发现工具,用于在分布式系统中跟踪和管理服务的注册和发现。

以下是使用Zookeeper作为服务发现的一般步骤:

  1. 配置Zookeeper集群:首先搭建一个Zookeeper集群,确保集群节点之间可以相互通信,并且每个节点都具有稳定的唯一名称。

  2. 注册服务:当一个新的服务启动时,它会连接到Zookeeper集群,并在Zookeeper中创建一个节点,将服务的元数据(如IP地址、端口号、服务名称等)作为节点的数据。

  3. 监听服务:其他服务或客户端可以通过监听Zookeeper中的节点来发现新的服务。它们可以通过在特定节点上设置监听器(watcher)来监视该节点的变化。

  4. 发现服务:当一个新的服务注册到Zookeeper中时,已经在该节点上设置了监听器的服务或客户端将收到通知。他们可以获取新服务的元数据,并将其用于之后的通信。

  5. 心跳监测:为了保证服务的可用性,服务需要定期向Zookeeper集群发送心跳。如果某个服务停止发送心跳,Zookeeper将会自动删除该服务节点,并通知其他服务。

Zookeeper服务注册及心跳机制详解 

3. Zookeeper与Naous的区别

Zookeeper和Naous都是分布式系统领域的重要工具,但它们有一些区别:

  1. 用途不同:Zookeeper是一个分布式协调服务,用于管理和协调分布式系统中的各个节点。它提供了分布式锁、选举、配置管理等功能。而Naous是一个分布式文件系统,提供了可扩展的文件存储和访问能力。

  2. 数据模型不同:Zookeeper使用的是层次化的命名空间数据模型,类似于一个文件系统。它将数据组织成一个树状结构,每个节点都有路径和数据。Naous则是一个分布式文件系统,它将数据组织成文件和目录的形式。

  3. 数据一致性不同:Zookeeper保证了强一致性,所有的读写操作都会被全局有序地执行。而Naous则是一个弱一致性系统,可以容忍一定程度的数据不一致性。

  4. 依赖的技术不同:Zookeeper使用ZAB(ZooKeeper Atomic Broadcast)协议来实现分布式一致性,底层通信使用TCP协议。而Naous使用Paxos协议来实现一致性,底层通信使用TCP或UDP协议。

总的来说,Zookeeper更适合用于实现分布式系统的协调和管理,而Naous更适合用于构建可扩展的分布式文件系统。它们在使用场景、数据模型、一致性保证和底层技术等方面都存在一些差异。

Zookeeper使用快速入门:基础命令,wacth监控,权限控制 

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

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

相关文章

dockerfile搭建部署LNMP

目录 实验 架构: 实验步骤: nginx部分 mysql部分 php部分 实验 实验:用dockerfile搭建LNMP论坛 架构: 一台docker虚拟机 docker部署nginx 1.22 指定ip地址172.111.0.10 docker部署mysql 8.0.30 指定ip地址…

标准库标头 <execution> (C++17)学习

此头文件是算法库的一部分。本篇介绍策略类型的一些应用示例: 类 is_execution_policy (C17) 测试一个类是否表示某种执行策略 (类模板) 在命名空间 std::execution 定义 sequenced_policyparallel_policyparallel_unsequenced_policyunsequenced_policy (C17)(C1…

ViewModel(9)viewmodel源码解读。

ViewModel 的源码实现较为复杂,以下是对其主要部分的解读: 一、核心类和接口 ViewModel:这是一个抽象类,定义了 ViewModel 的基本行为。它不持有对视图(如 Activity、Fragment)的引用,确保了 …

盘点黑神话中的黑科技

黑神话在科技方面展现出了诸多令人瞩目的亮点与创新,为玩家带来了一场前所未有的游戏盛宴。 一、空间计算技术的精妙应用 游戏制作团队大胆采用了先进的空间计算技术,其中北京虚拟动点科技有限公司的空间计算 - optitrack 光学定位捕捉技术发挥了至关重…

外排序之文件归并排序实现

外排序介绍 外排序是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是⼀种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量&#x…

ACCESS 工具注入实战 凡诺靶场

简介 Access数据库注入攻击是一种常见的网络安全,通过注入SQL代码来获取未授权的数据访问权限。这种攻击利用了应用程序与数据库之间的交互漏洞,攻击者通过输入特定的SQL代码片段来操纵数据库查询,从而绕过应用程序的安全机制,获取…

简单聊聊云硬盘备份

什么是全量备份和增量备份? 云硬盘备份通常分为全量备份与增量备份两种类型: 全量备份:全量备份是指备份某个时刻整个云硬盘的所有数据,无论数据是否发生变化,都会创建全新的备份副本,第一次做备份时&…

基于x86 平台opencv的图像采集和seetaface6的人脸特征点功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸特征点功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的人脸特征点模块从而…

Selenium + Python 自动化测试19(补充-读取各种文件数据操作)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了数据驱动测试中如何完成重复的测试实例,今天我们补充一些读取各种文件的方法。 本篇文章我们讨论一下如何使用读取txt、CSV、Excel文件&#xff0…

多门店多端平台系统小程序源码

🔥【健身新纪元】多门店多端分开健身系统,打造你的个性化健身体验🌟 🏋️‍♀️ 一、告别单一,拥抱多元化健身时代 你还在为找不到合适的健身房而烦恼吗?或是想要随时随地开启健身模式,却受限…

xss靶场 pwnfunction WW3

目录 代码 代码分析 payload构造 结果 代码 <div><h4>Meme Code</h4><textarea class"form-control" id"meme-code" rows"4"></textarea><div id"notify"></div> </div><scri…

ubuntu上cmake3.30.2的安装

引言 安装下载安装包将安装包从windows拷贝到ubuntu解压进入解压后的文件夹执行boostrap编译CMake安装CMake查看是否安装成功 目前的ubuntu系统是20.04.4&#xff0c;用命令行安装了cmake的版本是3.16的&#xff0c;由于项目需要升级cmake到cmake3.22之上&#xff0c;使用命令行…

如何使用cornerstone3D渲染3D影像

&#x1f353; 前言 在日常开发中经常会遇到除了渲染MPR视图外&#xff0c;还需要渲染3D扫描影像&#xff0c;本文从具体的实现、viewport type解读、场景预设等方面来介绍3D具体的实现及涉及到的相关概念。 &#x1f951; 效果演示 点击查看完整代码 &#x1f352; 实现及概…

[BaseCTF 2024] 高校联合新生赛 PWN (week1-7)

pwn这块会略写&#xff0c;毕竟只有有用的才需要记。 week1 我把他丢了 溢出&#xff0c;很小的ROP,有bin/sh和system p.sendafter(b\n, b\0*0x78flat(pop_rdi, bin_sh, 0x40120f) Ret2text 溢出到后门 p.send(b\0*0x28flat(0x4011a9)) shellcode_level0 直接运行shel…

详细分析 el-progress的基本知识以及用法(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 由于实战项目中有所引用&#xff0c;对此记录基本的知识点&#xff0c;并且以Demo的形式呈现 1. 基本知识 el-progress 是 Element Plus UI 库中的一个进度条组件&#xff0c;用于显示任务的完成情况 可以帮助用户了解某个操作或任…

TTS 文本 vs SSML

给个例子&#xff1a; MRCP/2.0 246 SPEAK 1 Channel-Identifier: b227c392d70b478espeechsynth Content-Type: text/plain Voice-Name: xx Content-Length: 11 How are you 其中 Content-Type 是文本 那么 FreeSWITCH 能不能让 Content-Type 变成 ssxml 呢&#xff1f; 官方…

移动云电脑手机端3.0全新升级,畅享个人便捷管理,筑牢安全管控防线

在当今数字化飞速发展的时代&#xff0c;企业对于高效、便捷且安全的办公模式需求日益迫切。移动云电脑手机端3.0全新升级&#xff0c;迎来科技领域的又一突破。其基于企业管理平台为企业客户提供管理能力&#xff0c;实现对用户、终端、资源的全方位集中管控&#xff0c;助力提…

探索GitLab:从搭建到高效使用的实用指南

企业里为什么喜欢使用GitLab 一、GitLab简介二、搭建GitLab三、GitLab的权限管理3.1、用户注册3.2、创建用户组3.3、为用户组添加用户3.4、为工程添加访问权限 四、GitLab的code review五、团队知识管理六、总结 一、GitLab简介 GitLab是利用 Ruby on Rails 一个开源的版本管理…

Go开发桌面客户端软件小试:网站Sitemap生成

在前一篇【手把手教你用Go开发客户端软件&#xff08;使用Go HTML&#xff09;】中&#xff0c;我们详细介绍了如何通过Go语言开发一个简单的桌面客户端软件。本次&#xff0c;我们将继续这个系列&#xff0c;使用Go语言结合Sciter的Go绑定库——go-sciter&#xff0c;实战开发…

Linux虚拟机磁盘管理-新分区磁盘挂载

挂载mount 注意&#xff1a;挂载前一定要对磁盘进行文件系统创建&#xff0c;否则无法挂载磁盘 比如mkfs.ext4系统文件 磁盘挂载前和挂载后&#xff1a; linux系统重启后磁盘挂载没有了怎么办(不建议&#xff0c;哪怕输错一个字系统起不来&#xff0c;自己操作的时候出现过起不…