08-09-Zookeeper客户端使用与经典应用场景

news2024/11/16 19:54:51

Zookeeper 集群模式:
Zookeeper 集群模式一共有三种类型的角色
Leader: 处理所有的事务请求(写请求),可以处理读请求,集群中只能有一个Leader
Follower:只能处理读请求,同时作为 Leader的候选节点,即如果Leader宕机,Follower节点要参与到新的Leader选举中,有可能成为新的Leader节点。
Observer:只能处理读请求。不能参与选举
在这里插入图片描述

Zookeeper分布式锁
非公平锁:
在这里插入图片描述
如上实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接都在对同一个节点进行监听,当服务器检测到删除事件时,要通知所有的连接,所有的连接同时收到事件,再次并发竞争,这就是羊群效应。如何避免呢,我们看下面这种方式。
公平锁:
在这里插入图片描述
如上借助于临时顺序节点,可以避免同时多个节点的并发竞争锁,缓解了服务端压力。种实现方式所有加锁请求都进行排队加锁,是公平锁的具体实现。

前面这两种加锁方式有一个共同的特质,就是都是互斥锁,同一时间只能有一个请求占用,如果是大量的并发上来,性能是会急剧下降的,所有的请求都得加锁,那是不是真的所有的请求都需要加锁呢?答案是否定的,比如如果数据没有进行任何修改的话,是不需要加锁的,但是如果读数据的请求还没读完,这个时候来了一个写请求,怎么办呢?有人已经在读数据了,这个时候是不能写数据的,不然数据就不正确了。直到前面读锁全部释放掉以后,写请求才能执行,所以需要给这个读请求加一个标识(读锁),让写请求知道,这个时候是不能修改数据的。不然数据就不一致了。如果已经有人在写数据了,再来一个请求写数据,也是不允许的,这样也会导致数据的不一致,所以所有的写请求,都需要加一个写锁,是为了避免同时对共享数据进行写操作。

1、读写并发不一致
在这里插入图片描述
2、双写不一致情况
在这里插入图片描述
Zookeeper 共享锁实现原理
在这里插入图片描述
在这里插入图片描述

Zookeeper实现注册中心
什么是注册中心,顾名思义,就是让众多的服务,都在Zookeeper中进行注册,啥是注册,注册就是把自己的一些服务信
息,比如IP,端口,还有一些更加具体的服务信息,都写到 Zookeeper节点上, 这样有需要的服务就可以直接从zookeeper上面去拿,怎么拿呢? 这时我们可以定义统一的名称,比如,User-Service, 那所有的用户服务在启动的时候,都在User-Service 这个节点下面创建一个子节点(临时节点),这个子节点保持唯一就好,代表了每个服务实例的唯一标识,有依赖用户服务的比如Order-Service 就可以通过User-Service 这个父节点,就能获取所有的User-Service 子节点,并且获取所有的子节点信息IP,端口等信息),拿到子节点的数据后Order-Service可以对其进行缓存,然后实现一个客户端的负载均衡,同时还可以对这个User-Service 目录进行监听, 这样有新的节点加入,或者退出,Order-Service都能收到通知,这样Order-Service重新获取所有子节点,且进行数据更新。这个用户服务的子节点的类型为临时节点。 第一节课有讲过,Zookeeper中临时节点生命周期是和SESSION绑定的,如果SESSION超时了,对应的节点会被删除,被删除时,Zookeeper 会通知对该节点父节点进行监听的客户端, 这样对应的客户端又可以刷新本地缓存了。当有新服务加入时,同样也会通知对应的客户端,刷新本地缓存,要达到这个目标需要客户端重复的注册对父节点的监听。这样就实现了服务的自动注册和自动退出。

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

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

相关文章

实现 effect reactive 依赖收集 触发依赖

03_01_实现 effect & reactive & 依赖收集 & 触发依赖 一、reactivity happy path 首先我们知道reactivity的happy path(核心逻辑)就是: 通过reactive定义响应式变量,然后通过effect去收集响应式变量的依赖,然后实现…

20221225英语学习

今日新词 giant adj.巨大的;超群的 appreciate v.欣赏,赏识;感激;理解,意识到;增值 invasive adj.侵入的,侵略的;开刀的 dispel vt.驱散,驱逐;消除 equa…

【2008NOIP普及组】T4. 立体图 试题解析

【2008NOIP普及组】T4. 立体图 试题解析 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 778 通过数: 542 【题目描述】 小渊是个聪明的孩子,他经常会给周围的小朋友讲些自己认为有趣的内容。最近,他准备给小朋友讲解立体图,请你帮他画出立体图。 小渊有一块面…

Windows下安装RabbitMQ

目录 安装Erlang环境 下载地址:https://erlang.org/download/ 下载后直接双击.exe安装即可。 安装完成后,创建环境变量。 安装完成后创建一个名叫ERLANG_HOME的环境变量,其指向erlang的安装目录; 将%ERLANG_HOME%\bin加入到Pa…

node.js+uni计算机毕设项目基于微信小程序订餐系统(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

2022 IoTDB Summit:Dr.Feinauer《Apache IoTDB 在德国汽车生产线多级数据同步中的应用实践》...

12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…

【金猿人物展】树根互联COO黄路川:从“灯塔工厂”到“数字领航”,工业互联网操作系统助推新型工业化...

‍黄路川本文由树根互联联合创始人、COO黄路川撰写并投递参与“数据猿年度金猿策划活动——2022大数据产业趋势人物榜单及奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业大数据时代,数字资产已经成为工业企业最核心的资产,成为企业数字化…

并发知识体系大全:贡献一波我平时学习/总结笔记/思维脑图+线程

这个世界都是并发的,编程里更是这样,俗话说:并发知识大,一口吃不下。想成为一名优秀的 Java 开发,学好并发,绝对是你走入高薪行列的必备能力之一。 并发涉及的知识点,其实十分琐碎。学完记不住…

2022圣诞代码(圣诞树+圣诞老人)

文章目录前言使用方法圣诞树圣诞老人前言 圣诞节里的喜悦,飘扬万里;圣诞树上的星星,璀璨耀眼;圣诞星空绽放的烟花,迎来吉祥;圣诞钟声奏响的旋律,传递欢乐;圣诞老人送给你的礼物&…

数据结构---位图算法

位图算法将数据存储到位图中查询数据是否在位图中JAVA代码问题扩展这里所说的位图并不是像素图片的位图&#xff0c;而是内存中连续的二进制位&#xff08;bit&#xff09;所组成的数据结构&#xff0c; 该算法主要用于对大量整数做去重和查询操作。System.out.println(1L <…

地质灾害安全监测预警解决方案

一、方案背景 我国地质和地理环境复杂&#xff0c;气候条件时空差异大&#xff0c;地质灾害种类多、分布广、危害大&#xff0c;是世界上地质灾害最严重的国家之一。地质灾害来源于自然和人为作用下对地质环境的灾难性后果&#xff0c;主要包括崩塌、滑坡、泥石流、地面塌陷和…

RV1126笔记十六:吸烟行为检测及部署<三>

若该文为原创文章,转载请注明原文出处。 训练并测试(windows) 一、yolov5安装 1、下载rk优化后的yolov5 git clone https://github.com/airockchip/yolov5.git 下载后,我是放到E:\miniconda3\envs目录下,miniconda3是安装miniconda的目录。可以放到其他地方,后续操作需要…

语音处理的算法和方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python pandas库|任凭弱水三千,我只取一瓢饮(7)

上一篇链接&#xff1a; Python pandas库&#xff5c;任凭弱水三千&#xff0c;我只取一瓢饮&#xff08;6&#xff09;_Hann Yang的博客-CSDN博客 to_系列函数&#xff1a;22个 &#xff08;12~22&#xff09; Function12 to_numpy(self, dtype: NpDtype | None None, co…

《网线制作》

前言&#xff1a; 随着计算机的快速发展&#xff0c; 现代 社会人们已经离不开网络&#xff0c;网络拉近了人们的距离&#xff0c;给人们提供了一个无需面对面就能够进行交流的平台&#xff0c;如今&#xff0c;网络已经渗透到生活的方方面面&#xff0c;购物、聊天、谈工作等…

【图卷积网络和知识提取】

When Pansharpening Meets Graph Convolution Network and Knowledge Distillation &#xff08;当全色锐化遇到图卷积网络和知识提取时&#xff09; 空洞卷积(Dilated/Atrous Convolution) 在本文中&#xff0c;我们提出了一种新颖的用于全色锐化的图卷积网络&#xff08;gra…

7. 表现层数据封装

表现层数据封装[TOC](表现层数据封装)1. 表现层响应数据的问题2. 定义ResponseResults类封装响应结果3. 定义Code类封装响应码4. 表现层数据封装返回Result对象5.postman发送请求结果1. 表现层响应数据的问题 ​ 目前表现层增删改方法返回true或者false表示是否成功&#xff0…

Kubernetes网络自学系列 | 网络虚拟化基石:network namespace

素材来源&#xff1a;《Kubernetes网络权威指南》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;Kubernetes网络自学系列 | 汇总_COCOgsta的博客-CSDN博客 1.1 网络虚拟化基石&#xff1a;netw…

【Pandas入门教程】如何计算汇总统计数据

如何计算汇总统计数据 来源&#xff1a;Pandas官网&#xff1a;https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 笔记托管&#xff1a;https://gitee.com/DingJiaxiong/machine-learning-study 文章目录如何计算汇总统计数据导包数据准备【1】如何…

【学习Seata1.6源码#03】TC 集群具有高可用架构的秘密

一、背景 TC 集群具有高可用架构&#xff0c;应用到集群是这样一个间接的关系&#xff1a;应用 -》事务分组 -》TC 集群&#xff0c;应用启动后所指定的事务分组不能变&#xff0c;可通过配置中心变更事务分组所属的 TC 集群&#xff0c;Seata 客户端监听到这个变更后&#xf…