先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
正文
- * [(1)snapCount](#1snapCount_182)
* [(2)日志清理](#2_188)
- [4、什么时候触发数据快照](#4_197)
- * [(1)事务日志写入数量达到阈值snapCount](#1snapCount_201)
* [(2)新Leader同步数据](#2Leader_209)
+ [五、ZooKeeper启动数据初始化和同步](#ZooKeeper_215)
+ - [1、加载并解析快照日志文件](#1_219)
- * [(1)加载最新快照文件](#1_223)
* [(2)解析快照文件](#2_231)
* [(3)获取最新ZXID(zxid\_for\_snap)](#3ZXIDzxid_for_snap_235)
- [2、事务日志进行数据修正](#2_241)
- * [(1)获取zxid\_for\_snap之后提交的事务](#1zxid_for_snap_245)
* [(2)数据修正](#2_249)
* [(3)获取最新ZXID校验epoch](#3ZXIDepoch_255)
- [3、数据同步](#3_265)
- * [(1)Learner 向 Leader 发送 ACKEPOCH](#1Learner__Leader__ACKEPOCH_269)
* [(2)Leader 初始化 peerLastZxid、minCommittedLog、maxCommittedLog](#2Leader__peerLastZxidminCommittedLogmaxCommittedLog_273)
* [(3.1)直接差异化同步(DIFF)](#31DIFF_283)
* [(3.2)先回滚再差异化同步(TRUNC+DIFF)](#32TRUNCDIFF_301)
* [(3.3)仅回滚同步(TRUNC)](#33TRUNC_320)
* [(3.4)全量同步(SNAP)](#34SNAP_328)
+ [六、数据备份与恢复流程](#_341)
+ - [1、为什么需要快照日志](#1_343)
- [2、数据备份策略](#2_349)
- [3、数据恢复](#3_359)
+ [七、要点总结](#_373)
+ [八、参考资料](#_389)
一、前言
ZooKeeper
存储数据的底层数据结构是LSM
(Log Structured Merge-tree
)。基于LSM
实现的存储引擎有两个显著特点:MVCC
(Multi-Version Concurrency Control
)和存储KV
,即所有的更新操作,都是先追加事务日志,然后把key-value
存储到内存数据库,注意不是replace
,而是保存对一个key-value
的多个版本。
ZooKeeper
的数据备份与恢复,就用到了其事务日志文件和快照日志文件。快照日志文件是什么概念?为什么要有快照日志文件?
如何做数据备份?如何恢复数据?解开这些疑惑,需要深入了解ZooKeeper
底层是如何保证数据一致性和集群启动时如何做初始化数据加载和同步。
二、ZooKeeper顺序一致性
ZooKeeper
专门设计了 Zab
(Zookeeper Atomic Broadcast
)协议作为其数据一致性协议。所有写操作和客户端会话管理都以事务方式由 Leader
统一协调,使用两阶段提交的方式,保证数据一致性。
1、ZooKeeper如何处理请求
客户端和 ZooKeeper
集群中的任一服务建立连接