zookeeper重难知识点汇总

Posted 技术无产者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper重难知识点汇总相关的知识,希望对你有一定的参考价值。

一.一致性协议

1.ZAB协议:

实例详解ZooKeeper ZAB协议、分布式锁与领导选举 - 架构 - dbaplus社群:围绕Data、Blockchain、AiOps的企业级专业社群。技术大咖、原创干货,每天精品原创文章推送,每周线上技术分享,每月线下技术沙龙。读完本文,ZooKeeper不再难懂!https://dbaplus.cn/news-141-1875-1.html

2.Paxos

分布式系列文章——Paxos算法原理与推导 - lzslbd - 博客园https://www.cnblogs.com/linbingdong/p/6253479.html

Paxos算法原理和过程解析_小诚信驿站-CSDN博客_paxos算法我们了解了2PC和3PC之后,我们可以发现,无论是二阶段提交还是三阶段提交都无法彻底解决分布式的一致性问题以及无法解决太过保守及容错性不好。Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版。Paxos算法是公认的晦涩,很难可能能将清楚,但是工程上也很难实现,所以有很多Paxos算法的工程实现,如...https://blog.csdn.net/wolf_love666/article/details/92832811

3.2pc

zookeeper的2PC事务提交 - 码农岛https://www.manongdao.com/article-281763.html

ZooKeeper之两阶段提交(2PC) - 浮世间 - 博客园两阶段提交 2PC:在分布式系统中,每一个机器节点虽然能够明确的知道自己在进行事物操作过程的结果是失败或成功,但却无法直接获取其他分布式节点的操作结果,因此事物操作需要跨越多个分布式节点的时候,需要引https://www.cnblogs.com/we9999/p/12395200.html

注意:

a> ZAB的Commit是一种类似于2pc的协议

b> zab的Leader接收到写请求后,会将写提案转发给所有follower,当Follower执行写请求成功后,给与leader反馈,若leader收到半数以上(包括自己)执行成功确认,就发送Commit,让各个follower执行commit.随后的follwer也会相继更新成功

二.zk选举机制

ZooKeeper 的选举机制,你了解多少? - 削微寒 - 博客园https://www.cnblogs.com/xueweihan/p/14515634.html

五分钟搞懂zookeeper选举机制 | 聂扬帆博客https://yangfannie.com/2001.html

Zookeeper选举机制(重点) - 张涨涨 - 博客园https://www.cnblogs.com/zyd-994264926326/p/15162642.html

注意的是: 当该节点的选择的leader发生变化才更新后的投票发送出去

三.为什么要集群中节点的个数是奇数个/脑裂现象

分布式集群脑裂问题_zyz的博客-CSDN博客_分布式集群的脑裂在分布式集群的脑裂问题中,zookeeper脑裂是一个经典的例子。在zookeeper集群中,有一个leader和多个follower(observer不参与选举,可以忽略),leader通过周期性向follower发送心跳的方式维持自己的存在感。当follower没有收到心跳超过一定时间后,就认为leader已经宕机,开始重新选举。但是这个时候,leader有可能没有宕机,而是假死,比如发生网络分区的情况。假设集群中总共有6个节点,发生网络分区后,变成以下情况(原本只有机房1的leader,分区后机房https://blog.csdn.net/qq_39552268/article/details/115406443

四.zookeeper 如何保证半数提交后剩下的节点上最新的数据呢?

        zookeeper 的leader和follower的prepare和commit时,只要半数的节点通过就算同意,leader就会commit,那么剩下的半数节点的数据如何同步到最新的呢?

       剩下的节点,会进行版本比对,发现版本不一致的话,会更新节点的数据。

转自: zookeeper 数据同步原理 - 简书

五.分布式锁

1.zk分布式锁

10分钟看懂!基于Zookeeper的分布式锁_qiangcuo6087的博客-CSDN博客_zookeeper 分布式锁实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开。我们来看下使用Zookeeper如何实现分布式锁。什么是Zookeeper?Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些https://blog.csdn.net/qiangcuo6087/article/details/79067136

2.Redis分布式锁

基于redis分布式锁实现“秒杀”_刘劭的博客-CSDN博客_分布式锁实现秒杀最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。业务场景所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确。一些可能的实现刚才提到https://blog.csdn.net/u010359884/article/details/50310387?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1.no_search_link&utm_relevant_index=2Redis Setnx 命令 | 菜鸟教程Redis Setnx 命令 Redis 字符串(string) Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。 语法 redis Setnx 命令基本语法如下: redis 127.0.0.1:6379> SETNX KEY_NAME VALUE 可用版本 >= 1.0.0 返回值 设置成功,返回 1 。 设置失败,..https://www.runoob.com/redis/strings-setnx.html

六.CAP理论

CAP理论讲解_zyz的博客-CSDN博客对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测。而且看了很多书和视频还是一脸懵逼。这篇文章主要使用大白话的方式,带你理解一下分布式系统中的CAP理论。保证你能听懂。为了防止被误以为是洗文的嫌疑,我在这里先说明一下:我参考了知乎和博客园上等相关文章,还有下面的图不是我自己画的,我觉得能清晰地表达出意思就是好图,在百度图片上下载了一波。一、什么是分布式系统拿一个最简单的例子,就比如说我们的图书管理系统。之前的系统包含了所有的功能,比如用户注册登录、管理员功能、图书借阅https://blog.csdn.net/qq_39552268/article/details/115403910      先看第一篇,里面介绍了强/弱/最终一致性的概念

Eureka和ZooKeeper的区别_java_xth的博客-CSDN博客_eureka和zookeeper的区别首先我们先说下: RDBMS==>(mysql,Oracle,SqlServer等关系型数据库)遵循的原则是:ACID原则(A:原子性。C:一致性。I:独立性。D:持久性。)。NoSql==>    (redis,Mogodb等非关系型数据库)遵循的原则是:CAP原则(C:强一致性。A:可用性。P:分区容错性)。在分布式领域有一个很著名的CAP定理:C:数据一致性。A:服务...https://blog.csdn.net/java_xth/article/details/82621776?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1.no_search_link&utm_relevant_index=2cap分析zk是cp还是ap_JavaMa的博客-CSDN博客_zookeeper是ap还是cp看到有文章说zk是cp,也有人说是ap。zk的ap和cp是从不同的角度分析的。从一个读写请求分析,保证了可用性(不用阻塞等待全部follwer同步完成),保证不了数据的一致性,所以是ap。但是从zk架构分析,zk在leader选举期间,会暂停对外提供服务(为啥会暂停,因为zk依赖leader来保证数据一致性),所以丢失了可用性,保证了一致性。再细点话,这个c不是强一致性,而是最终一致性。即上面的写案例,数据最终会同步到一致,只是时间问题。综上,zk广义上来说是cp,狭义上是ap。..https://blog.csdn.net/weixin_43883685/article/details/108208229京东面试官让你谈谈 zookeeper 和 eureka 哪个更好使?_ITPUB博客大家都说今年是互联网寒冬,但是前段时间有个读者很高兴的跟我聊天说他去京东了。我问他都问了什么问题?他说问了很多微服务相关的,其中有一个问题就是:同样是注册中心,你觉得 zookeeper 和 eureka 哪个更好?ITPUB博客每天千篇余篇博文新资讯,40多万活跃博主,为IT技术人提供全面的IT资讯和交流互动的IT博客平台-中国专业的IT技术ITPUB博客。http://blog.itpub.net/31558358/viewspace-2564424/

zk是CP系统需要从两个方面去考虑:

1>master宕机时 cp

 2> 写数据时的CP 这里的C是最终一致性而不是强一致性,这时候可以看作ap

网上一篇博客这样写的,我觉这点不对,因为CAP理论是发生在发生网络分区时,考虑满足C还是满足A,对于ZK,网络分区时需要重新选取leader,这时候整个服务对外不可用,所以它是CP

      eureka和zk客户端配置集群时都会写下来所有服务器的地址信息,当访问第 一个服务器没有响应时会访问第二个,zk的集群有主从的概念,eureka的集群节点都是平等的,相互向对方注册,没有主从之分

以上是关于zookeeper重难知识点汇总的主要内容,如果未能解决你的问题,请参考以下文章

java重难点知识梳理 之面向对象特点及基础

Java程序员面试必备的知识点,重难点整理

#yyds干货盘点#2021年度Java中间件面试真题&高频知识点汇总

ZooKeeper Lead选举

自定义reg52.h头文件(单片机学习重难点核心知识点)

Android 相关重难点知识整理