zookeeper基本介绍

ZooKeeper是一个分布式的、开源的应用程序协调服务,提供一致性、可靠性、实时性等特性,支持命名服务、配置管理、集群管理等功能。其核心是原子广播机制,通过Zab协议保证服务器间的同步。

什么是zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户

zookeeper能做什么

  • 命名服务
  • 配置管理
  • 集群管理
  • 分布式锁
  • 队列管理
  • Zookeeper设计目的

  • 最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 
  • Zookeeper工作原理


            Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。 

            为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。


    2.可靠性:具有简单、健壮、良好的性能,如果消息被一台服务器接受,那么它将被所有的服务器接受。 

    3.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。 

    4.等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。 

    5.原子性:更新只能成功或者失败,没有中间状态。 

    6.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。 
  •  
  • zookeeper的四种节点类型znode

  • PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在
  • PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
  • EPHEMERAL-临时目录节点 客户端与zookeeper断开连接后,该节点被删除
  • EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
  •  
内容概要:本文详细介绍了一个基于Java和Vue的联邦学习隐私保护推荐系统的设计与实现。系统采用联邦学习架构,使用户数据在本地完成模型训练,仅上传加密后的模型参数或梯度,通过中心服务器进行联邦平均聚合,从而实现数据隐私保护与协同建模的双重目标。项目涵盖完整的系统架构设计,包括本地模型训练、中心参数聚合、安全通信、前后端解耦、推荐算法插件化等模块,并结合差分隐私与同态加密等技术强化安全性。同时,系统通过Vue前端实现用户行为采集与个性化推荐展示,Java后端支撑高并发服务与日志处理,形成“本地训练—参数上传—全局聚合—模型下发—个性化微调”的完整闭环。文中还提供了关键模块的代码示例,如特征提取、模型聚合、加密上传等,增强了项目的可实施性与工程参考价值。 适合人群:具备一定Java和Vue开发基础,熟悉Spring Boot、RESTful API、分布式系统或机器学习相关技术,从事推荐系统、隐私计算或全栈开发方向的研发人员。 使用场景及目标:①学习联邦学习在推荐系统中的工程落地方法;②掌握隐私保护机制(如加密传输、差分隐私)与模型聚合技术的集成;③构建高安全、可扩展的分布式推荐系统原型;④实现前后端协同的个性化推荐闭环系统。 阅读建议:建议结合代码示例深入理解联邦学习流程,重点关注本地训练与全局聚合的协同逻辑,同时可基于项目架构进行算法替换与功能扩展,适用于科研验证与工业级系统原型开发。
### ZooKeeper 基本命令教程 ZooKeeper 是一种分布式协调服务,用于管理大型分布式系统的配置信息、命名、同步等。以下是常用的 ZooKeeper 客户端命令及其功能说明: #### 1. 启动 ZooKeeper 客户端 通过以下命令连接到运行中的 ZooKeeper 实例: ```bash zkCli.sh -server localhost:2181 ``` 此命令会启动 ZooKeeper 的客户端工具并连接至指定服务器地址 `localhost` 和端口 `2181`[^2]。 --- #### 2. 创建节点 (create) 创建一个新的 znode(类似于文件系统中的路径),可以通过以下命令实现: ```bash create [-s] [-e] path data acl ``` - `-s`: 表示该节点是一个顺序节点。 - `-e`: 表示该节点是一个临时节点,在客户端断开后自动删除。 - `path`: 节点的路径名称。 - `data`: 存储在该节点上的数据内容。 - `acl`: 访问控制列表,默认为空表示无权限限制。 例如,创建一个普通的持久化节点 `/test` 并存储字符串 `"hello"`: ```bash create /test hello ``` 如果希望创建的是一个带有序号的临时节点,则可以这样操作: ```bash create -s -e /temp_node "temporary" ``` --- #### 3. 获取节点数据 (get) 获取某个特定 znode 中的数据以及其元信息: ```bash get path [watch] ``` - `path`: 需要查询的目标节点路径。 - `[watch]`: 可选参数,设置观察者模式以便监听变化通知。 实例演示读取之前创建的 `/test` 数据: ```bash get /test ``` --- #### 4. 设置节点数据 (set) 更新现有 znode 的数据值或者版本号: ```bash set path data [version] ``` - `path`: 待修改目标节点的位置。 - `data`: 新的内容替换旧有数据。 - `[version]`: 如果指定了版本号则仅当匹配成功时才允许更改;省略时表示忽略版本校验。 举个例子调整刚才建立好的测试节点内容为新的消息 `"world"`: ```bash set /test world ``` --- #### 5. 删除节点 (delete/rm) 移除指定的一个或多个子树结构下的所有叶子级联销毁掉整个分支直到根部为止的操作方法如下所示: ```bash delete path [version] rm path ``` - 使用 `delete` 命令可单独清除某一层级对象本身而不影响其他关联部分; - 参数解释同前文提到过的 set 方法一致即 version 字段用来确认当前状态是否符合预期从而决定下一步动作如何继续下去比较好一点哦! 比如我们要彻底消除先前定义出来的那个简单的键值对关系的话就可以这么干咯~ ```bash delete /test ``` --- #### 6. 列出子节点 (ls) 列举给定父目录下所有的直接后代成员清单出来看看呗~支持附加选项开启监控机制等待后续变动事件触发回调函数处理逻辑流程呢! ```bash ls path [watch] ``` 查看根目录下的所有顶级项目有哪些可用资源可供调用吧? ```bash ls / ``` --- #### 7. 查看节点统计信息 (stat) 显示关于选定位置的各种属性详情报告包括但不限于大小长度时间戳等等有用的信息帮助开发者更好地理解内部工作机制原理哟~ ```bash stat path [watch] ``` 针对任意已知存在的实体都可以请求一份完整的档案记录下来作为调试依据之一哈~ ```bash stat /test ``` --- ### 总结 以上就是一些基础却非常实用的功能介绍啦,掌握这些技能足以应对日常开发维护工作当中遇到的相关场景需求了。当然实际生产环境中可能还会涉及到更多高级特性应用领域值得深入探索研究一番噢~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值