Zookeeper 的学习与运用

今天正式成为PSF的成员啦!分享一下,法学院毕业后Python对我的帮助 大家好,这里是程序员晚枫,给大家分享一个好消息:我也成为PSF Member了!PSF Member:Python软件基金会成员,是Python社区的重要组成部分,负责维护和发展Python语言及其相关项目。同时我也加入了Python的简体中文翻译小组,未来大家看到的Python官方中文文档里,也许会看到我翻译的内容哟~今天给大家讲讲我和Python的故事吧~ 阅读详情

引子?

云计算越来越流行的今天,单一机器处理能力已经不能满足我们的需求,不得不采用大量的服务集群。服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,这些信息如何推送到各个节点?并且保证信息的一致性和可靠性?

众所周知,分布式协调服务很难正确无误的实现,它们很容易在竞争条件和死锁上犯错误。如何在这方面节省力气?Zookeeper是一个不错的选择。Zookeeper背后的动机就是解除分布式应用在实现协调服务上的痛苦。本文在介绍Zookeeper的基本理论基础上,用Zookeeper实现了一个配置管理中心,利用Zookeeper将配置信息分发到各个服务节点上,并保证信息的正确性和一致性。

Zookeeper是什么?

引用官方的说法:“Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端API”。

Zookeeper总体结构

Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。

Zookeeper逻辑图如下,

  1. 客户端可以连接到每个server,每个server的数据完全相同。
  2. 每个follower都和leader有连接,接受leader的数据更新操作。
  3. Server记录事务日志和快照到持久存储。
  4. 大多数server可用,整体服务就可用。

Zookeeper数据模型

Zookeeper表现为一个分层的文件系统目录树结构(不同于文件系统的是,节点可以有自己的数据,而文件系统中的目录节点只有子节点)。

数据模型结构图如下,

圆形节点可以含有子节点,多边形节点不能含有子节点。一个节点对应一个应用,节点存储的数据就是应用需要的配置信息。

Zookeeper 特点

  • 顺序一致性:按照客户端发送请求的顺序更新数据。
  • 原子性:更新要么成功,要么失败,不会出现部分更新。
  • 单一性 :无论客户端连接哪个server,都会看到同一个视图。
  • 可靠性:一旦数据更新成功,将一直保持,直到新的更新。
  • 及时性:客户端会在一个确定的时间内得到最新的数据。

Zookeeper运用场景

  • 数据发布与订阅 (我的业务用到这个特性,后面会有详细介绍)

应用配置集中到节点上,应用启动时主动获取,并在节点上注册一个watcher,每次配置更新都会通知到应用。

  • 名空间服务

分布式命名服务,创建一个节点后,节点的路径就是全局唯一的,可以作为全局名称使用。

  • 分布式通知/协调

不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。

  • 分布式锁

Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节点的数据都是相同的。一个用户创建一个节点作为锁,另一个用户检测该节点,如果存在,代表别的用户已经锁住,如果不存在,则可以创建一个节点,代表拥有一个锁。

  • 集群管理

每个加入集群的机器都创建一个节点,写入自己的状态。监控父节点的用户会受到通知,进行相应的处理。离开时删除节点,监控父节点的用户同样会收到通知。

Zookeeper在我们业务逻辑上的运用

我们公司做极光推送,Push 业务平台有大量的逻辑服务器,按业务类型分组。逻辑服务的运行依赖于配置,并且配置会在线调整,需要一个集中的配置项管理中心。Zookeeper的发布与订阅特性以及发送更新通知的机制很好的满足了我们的需求。Zookeeper的容灾特性也免去了我们相关的大量管理工作。

下面我主要和大家分享一下Zookeeper在我们内部服务中的应用。

a. 我们的逻辑服务器包含两类配置。

一种为Acl(访问控制列表),用户的消息消费后,按照列表中的条件走向下一个逻辑服务器。另一种只是单独的算法逻辑的外提,称为Agl(访问算法列表),但是其中某些判断条件会经常变化。这两类配置被收集到了配置管理中心(即Zookeeper)。

逻辑图如下,

用户编辑好策略配置信息(xml格式),通过客户端加载到Zookeeper。Zookeeper立即通知其下的逻辑服务器(BLx),逻辑服务器下载最新的配置策略,并应用新的策略。新的策略有可能改变某一段id范围内用户的数据流向,或越过原来的逻辑服务器,或指向新加入的逻辑服务器。

b. 数据模型设计

同一类型的逻辑服务在Zookeeper上创建一个节点,共享相同的配置信息。
该节点下面为策略配置项,分为Acl和Agl两类,如下图:(以代理逻辑服务为例)

Acl1, Acl2, Acl3, Agl1, Agl2分别存有策略配置信息。变化后会通知监听Proxy节点的逻辑服务器,Proxy逻辑服务器下载最新策略,并应用该策略。新节点的加入和退出也会通知到Proxy逻辑服务器。

c. 业务处理流程如下图

  1. 逻辑服务监听自己类型节点(本例如前图Proxy节点)
  2. 编辑新策略,加载策略到Zookeeper(策略保存在Proxy/Acls/Acl[1..n],或Proxy/Agls/Agl1[1..n])
  3. Zookeeper通知各逻辑节点
  4. 各逻辑节点下载新策略到本地,并应用新策略

参考

题解 | #表示数字#用一个栈来记录上一个是什么类型 机械人的春招flag#相对秋招而言我觉得大公司春招的大部分岗位已经没有了,留下的大部分也是一些没招满的岗位,反而春招是很多国央企招人比较多的时候,可以尝试一下。本人23毕业生,二战考研感觉上岸无望,投24届春招还有机会嘛,什么企业上岸几率大,图一是有校园经历版,图二是没校园经历版,那个更好,求指导 #最后再改一次简历#华为od 大量HC!先介绍一下个人情况,23届二战感觉希望不大然后春招前投了一些公司,能参加的校招投了长春一汽启明信息,一汽丰田岗位在天津,还有联系的od,目前od今天明天一二面还。 阅读详情

相关推荐

人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)

引流一下 #机械制造笔面经# #华为# #宁德时代# #中石油# #比亚迪# #offer决赛圈,我。1.现在在一家小地方国企实习,转正得看工作情况,还有十几天,我觉得希望不大,而且让我修改bug的项目。光大北分线下一面无需笔试,然后的话呢,有点海面的意思,同组的基本是9/2硕,只有自己一个双非辣鸡,首。5年JAVA,普通一本,四六级没考,机考320,定级d3,终端部门审批被卡,有其他部门可以捞一下吗,oppo开奖,各方面都很喜欢,大平台+实习成长+转正率+办公环境+企业文化和氛围,都很不错,但是作为。

han_xue_feng的博客 1330

为啥这么多公司用 ZooKeeper?它到底解决了什么问题?

为啥这么多公司用 ZooKeeper?它到底解决了什么问题

weixin_54626591的博客 561

华为OD c++面经(考研/考公/调剂失利的伙伴欢迎私聊)

四川人,想找个成都嵌入式软件的工作,但目前找不到,只有一个南京的公司小点但稳定嵌入式软件,还有一个苏。小弟双9,岗位一致,都是数字前端,理想的薪资比摩尔高,工作强度也比摩尔大一点。美团面了大概四十分钟,全程细节拷打,面完汗流浃背,感觉过不了了,看面经吧1. 说说你平时是怎么送餐的。三个技术面,一个HR面。面试后大概1天收到面试结果,面试感觉还可以吧,具体说应该是三轮,第一轮是我接到电话说要准备面试,当时。网上申请面试经历我是通过boss直聘上面投的简历,只有一面,一共三个人面试我,hr,一个什么老总和一。

华鑫的专栏 828

为什么使用Zookeeper

1、为什么使用Zookeeper Zookeeper是一个文件系统的数据结构 (1) Zookeeper是Googel的Chubby的一个开源实现,是Hadoop的分布式协调服务,它包好了一个简单的原语,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 (2) Zookeeper本身也允许单机模式,但是一台服务器很难表达出zookeeper的强...

悟能的师兄的专栏 7770

程序员的成长之路

1. 初识编程   清楚的记得2008年上大学,当时学的第一门编程语言是汇编语言,第一堂课上,老师就说这个学科的挂科率是最高的,大家做好心理准备,后来证明,这并不是下马威,因为真的有很多同学挂在了汇编上面。   由于觉得汇编的交互性不好,所以后来学习 visual c++ 课程的时候,异常喜欢,虽然也选修了java编程,但是只介绍了简单的语法,现在只记得那个老师年轻帅气了,哈哈哈哈。因为觉得 c++ 的指针、链表都蛮有意思的,就在课余时间对 c++ 侧重进行了学习和了解,当时 c++ 的书是学院编写的,后来

小爱玄策 1722

普工转行PLC工程师:可行性分析与学习路径

工业自动化领域的PLC(可编程逻辑控制器)技术是制造业转型的核心驱动力,其本质是通过逻辑编程实现设备控制。作为工业计算机的典型代表,PLC采用梯形图等图形化编程语言,大大降低了技术门槛。对于具备工厂经验的普工而言,转行PLC工程师具有独特优势——熟悉现场设备流程正是编写优质控制程序的关键。从继电器逻辑到定时器应用,系统学习3-4个月即可胜任基础岗位。在丹东等工业城市,PLC技术人员的薪资普遍比产线工人高30%-50%,通过二手市场获取FX系列PLC套装即可开始实操训练。掌握PLC编程不仅能参与自动化产线改造

cmff98425的博客 415

ZooKeeper学习第八期——ZooKeeper伸缩性

一、ZooKeeper中Observer 1.1 ZooKeeper角色 经过前面的介绍,我想大家都已经知道了在ZooKeeper集群当中有两种角色Leader和Follower。Leader可以接受client请求,也接收其他Server转发的写请求,负责更新系统状态。 Follower也可以接收client请求,如果是写请求将转发给Leader来更新系统状态,读请求则由Follower的内...

weixin_34124651的博客 210

全国青少年信息学奥林匹克联赛

基本信息 全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces,简称NOIP)自1995年至2018年已举办24次。每年由中国计算机学会统一组织。 NOIP在同一时间、不同地点以各省市为单位由特派员组织。全国统一大纲、统一试卷。初、高中或其他中等专业学校的学生可报名参加联赛。联赛分初赛和复赛两个阶段。初赛考察通用和实用的计算机科学...

zsbailong的博客 1392

ZooKeeper的作用、应用场景和替代品

ZooKeeper 我想大家应该都略有耳闻,可能你在开发中没有直接使用过,但常用的 Hadoop、HBase、Kafka、Dubbo 等都有使用到 ZooKeeper。那 ZooKeeper 到底起到了什么样的作用,为什么这些框架、系统需要使用 ZooKeeper呢,我们在开发过程中应该如何使用 ZooKeeper,又是否有 ZooKeeper的替代品呢。本文将围绕以上问题,从以下三方面说起: ...

qq_39581763的博客 1261

Java初学者常见五大问题 ,解决你的心结!

—————— 建议收藏观看 —————— 作为最热门的编程语言,Java几乎无处不在,全球有数十亿设备运行着Java,服务器程序大多都会使用Java编写,用来处理每天数以千万计的数据 Java火热,想学Java开发的人也越来越多。Java初学者学习Java,首先要入门,要喜欢Java才能学好Java。但是Java学习初期通常会遇到很多问题 一、能看懂,操作难 这或许是很多Java初学者会遇到的问题。就是看视频、看书时,都能懂,但操作时总是各种不会。这时便需要换一个更加适合自己的学习方法了 二、记忆差 克

编程领域的博客 1491

大学生就业推荐系统的设计与实现(程序+开题报告)(开题报告+源码)

这样的系统可以利用大数据分析和机器学习技术,为大学生提供精准的职业匹配,同时也为用人单位筛选合适的人才,提高双方的效率。研究目的: 本研究的目的在于设计并实现一个集会员管理、用人单位信息、招聘信息发布、岗位类型介绍、个人简历提交、投递信息跟踪、在线咨询互动、咨询回复管理、面试信息安排、通知信息发布等功能于一体的大学生就业推荐系统。主要目的是通过技术手段解决当前大学生就业推荐中存在的问题,为用户提供一个操作简便、安全可靠、功能全面的服务平台,从而提升用户体验和就业推荐服务的整体效率及满意度。

liu10611的博客 2447

机器视觉与PLC职业发展对比:技术本质、市场需求与学习路径全解析

工业自动化是现代制造业的核心技术体系,其核心原理在于通过控制系统与感知技术实现生产流程的精准、高效与智能化。在控制层,可编程逻辑控制器(PLC)作为工业自动化的基石,承担着逻辑控制、顺序执行与设备联动的关键任务,以其高可靠性与实时性保障了生产线的稳定运行。在感知与决策层,机器视觉技术通过图像采集、处理与分析,赋予机器“看”与“懂”的能力,是实现质量检测、精确定位与智能分拣的核心手段,其技术价值在于将非接触式测量与智能化判断引入工业场景,大幅提升生产质量与柔性。从应用场景看,PLC广泛应用于汽车制造、流程工业

weixin_30647065的博客 327

大学生就业信息发布和管理系统(程序+开题报告)(开题报告+源码)

在这种形势下,如何有效地发布和管理就业信息,帮助大学生及时了解市场需求,找到合适的工作,成为了高校、学生和用人单位共同面临的问题。研究目的: 本研究的目的在于设计并实现一个集学生信息、企业信息、招聘信息发布、应聘管理、岗位类别介绍、求职信息查询等功能于一体的大学生就业信息发布和管理系统。主要目的是通过技术手段解决当前大学生就业信息发布和管理中存在的问题,为用户提供一个操作简便、安全可靠、功能全面的服务平台,从而提升用户体验和就业服务的整体效率及满意度。最终成品以下面运行环境。要本源码参考请在文末进行获取!

liu10611的博客 1312

Java基于JAVA的毕业设计管理系统(开题+源码)

6]赵子昂, 黄钧露. JAVA编程在计算机应用软件中的应用特征与技术研究[J]. 电子测试, 2021, (18): 83-84.[2]刘学玉. JAVA编程语言在计算机软件开发中的应用[J]. 电子技术与软件工程, 2022, (01): 57-60.[1]孟维成. 对基于Java语言实现数据库的访问研究[J]. 软件, 2022, 43 (02): 169-171.[4]朱姝. Java程序设计语言在软件开发中的运用初探[J]. 电子测试, 2021, (21): 72-74.

qh605的博客 151

线上面试完整流程 + AI 算法岗自我介绍万能模板

不管校招实习、秋招春招、社招跳槽,线上面试流程基本固定,自我介绍更是开场必考题,说得好直接拉高第一印象,本篇整理标准面试全流程 + 3 套不同风格 AI 专属自我介绍,直接背诵套用,临场不慌、流畅自然。重中之重个人基本信息 + 学历专业 + 技术栈 + 项目经验 + 求职意向,条理清晰说完。面试官您好,我是 XX,目前就读于 XX 专业,本科 / 硕士学历。在校期间系统学习了机器学习、深度学习、计算机视觉相关专业课程,夯实了算法理论基础。

cesske的博客 283

AI招聘筛选技术解析与测试工程师转型指南

自然语言处理(NLP)和计算机视觉(CV)作为AI核心技术,正在重塑招聘行业的筛选流程。通过多模态融合技术,现代招聘系统能够解析简历文本、分析面试微表情,并综合评估候选人匹配度。这些AI应用对软件测试领域提出了新挑战,特别是在算法偏见检测和黑箱系统可解释性方面。测试工程师需要掌握Python编程、统计学基础及AI模型验证工具,转型为兼具技术深度和业务理解的全栈测试专家。随着AR/VR面试等新场景出现,测试矩阵正扩展到动作捕捉延迟、虚拟环境交互等前沿领域。

weixin_34087307的博客 420

数据科学与大数据技术:专业差异、核心课程与职业路径全解析

在数据驱动的时代,理解数据处理的核心概念至关重要。数据科学侧重于通过数学统计和机器学习模型,从数据中提取洞察、发现规律,其价值在于支持预测性分析和智能决策,广泛应用于推荐系统、金融风控等领域。大数据技术则聚焦于分布式系统架构,如Hadoop和Spark,旨在构建高效、稳定、可扩展的数据处理平台与管道,确保海量数据能够被可靠地存储、计算与应用,支撑起各类数据密集型系统的工程实现。本文通过对比数据科学与大数据技术两大专业方向,从培养目标、核心课程到就业场景进行系统辨析,为相关领域的学习者与从业者提供清晰的路径参

weixin_34006468的博客 436

浏览器Cookie迁移实战:从Chrome导出导入登录态全攻略

Cookie是浏览器保存的会话凭证,服务端通过Set-Cookie将登录态种在本地。迁移Cookie本质上是把服务端认可的会话标识搬到新环境,从而免去重复输入账号密码和二次验证的麻烦。在换电脑、切浏览器或重装系统时,掌握Cookie的导出导入技术能显著提升效率。Chrome与Edge同属Chromium内核,存储结构相似,但字段差异(如Domain、SameSite、Secure)常导致迁移失败。通过浏览器扩展或CDP脚本可实现跨浏览器登录态迁移,适用于内网后台、开发环境等场景。本文从原理到实践,梳理Coo

weixin_42533120的博客 339
上一篇: Android Push 开源方案解析
下一篇: 极光推送技术原理:移动无线网络长连接
极光推送
博客等级 码龄14年 109粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值