Zookeeper(动物园管理员)为什么需要他?分布式协调系统

需求推动事物的前进,所有相关技术都是在某些需求的驱动下才孕育而出,而且不断的为了满足需求,不得不进一步加强完善,上来就说zookeeper是啥,作用是啥,干了什么,是开源的分布式应用协调系统”blabla,到底什么是分布式协调,为什么分布式就需要协调。不懂,也不见得好理解、好记忆,还是从需求分析来了解他的由来和作用,了解这个过程,在自己后期设计实现产品的时候,也会想的多一点。

为什么需要 Zookeeper

举个例子,来说明说明需求驱动技术不断升级完善加强。
一个团队里面,需要一个leader,leader是干嘛用的?管理什么的咱不说,就说如果外面的人,想问关于这个团队的一切事情,首先就会去找这个leader,因为他知道的最多,而且他的回答最靠谱。
比如产品经理小饼过来要人,作为leader,老吕发现小耀最近没有项目安排,于是把小耀安排给了小饼的项目;
过了一会,另一个产品小西也过来要人,老吕发现刚刚把小耀安排走了,已经没人,于是就跟小西说,人都被你们产品要走了,你们产品自己去协调去。
如果老吕这时候忘了小耀已经被安排走了,把小耀也分配给小西,那到时两个产品就要打架了。
这就是leader在团队里的协调作用
同样的,在分布式系统中,也需要这样的协调者,来回答系统下各个节点的提问
比如我们搭建了一个数据库集群,里面有一个Master,多个Slave,Master负责写,Slave只读,我们需要一个系统,来告诉客户端,哪个是Master。
直观的想法,我们把这个信息写到一个Java服务器的内存就好了,用一个map,<master,  master机器对应的ip>

但是别忘了,这是个单机,一旦这个机器挂了,就完蛋了,客户端将无法知道到底哪个是Master。
于是开始进行拓展,拓展成三台服务器的集群。

这下问题来了,如果我在其中一台机器修改了Master的ip,数据还没同步到其他两台,这时候客户端过来查询,如果查询走的是另外两台还没有同步到的机器,就会拿到旧的数据,往已经不是master的机器写数据。
所以我们需要这个存储master信息的服务器集群,做到当信息还没同步完成时,不对外提供服务,阻塞住查询请求,等待信息同步完成,再给查询请求返回信息。
这样一来,请求就会变慢,变慢的时间取决于什么时候这个集群认为数据同步完成了。
假设这个数据同步时间无限短,比如是1微妙,可以忽略不计,那么其实这个分布式系统,就和我们之前单机的系统一样,既可以保证数据的一致,又让外界感知不到请求阻塞,同时,又不会有SPOF(Single Point of Failure)的风险,即不会因为一台机器的宕机,导致整个系统不可用。

这样的系统,就叫分布式协调系统。谁能把这个数据同步的时间压缩的更短,谁的请求响应就更快,谁就更出色,Zookeeper就是其中的佼佼者。

它用起来像单机一样,能够提供数据强一致性,但是其实背后是多台机器构成的集群,不会有SPOF。

如果把各个节点比作各种小动物,那协调者,就是动物园管理员,这也就是Zookeeper名称的由来了,从名字就可以看出来它的雄心勃勃。

ZooKeeper: A Distributed Coordination Service for Distributed Applications
翻译一下:一个分布式应用的分布式协调服务

本文就只说zookeeper的由来和作用。具体实现原理以及内部实现的设计等,还再查具体的。

专业精简描述

Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架, 它负责存储和管理大家 都关心的数据, 然后接受观察者的注册, 一旦这些数据的状态发生变化, Zookeeper就将负责通知已经在 Zookeeper上注册的那些观察者做出 相应 的反 应 , 从而 实现集群中类似Master/Slave管理模式

动物园管理者就是那个拿铁锹的男人,里面的大象蜜蜂啥的都是弟弟。

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

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

相关文章

[附源码]JSP+ssm计算机毕业设计小西商店的设计与开发8yd00【源码、数据库、LW、部署】

项目运行 项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xf…

【小西】优化生日品同步网易严选功能,使其支持多SPU对多SKU关系

目录 前言思路代码实现实体ThemeActivityGift&#xff1a;spuId由 String类型变为JSONArrayThemeActivityGiftServiceImpl改造handleYxGiftByOperation&#xff1a;保存的是严选的生日品checkSpuIds&#xff1a;校验SPU有效性checkSpuIdExist&#xff1a;校验单个spuId是否存在…

【小西】通过商品渠道新增咪咕埋点功能,ThreadUtil.execAsync()线程异步

前言 通过商品渠道新增咪咕埋点功能&#xff1a;当用户通过小西访问了咪咕相关的商品时&#xff0c;需要把这访问记录下来&#xff0c;发送给咪咕方。 实现 打算在咪咕商品api里写实现逻辑。因为小西是访问的第三方接口&#xff0c;可能会出现一些不可控因素&#xff0c;如&…

【小西】同步咪咕订单给咪咕方(写接口给第三方)

同步咪咕订单给咪咕方 前言思路实现1、定义请求体和响应信息MiGuOrderSyncReqMiGuOrderSyncResp 2、nacos定义好咪咕相关配置信息3、同步咪咕参数配置4、MiGuOrderSyncControl5、MiGuOrderSyncService6、MiGuOrderSyncServiceImplCreateAscIISignUtil 生成参数 字典排序 签名Hm…

【小西】优化若依导出功能,若依继承导出

前言 现需求是在原有的导出功能基础上&#xff0c;新增两列。 实现 因为新增两列不是数据库表中字段。因此&#xff0c;需要需要建立一个VO类。 原本想用若依继承导出&#xff0c;如下所示&#xff1a; Data public class ThemeActivityUserVO extends ThemeActivityUser…

极光尔沃A6-3d打印机体验

第一次使用3d打印机来打印模件&#xff0c;打印的是机械臂夹爪部位的小零件&#xff0c;设计的效果图如下图1所示。 图1&#xff1a;设计的夹爪部位原图 1、模件的设计 本模件使用的是solidworks软件进行的设计&#xff0c;当然可以使用其他的软件设计。最终保存的时候要以.st…

微信小游戏开发新手教程1-人人都能做游戏

如果你正在阅读这篇文章&#xff0c;那么你就是我所说的“人人”了。在此我默认你符合如下的几个条件&#xff1a; 有一定的阅读理解能力对做游戏有一定的兴趣&#xff08;否则你为什么要看这篇文章呢&#xff09;有一台电脑&#xff08;做游戏至少需要一台电脑&#xff09; …

一起用Go做一个小游戏(下)

打包资源 使用file2byteslice包我们可以将图片和config.json文件打包进二进制程序中&#xff0c;之后编译生成一个二进制程序。然后拷贝这一个文件即可&#xff0c;不用再拷贝图片和其他配置文件了。 golang有很多第三方包可以将打包资源&#xff0c;原理其实很简单——读取资源…

chatgpt赋能python:Python简单小游戏制作教程——让你学会编写游戏代码

Python简单小游戏制作教程——让你学会编写游戏代码 Python是一种高级编程语言&#xff0c;越来越受欢迎&#xff0c;因为它易于学习和使用&#xff0c;而且灵活性非常高。在这篇文章中&#xff0c;我们将教你如何用Python编写一个简单的小游戏。让我们开始吧&#xff01; 需…

ChatGPT-4终究会取代人类嘛?

随着人工智能技术的迅速发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;已经成为了一个热门领域。其中&#xff0c;ChatGPT-4是一个备受瞩目的自然语言处理工具。在2022年高考语文中&#xff0c;ChatGPT-4表现出色&#xff0c;说明它在自然语言处理领域有很强的实力。…

宋宝华: 僵尸进程的成因以及僵尸可以被“杀死”吗?

僵尸不可能被杀死&#xff0c;因为它已经死了&#xff0c;不存在再死一次的问题。死的对立面是活&#xff0c;死者已死。只有活的进程才可能被杀死。 什么是僵尸 首先要明确一点&#xff0c;僵尸进程的含义是&#xff1a;子进程已经死了&#xff0c;但是父进程还没有wait它的一…

僵尸进程zombie与孤儿进程orphan

代码已上传至https://github.com/gatieme/AderXCoding/tree/master/system/unix/zombie 问题提出 以前在学习《unix环境高级编程》进程时候&#xff0c;提到孤儿进程和僵尸进程&#xff0c;但是一直对这两个概念比较模糊。于是今天做了一些测试程序,并把这些记录下来. 僵尸进程…

僵尸进程以及如何处理僵尸进程

僵尸进程&#xff1a;就是已经结束了的进程&#xff0c;但是没有从进程表中删除。太多了会导致进程表里面条目满了&#xff0c;进而导致系统崩溃&#xff0c;倒是不占用其他系统资源。最后有defunct的标记&#xff0c;就表明是僵尸进程。 今天配置Redis的时候结束停止Redis服务…

僵尸进程的一点玩法

僵尸进程的一点玩法 前言被忽略的RundownProtectionExAcquireRundownProtection 应用总结 前言 这几天在看WRK的时候&#xff0c;偶然间发现的一个东西&#xff0c;逆向之后&#xff0c;发现了个僵尸进程的玩法。目前菜鸡一枚&#xff0c;有说的不准确的地方&#xff0c;请大家…

PAT——1094 谷歌的招聘

2004 年 7 月&#xff0c;谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌&#xff08;如下图&#xff09;用于招聘。内容超级简单&#xff0c;就是一个以 .com 结尾的网址&#xff0c;而前面的网址是一个 10 位素数&#xff0c;这个素数是自然常数 e 中最早出现的 10 位连续…

PTA—7-5 谷歌的招聘

实际上这题是不难的&#xff0c;甚至说有点简单&#xff0c;连我这样的小菜比都可以顺利的AC。 废话不多说来看题目。 2004 年 7 月&#xff0c;谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌&#xff08;如下图&#xff09;用于招聘。内容超级简单&#xff0c;就是一个以…

AI对话AI才是正解?KAUST研究团队提出基于角色扮演的大模型交互代理框架CAMEL

电影《盗梦空间》中有这样一句非常经典的台词&#xff1a; “世上最具有可塑性的寄生虫是什么&#xff1f;是人类的想法。人类大脑中一个简单的想法&#xff0c;就可以建立一座庞大的城市。有时一个想法也可以改变世界&#xff0c;并改写一切规则&#xff0c;这就是我为什么要…

chatGpt的快捷使用

首页的界面&#xff0c;非常好看&#xff0c;有我经常使用的入口 第一步&#xff1a;打开edge浏览器 第二步&#xff1a;右上角的扩展程序 第三步&#xff1a;点击 扩展 第四步&#xff1a; 第五步&#xff1a; 第六步&#xff1a; 第七步&#xff1a; 新打开Tab页&#xf…

windows下通过远程桌面访问linux图形界面

一、安装epel库 epel库安装之前无法使用yum install xrdp命令安装xrdp 命令&#xff1a;yum install epel-release之后会自动匹配对应版本的rpm包&#xff0c;并解决依赖关系进行安装。 二、安装xrdp xrdp作为linux的图形化界面 1.命令&#xff1a;yum install xrdp2.开启…

如何在Mac上快速显示桌面以便快速访问

macOS 环境中充满了可用于执行有用任务的快捷方式和手势。其中之一被简单地命名为“显示桌面”。当您打开一大堆应用程序窗口时&#xff0c;这个方便的功能可以为您节省宝贵的时间。一起来看看如何在Mac上快速显示桌面的方法吧。 1.使用触控板手势 触控板手势可能很难描述&…