01,大数据总结,zookeeper

1 ,zookeeper :概述

1.1,zookeeper:作用

1 ,大数据领域 :存储配置数据
 
  例如:hadoop 的 ha 配置信息,hbase 的配置信息,都存储在 zookeeper
 
2 ,应用领域 :分布式锁
 
  分布式锁,虽然 zk 也能做,但是更加推荐使用 redis ,更合适。

1.2,zookeeper:开发 - java

java 语言开发的。

1.3,qps :10w

1 ,3 台主机的 zk 集群,qps 可以达到 :10w 左右。

1.4 ,zk 会脑裂吗 :

不会

1.5,推荐 :很好的文章

https://blog.csdn.net/qq_37555071/article/details/114609145?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221EFE1594-87AD-4F31-8393-3111ECF369D5%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1EFE1594-87AD-4F31-8393-3111ECF369D5&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-114609145-null-null.142^v100^pc_search_result_base4&utm_term=zookeeper%20zxid&spm=1018.2226.3001.4187

2 ,zookeeper :架构

2.1,架构图 :

在这里插入图片描述

2.2,leader :主节点

1 ,角色 :
 
  集群的主节点
 
2 ,作用 :
 
  1 ,处理客户端请求 :读,写。
 
  2 ,服务器内部 :调度者,将写请求,发送给每个系节点。
 
  3 ,事务:保证事务处理的有序性。

2.2,follower :从节点

1 ,角色 :
 
  集群的从节点
 
2 ,作用 :
 
  1 ,处理客户端请求 :读。
 
  2 ,写请求 :转发给 leader 处理。
 
  3 ,选举:leader 挂了,follower 要参与 leader 选举。
 
  4 ,存储:leader 存储数据的时候,需要每个从节点,根据leader提议,在本地存储数据。

2.3,observer :观察者节点

1 ,角色 :
 
  集群的从节点
 
2 ,作用 :
 
  1 ,处理客户端请求 :读。
 
  2 ,写请求 :转发给 leader 处理。
 
  3 ,选举:不参与
 
  4 ,同步:从主节点同步数据。

3 ,zookeeper :数据处理

3.1,最终一致性 :

意义 :数据同步不及时,但是最终,数据是一致的。

3.2,获取 :最新数据

1 ,由于 :
 
  zookeeper 的数据更新,不及时。
 
2 ,client 想获取最新数据,需要在读取数据前,先调用这个接口 :
 
  sync()
 
3 ,sync() 作用 :
 
  1 ,目的 :client 连接的当前从节点,向 leader 发请求,需要同步最新数据。
 
  2 ,leader 响应 :如果没有心数据,直接返回响应【Leader.SYNC】
 
    如果有新数据,需要处理完最新数据,才返回响应【Leader.SYNC】,从节点收到响应后,将最新数据,返回给 client 。

3.3,数据操作 :写入流程,leader

1 ,leader 接收请求
 
2 ,leader 发送 proposal 给 follower
 
3 ,follower 收到请求记录 txlog、snapshot、
 
4 ,follower 发送 ack 给 leader
 
5 ,commit :leader 收到 ack 后进行 commit,并且通知所有的【follower,observer】
 
6 ,leader 返回成功给客户端

3.4,数据操作 :写入流程,follower

1 ,follower 接受请求,解析请求。
 
2 ,转发 :follower 将写请求转发给 leader
 
3 ,leader接收请求
 
4 ,leader 发送 proposal 给 follower
 
5 ,follower 收到请求记录 txlog、snapshot、
 
6 ,follower 发送 ack 给 leader
 
7 ,commit :leader 收到 ack 后进行 commit,并且通知所有的【follower,observer】
 
8 ,follower 返回成功给客户端。

3.5,数据操作 :写入流程,observer

1 ,observer 接受请求,解析请求。
 
2 ,转发 :observer 将写请求转发给 leader
 
3 ,leader接收请求
 
4 ,leader 发送 proposal 给 follower
 
5 ,follower 收到请求记录 txlog、snapshot、
 
6 ,follower 发送 ack 给 leader
 
7 ,commit :leader 收到 ack 后进行 commit,并且通知所有的【follower,observer】
 
8 ,observer 返回成功给客户端。

3.6,数据操作 :写入流程,注意

1 ,leader 发送 proprsal 决议 :
 
  只给 follower 发送

3.7,数据存储 :内存 + 磁盘

1 ,内存数据 :
 
  1 ,数据结构 :3 种
    
    DataNode :数据节点,最小单元,存储数据
    
    DataTree :树形结构中的节点,是 map [ path , node ]
    
         临时节点,也是 map [ sessionId , node ]
    
    ZKDataBase :内存数据库,管理所有会话和数据。
    
           定期备份 :定时的将内存数据,同步到磁盘。
           
           zk 重启 :从磁盘恢复数据到内存。
 
2 ,磁盘数据 :快照
 
  定期快照
 
3 ,磁盘数据 :日志
 
  每个请求,都会立刻产生日志流水

3.8,快照 :步骤

1 ,目的 :将所有数据,一次性,同步到磁盘
 
2 ,检查 :每进行一次事务日志记录之后,Zookeeper都会检测当前是否需要进行数据快照。
 
3 ,快照注意 :尽量避免 Zookeeper 集群中的所有机器在同一时刻进行数据快照。
 
4 ,快照时机 :
  
  1 ,10w 个事务性日志流水
  
  2 ,事务文件大小 :4g
 
5 ,异步线程:创建单独的异步线程来进行数据快照以避免影响Zookeeper主流程。
  
6 ,快照数据文件名:Zookeeper根据当前已经提交的最大ZXID来生成数据快照文件名。
  
7 ,数据序列化:首先序列化文件头信息,然后再对会话信息和 DataTree 分别进行序列化,同时生成一个Checksum,一并写入快照数据文件中去。

3.9,事务 :zxid

1 ,事务提交流程 :
 
  1 ,初始化:当一个节点收到一个事务请求时,它会将事务请求发送给Leader。
  
  2 ,提交:Leader会将事务请求发送给其他节点,并等待其他节点的确认。
  
  3 ,确认:当其他节点收到事务请求后,它们会对事务进行处理,并将处理结果发送回Leader。
  
  4 ,完成:当Leader收到足够多的确认后,它会将事务提交完成。
  
2 ,zxid :
  
  1 ,类型 :long
  
  2 ,意义 :每个事务操作,成功后,zxid 自增 1

4 ,zookeeper :数据 - znode

4.1,数据结构 :树形结构

zookeeper 数据存储在树形结构上

4.2,znode :数据节点

1 ,znode 节点 :
 
  存储数据 :例如,abcde
 
  路径 :例如,/a/b/c/d

4.3,znode :数据大小 - 1m

每个 znode ,只能存储最多 1m 数据

4.4,znode :版本号,乐观锁

1 ,znode 数据 :有版本号的
 
  1 ,目的 :乐观锁,防止多线程的误操作
  
  2 ,以下操作 :需要附加版本号
 
    setData:更新znode的数据
    
    delete:删除指定znode
 
    checkExists:检查指定znode是否存在
 
    getChildren:获取指定znode的子节点列表
 
    getData:获取指定 znode 的数据
 
2 ,乐观锁 :
 
  1 ,效果 :谁先抢到数据的版本号,就让版本号 +1 ,其它线程,版本号不对,操作失败。
 
  2 ,性能 :比悲观锁,快
  
  3 ,为什么快 :尽早发现自己版本号不对,尽早做别的决策

4.4,znode :watcher - 观察者

1 ,可监听的事件 :4 种
 
  节点创建
 
  节点删除
 
  节点数据改变
 
  节点的子节点列表发生变更。
 
2 ,监听器 :特点
 
  1 ,一次性 :每次注册监听器,只能粗发一次
 
  2 ,触发机制 :回调函数。
 
  3 ,通知顺序 :按照监听器的注册顺序,依次触发。
 
  4 ,修改触发 :版本号,不看数据内容,只看数据版本。

4.5,znode :节点类型

1 ,持久节点(PERSISTENT)
  
  存储 :普通数据
  
2 ,持久顺序节点(PERSISTENT_SEQUENTIAL)
 
  存储 :序列自增数据
 
3 ,临时节点(EPHEMERAL)
 
  存储临时,普通数据
 
4 ,临时顺序节点(EPHEMERAL_SEQUENTIAL)
 
  存储临时,序列自增数据

5 ,zookeeper 应用 :分布式锁

5.1 ,目的 :多线程,保护数据

1 ,例如 :mysql 的某个数据的操作,只能有一个系统访问,但是,有多个系统,都在使用 mysql ,怎么办 ?
 
2 ,操作步骤 :
  
  1 ,选择路径 :例如 /app/kd/qcs
  
    意义 :将多个线程,创建的节点,都放这里
  
  2 ,创建 :临时顺序节点
  
    意义 :每个线程都创建一个节点,这些节点,序号自增
  
    效果 :/app/kd/qcs/lock_00000001
       /app/kd/qcs/lock_00000002
       /app/kd/qcs/lock_00000003
        
  3 ,获取锁 :
    
    序列编号最小的,得到锁。
  
  4 ,注册监听 :
    
    其它节点,注册监听事件,监听比他小 1 的节点,消失事件。
  
  5 ,释放锁 :
  
    边界代码【线程安全部分】执行结束,删除临时节点,释放锁。
  
    触发 :watcher 事件,下一个线程,执行监听逻辑。
  
  6 ,下一个线程 :获取锁
  
    检查编号,我是不是最小的,如果是,我开始执行代码。

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

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

相关文章

TDengine 与飞腾腾锐 D2000 完成兼容互认证,推动国产软硬件深度融合

在国家信息安全和自主可控技术日益受到重视的背景下,国产软硬件的发展已成为推动数字经济的重要力量。随着全球科技竞争加剧,企业在选择技术解决方案时,越来越倾向于采用国产产品以降低对外部技术的依赖。这一趋势不仅是为了确保数据安全与隐…

信息安全数学基础(14)欧拉函数

前言 在信息安全数学基础中,欧拉函数(Eulers Totient Function)是一个非常重要的概念,它与模运算、剩余类、简化剩余系以及密码学中的许多应用紧密相关。欧拉函数用符号 φ(n) 表示,其中 n 是一个正整数。 一、定义 欧…

模拟视频推到WVP推流列表

效果 1. wvp创建RTMP 2. 使用ffmpeg将本地的视频转为rtmp ffmpeg -re -i F:rtsp\123.mp4 -c copy -f flv rtmp://192.168.1.237:1935/cd/10001?sign=Z4Y3eYeSg

标准库标头 <bit>(C++20)学习

<bit>头文件是数值库的一部分。定义用于访问、操作和处理各个位和位序列的函数。例如&#xff0c;有函数可以旋转位、查找连续集或已清除位的数量、查看某个数是否为 2 的整数幂、查找表示数字的最小位数等。 类型 endian (C20) 指示标量类型的端序 (枚举) 函数 bit_ca…

Android权限适配

Android权限适配 动态权限 背景 从Android6.0版本开始google将权限分为普通权限和特殊权限&#xff0c;app必须在AndroidManifest.xml添加引用权限的语句。 在安装apk时安卓会将普通权限授予该app&#xff0c;但特殊权限需要运行时申请。 安卓按照权限类别分为权限组和权限…

【第36章】Spring Cloud之Seata分布式事务

文章目录 前言一、架构图1. 介绍2. 项目结构3. 功能描述 二、用例1. 准备1.1 系统表1.2 业务表1.3 初始化数据 2. 项目搭建2.1 项目结构2.2 主要依赖2.3 主要配置 三、主要业务代码1. 仓储服务1.1 controller1.2 service1.3 dao 2. 订单服务1.1 controller1.2 service1.3 dao 3…

Mac清理其他文件:释放存储空间的高效指南

每个Mac用户都可能遇到存储空间不足的问题&#xff0c;尤其是当“其他”文件积累到一定体积时。在Mac上&#xff0c;“其他”文件通常包括各种系统文件、缓存、文档以及不被归类为应用程序、照片、电影或音乐的其他类型的文件。这些文件往往不易被注意&#xff0c;但逐渐占用了…

【笔记】CCF直播:《如何在国际会议上有效交流》(2024-9-15)

目录 一、提问的勇气二、提问什么三、其他主题的报告为什么听四、会议前怎么读大量论文&#xff1f;五、workshop为什么参加&#xff1f;Poster环节&#xff1f;六、提问环节七、其他 今天听了《如何在国际会议上有效交流》的直播讲座&#xff0c;记录一些笔记。 一、提问的勇…

我又做了一个国标GB28181设备模拟器的Windows版本,让国标28181开发更简单,不用再费劲弄个摄像机来调试国标GB28181开发了

之前我搞过一个《EasyGBD国标GB28181设备端模拟器帮助测试国标GB28181平台&#xff08;EasyGBD-&#xff1e;EasyGBS&#xff09;》&#xff0c;当时&#xff0c;主要是在安卓手机上&#xff0c;用摄像机的本地摄像头来做为视频源、用摄像机的麦克风做为音频源&#xff0c;对外…

微服务网关终极进化:设计模式驱动的性能与可用性优化(四)

时间&#xff1a;2024年09月12日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋推荐一下&#xff0c;小蒋希望遇到一个认真做事的团队&#xff0c;一起努力…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)

一、预览 实现功能:通过vue标题栏按钮锁屏和关机 1.1 预览 1.2 代码 锁屏代码csharp LockWorkStation() 关机代码chsharp 注意vue代码参数和此参数一致(0/1/2) 方法ExitWindowsEx()

python 读取excel

一、安装依赖&#xff1a; pandas 二、新建excel 示例数据&#xff1a;students.xlsx 三、定义类&#xff1a;student.py Student class Student:def __init__(self, name, sex):self.name nameself.sex sexdef show(self):print(f姓名&#xff1a;{self.name} 性别&#…

828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统

828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统 1. 部署环境说明2. 部署基础环境2.1. 操作系统基本配置2.2. 部署Nginx2.3. 部署MySQL2.4. 部署PHP 3. 部署GLPI资产管理系统 1. 部署环境说明 本次环境选择使用华为云Flexus云服务器X实例&#xff0c;因为其具有高…

初学Linux(学习笔记)

初学Linux&#xff08;学习笔记&#xff09; 前言 本文跳过了Linux前期的环境准备&#xff0c;直接从知识点和指令开始。 知识点&#xff1a; 1.目录文件夹&#xff08;Windows&#xff09; 2.文件内容属性 3.在Windows当中区分文件类型是通过后缀&#xff0c;而Linux是通过…

【Linux下的cpp】编译调试(gcc、g++、gdb)

【Linux下的cpp】编译调试&#xff08;gcc、g、gdb&#xff09; 文章目录 【Linux下的cpp】编译调试&#xff08;gcc、g、gdb&#xff09;简述gcc、g、gdb编译过程g 编译参数命令行编译演练1、直接编译2、生成库文件并编译链接静态库并生成可执行文件链接动态库生成可执行文件 …

Mistral AI再创新高,Pixtral 12B多模态模型强势来袭

前沿科技速递&#x1f680; 近日&#xff0c;Mistral AI 发布了其首款多模态大模型——Pixtral 12B。作为一款具有语言与视觉处理能力的模型&#xff0c;Pixtral 12B 支持高达10241024像素的图像&#xff0c;具备强大的文本生成、图像理解与生成能力&#xff0c;能够处理复杂的…

Dubbo从入门到实战

Dubbo从入门到实战 1、为什么需要dubbo 很多时候&#xff0c;其实我们使用这个技术的时候&#xff0c;可能都是因为项目需要&#xff0c;所以&#xff0c;我们就用了&#xff0c;但是&#xff0c;至于为什么我们需 要用到这个技术&#xff0c;可能自身并不是很了解的&#x…

【C++STL简介】——我与C++的不解之缘(八)

前言 学过了C的模版&#xff0c;接下来学习C中的STL&#xff08;标准模版库&#xff09;&#xff0c;先来了解一下STL是啥 一、什么是STL STL&#xff08;standard template libaray 标准模版库&#xff09;&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的…

Zookeeper工作机制、特点、数据结构、应用场景、配置参数解读

ZK工作机制 从涉及模式角度来理解&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xff0c;负责存储和管理大家都关心的数据&#xff0c;然后接受观察者的注册&#xff0c;一旦这些数据的状态发生变化&#xff0c;zk就负责通知已在zk上注册的那些观察者做出相应…

【FATFS】FATFS简介及下载

1、FATFS简介 FatFs 是一个针对嵌入式系统开发的通用文件系统模块&#xff0c;主要用于支持 FAT 文件系统。它最初由 ChaN 开发&#xff0c;并被广泛应用于嵌入式设备上。FatFs 以其轻量级、可配置和设备无关的特性著称&#xff0c;支持 FAT12、FAT16、FAT32 以及 exFAT 文件系…