幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

面试官Kafka副本机制你了解吗?

  所谓的副本机制(Replication),也可以称之为备份机制,通常是指分布式系统在多台网络互联的机器上保存有相同的数据拷贝。副本机制有什么好处呢?提供数据冗余。即使系统部分组件失效,系统依然能够继续运转,因而增加了整体可用性以及数据持久性。提供高伸缩性。支持横向扩展,能够通过增加机器的方式来提升读性能,进而提高读操作吞吐量。改善数据局部性。允许将数据放入与用户地理位置相近的地方,从而降低系统延时。
  这些优点都是在分布式系统教科书中最常被提及的,但是有些遗憾的是,对于ApacheKafka而言,目前只能享受到副本机制带来的第1个好处,也就是提供数据冗余实现高可用性和高持久性。我会在这一讲后面的内容中,详细解释Kafka没能提供第2点和第3点好处的原因。
  不过即便如此,副本机制依然是Kafka设计架构的核心所在,它也是Kafka确保系统高可用和消息高持久性的重要基石。副本定义
  在讨论具体的副本机制之前,我们先花一点时间明确一下副本的含义。
  我们之前谈到过,Kafka是有主题概念的,而每个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的,每个分区配置有若干个副本。
  所谓副本(Replica),本质就是一个只能追加写消息的提交日志。根据Kafka副本机制的定义,同一个分区下的所有副本保存有相同的消息序列,这些副本分散保存在不同的Broker上,从而能够对抗部分Broker宕机带来的数据不可用。
  在实际生产环境中,每台Broker都可能保存有各个主题下不同分区的不同副本,因此,单个Broker上存有成百上千个副本的现象是非常正常的。
  接下来我们来看一张图,它展示的是一个有3台Broker的Kafka集群上的副本分布情况。从这张图中,我们可以看到,主题1分区0的3个副本分散在3台Broker上,其他主题分区的副本也都散落在不同的Broker上,从而实现数据冗余。
  副本角色
  既然分区下能够配置多个副本,而且这些副本的内容还要一致,那么很自然的一个问题就是:我们该如何确保副本中所有的数据都是一致的呢?特别是对Kafka而言,当生产者发送消息到某个主题后,消息是如何同步到对应的所有副本中的呢?针对这个问题,最常见的解决方案就是采用基于领导者(Leaderbased)的副本机制。ApacheKafka就是这样的设计。
  基于领导者的副本机制的工作原理如下图所示,我来简单解释一下这张图里面的内容。
  第一,在Kafka中,副本分成两类:领导者副本(LeaderReplica)和追随者副本(FollowerReplica)。每个分区在创建时都要选举一个副本,称为领导者副本,其余的副本自动称为追随者副本。
  第二,Kafka的副本机制比其他分布式系统要更严格一些。在Kafka中,追随者副本是不对外提供服务的。这就是说,任何一个追随者副本都不能响应消费者和生产者的读写请求。所有的请求都必须由领导者副本来处理,或者说,所有的读写请求都必须发往领导者副本所在的Broker,由该Broker负责处理。追随者副本不处理客户端请求,它唯一的任务就是从领导者副本异步拉取消息,并写入到自己的提交日志中,从而实现与领导者副本的同步。
  第三,当领导者副本挂掉了,或者说领导者副本所在的Broker宕机时,Kafka依托于ZooKeeper提供的监控功能能够实时感知到,并立即开启新一轮的领导者选举,从追随者副本中选一个作为新的领导者。老Leader副本重启回来后,只能作为追随者副本加入到集群中。
  你一定要特别注意上面的第二点,即追随者副本是不对外提供服务的。还记得刚刚我们谈到副本机制的好处时,说过Kafka没能提供读操作横向扩展以及改善局部性吗?具体的原因就在于此。
  对于客户端用户而言,Kafka的追随者副本没有任何作用,它既不能像MySQL那样帮助领导者副本抗读,也不能实现将某些副本放到离客户端近的地方来改善数据局部性。
  既然如此,Kafka为什么要这样设计呢?其实这种副本机制有两个方面的好处。
  1。方便实现Readyourwrites。
  所谓Readyourwrites,顾名思义就是,当你使用生产者API向Kafka成功写入消息后,马上使用消费者API去读取刚才生产的消息。
  举个例子,比如你平时发微博时,你发完一条微博,肯定是希望能立即看到的,这就是典型的Readyourwrites场景。如果允许追随者副本对外提供服务,由于副本同步是异步的,因此有可能出现追随者副本还没有从领导者副本那里拉取到最新的消息,从而使得客户端看不到最新写入的消息。
  2。方便实现单调读(MonotonicReads)。
  什么是单调读呢?就是对于一个消费者用户而言,在多次消费消息时,它不会看到某条消息一会儿存在一会儿不存在。
  如果允许追随者副本提供读服务,那么假设当前有2个追随者副本F1和F2,它们异步地拉取领导者副本数据。倘若F1拉取了Leader的最新消息而F2还未及时拉取,那么,此时如果有一个消费者先从F1读取消息之后又从F2拉取消息,它可能会看到这样的现象:第一次消费时看到的最新消息在第二次消费时不见了,这就不是单调读一致性。但是,如果所有的读请求都是由Leader来处理,那么Kafka就很容易实现单调读一致性。InsyncReplicas(ISR)
  我们刚刚反复说过,追随者副本不提供服务,只是定期地异步拉取领导者副本中的数据而已。既然是异步的,就存在着不可能与Leader实时同步的风险。在探讨如何正确应对这种风险之前,我们必须要精确地知道同步的含义是什么。或者说,Kafka要明确地告诉我们,追随者副本到底在什么条件下才算与Leader同步。
  基于这个想法,Kafka引入了InsyncReplicas,也就是所谓的ISR副本集合。ISR中的副本都是与Leader同步的副本,相反,不在ISR中的追随者副本就被认为是与Leader不同步的。那么,到底什么副本能够进入到ISR中呢?
  我们首先要明确的是,Leader副本天然就在ISR中。也就是说,ISR不只是追随者副本集合,它必然包括Leader副本。甚至在某些情况下,ISR只有Leader这一个副本。
  另外,能够进入到ISR的追随者副本要满足一定的条件。至于是什么条件,我先卖个关子,我们先来一起看看下面这张图。
  图中有3个副本:1个领导者副本和2个追随者副本。Leader副本当前写入了10条消息,Follower1副本同步了其中的6条消息,而Follower2副本只同步了其中的3条消息。现在,请你思考一下,对于这2个追随者副本,你觉得哪个追随者副本与Leader不同步?
  答案是,要根据具体情况来定。换成英文,就是那句著名的Itdepends。看上去好像Follower2的消息数比Leader少了很多,它是最有可能与Leader不同步的。的确是这样的,但仅仅是可能。
  事实上,这张图中的2个Follower副本都有可能与Leader不同步,但也都有可能与Leader同步。也就是说,Kafka判断Follower是否与Leader同步的标准,不是看相差的消息数,而是另有玄机。
  这个标准就是Broker端参数replica。lag。time。max。ms参数值。这个参数的含义是Follower副本能够落后Leader副本的最长时间间隔,当前默认值是10秒。这就是说,只要一个Follower副本落后Leader副本的时间不连续超过10秒,那么Kafka就认为该Follower副本与Leader是同步的,即使此时Follower副本中保存的消息明显少于Leader副本中的消息。
  我们在前面说过,Follower副本唯一的工作就是不断地从Leader副本拉取消息,然后写入到自己的提交日志中。如果这个同步过程的速度持续慢于Leader副本的消息写入速度,那么在replica。lag。time。max。ms时间后,此Follower副本就会被认为是与Leader副本不同步的,因此不能再放入ISR中。此时,Kafka会自动收缩ISR集合,将该副本踢出ISR。
  值得注意的是,倘若该副本后面慢慢地追上了Leader的进度,那么它是能够重新被加回ISR的。这也表明,ISR是一个动态调整的集合,而非静态不变的。Unclean领导者选举(UncleanLeaderElection)
  既然ISR是可以动态调整的,那么自然就可以出现这样的情形:ISR为空。因为Leader副本天然就在ISR中,如果ISR为空了,就说明Leader副本也挂掉了,Kafka需要重新选举一个新的Leader。可是ISR是空,此时该怎么选举新Leader呢?
  Kafka把所有不在ISR中的存活副本都称为非同步副本。通常来说,非同步副本落后Leader太多,因此,如果选择这些副本作为新Leader,就可能出现数据的丢失。毕竟,这些副本中保存的消息远远落后于老Leader中的消息。在Kafka中,选举这种副本的过程称为Unclean领导者选举。Broker端参数unclean。leader。election。enable控制是否允许Unclean领导者选举。
  开启Unclean领导者选举可能会造成数据丢失,但好处是,它使得分区Leader副本一直存在,不至于停止对外提供服务,因此提升了高可用性。反之,禁止Unclean领导者选举的好处在于维护了数据的一致性,避免了消息丢失,但牺牲了高可用性。
  如果你听说过CAP理论的话,你一定知道,一个分布式系统通常只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)中的两个。显然,在这个问题上,Kafka赋予你选择C或A的权利。
  你可以根据你的实际业务场景决定是否开启Unclean领导者选举。不过,我强烈建议你不要开启它,毕竟我们还可以通过其他的方式来提升高可用性。如果为了这点儿高可用性的改善,牺牲了数据一致性,那就非常不值当了。小结
  今天,主要分享了ApacheKafka的副本机制以及它们实现的原理。坦率地说,我觉得有些地方可能讲浅了,如果要百分之百地了解Replication,你还是要熟读一下Kafka相应的源代码。

曝新机红米Note12蓄力双十一天玑1300120W快充红米Note12标准型号(22101316C),支持67W充电,已通过3C认证。据传闻,更大的Note12Pro将提供120W的快速有线充电。小米集团卢伟冰表示,红米No……这三家基地(营地)获评国家级,看看你去过哪个?近日,中国旅行社协会、全国研学旅行基地认定委员会对申报全国研学旅行基地的单位进行了现场评定考核,全国共有5家单位获批为全国研学旅行基地(营地),吉林省共有3家入选:吉林省长春市……图栀子花叶子发黑怎么办采取这些措施可解决栀子花是一种常见的木本植物,它的花色美丽,花香迷人,深受众多花友的喜爱。不少花友也有过栀子花的经历,不过栀子花本身并不好养殖,如果疏于管理叶片就会发黑。说到栀子花,朋友们……图常见金鱼品种有哪些学会这些才能养得好金鱼起源于中国,也称金鲫鱼,是由鲫鱼进化而成的观赏鱼类。金鱼的品种很多,颜色有红、墨、银白、五花等,现在世界各国的金鱼都是直接或间接由中国引种的。常见的金鱼分为四大种类,……膜拜!阿里内部学习的五大深入理解Java虚拟机前言Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许……随着唐朝诡事录的热度上升,任娇裸死事件再度被大众提起近期电视剧唐朝诡事录完结,热度口碑也在临近大结局的时候到达顶峰。与此同时关于男主角杨旭文的一则旧闻再次被大家重提。17年10月中旬左右有媒体报道演员任娇全裸死于苏州某酒店……独在小镇为客守坐在回家的公交车上,看着窗外高楼大厦闪烁着五彩的霓虹灯,这是新区繁华的CBD,我将缓缓离它而去,到边缘的小镇去,因那里有我使出毕生心血购来的小窝,繁华的地段置办不起房产,只好委……评论丨槟榔之争,还有三大疑问待解有没有一个统一的时间表?到底如何过渡?下一步怎么办?近期,多地对槟榔销售采取了管控措施,有些地方明确要求槟榔制品不得作为食品销售。但问题并没有得到解决,如有的超市将槟榔藏……图紫藤萝花几月开花有什么营养功效紫藤萝花一般在三月份开花蕾,四月份是开花盛期,有很强的观赏价值,环保价值以及药用价值。紫藤花能解毒、治疗呕吐,种子治疗筋骨疼,紫藤皮能杀虫、止疼。记得上初中的时候,学过一……图中华田园犬寿命几大特征让你深刻了解它们中华田园犬是中国土生土长的一种犬种,也就是大家口中的土狗。中华田园犬非常聪明,而且造型会有很大的不同。因为品种杂交的原因,所以寿命也比较长。一、寿命长短。中华田园犬……图紫凤梨变绿后怎么养简单处理让你成为养殖大师紫凤梨是非常具有观赏性的花卉,但是很多养殖者会遇到买回来就发现自己的紫凤梨变绿了,那么变绿的原因是什么呢?在它变绿以后应该怎么养呢?一起看看吧。一、原因。我们可以看……利川神奇美丽百丈沟百丈沟梯田秋色湖北日报客户端(利川频道通讯员陈小林)百丈沟又叫百战沟,百丈是说这里的峡谷很深,百战是说这里过去曾经有过很多次战斗,所以,这沟里过去又叫百胜乡,百战百胜嘛。……
用玉米须泡茶,能缓解痛风?网友提问:我得痛风有一段时间了,最近朋友给我介绍了个偏方,说用玉米须泡茶可以缓解痛风,我想知道是真的吗?你朋友说的没错,用玉米须泡茶确实可以缓解痛风。中医认为,玉米……比尔森胜利02国米戈森斯的问题,在于他有一颗中锋的心欧冠小组赛第二轮,国际米兰客场挑战捷克比尔森胜利。哲科上半场首开纪录,下半场又助攻邓弗里斯锁定胜局,蓝黑军团20取胜,拿到本赛季欧冠首胜。由于对手实力较弱,国米赢得不太费……令女生不好意思的15个小秘密,你知道几个?成年人的世界是比较复杂的,谁都希望把自己隐藏起来,不希望被别人一眼看穿,而且每个人的内心深处都藏着一些不愿意与他人共享的小秘密,即便再亲密的人也不想说出来。有一些小秘密是……每日一词国家智慧教育平台SmartEducationofCh教育部部长怀进鹏9月9日在新闻发布会上介绍称,截至9月8日,国家智慧教育平台总浏览量约40亿次,总访客量超6亿人,基本形成了世界第一大教育资源数字化中心和服务平台。Chi……美专家中国空天飞机连飞18天仍在美国头顶,美太空军已密切监视美专家埃里克马克在《福布斯》杂志上发表文章称,一项神秘的中国空天飞机这次再被美军曝出了新动向,从8月4号发射到现在,已经过去了18天,中国的空天飞机已经在地球上空盘旋了数圈,现……袁心玥真敢做!为了夺冠委屈自己,蔡斌郎平欣慰袁心玥真敢做!为了夺冠委屈自己,蔡斌、郎平欣慰球迷都知道,在世联赛中,国女排的表现不好,仅拿到了世界第六的位置,而接下来,中国女排的世锦赛即将开始,目前女排公布的14人大……再见C罗!曝曼联同意解约,滕哈格拍板,伯利接盘,开6个月合同红蓝德比结束,卡塞米罗打进绝平头球,曼联在斯坦福桥全身而退。仅战11轮的红魔尽管在积分榜排名第六,但排名前四的纽卡和热刺均多战,滕哈格的球队并没有被甩开太多。作为一……2911!打服里弗斯,从老二变老大,要进全明星首发,篮网亏大前言:当大家都认为篮网和湖人将是新赛季最具戏剧性的球队时,休赛期大举补强的76人一上来就贡献了一波3连败,很快他们被推上了风口浪尖,主帅里弗斯和哈登之间、恩比德和哈登之间……比亚迪领跑,中国车企实现历史性突破,出口量跃居全球第二过去,在传统燃油车的时代,日美德凭借着先发优势,长期占据着市场的主导地位。然而,随着新能源汽车时代的到来,中国车企抓住了机遇,实现了从滞后到领先世界的超越。近日,中国海关总署发……3年100家!高瓴组队,正式杀入种子期点蓝字关注,不迷路来源:创业资本汇(ID:chuangyzbh)高瓴正式杀入种子投资赛道。9月28日,高瓴宣布正式推出Aseed种子计划,由高瓴创始合伙人李良……贵州景点产蛋崖,三十年下一个蛋,专家5亿年前的宝贝蛋,是生物繁衍后代的一种方式,我们生活中常见的就是鸡蛋。无论是哪种蛋,都是动物生产出来的,可是在贵州就有一个产蛋崖,每隔三十年左右就会产下一个蛋,专家看了之后表示:这是5亿年前……夏洛特公主的胸针来头不小,连起了王室四代人,是意义非凡的礼物已故伊丽莎白女王给夏洛特公主送了一枚钻石胸针这件事情想必大家都知道了!不用讨论1。1亿美元珠宝继承权花落谁家,仅仅是一枚钻石胸针这件事情,就令许多有着传承情结的珠宝粉羡慕……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网