专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

面试官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相应的源代码。

处于哺乳期的产妇如何在恢复身材黄金期的三个月内从132斤降到105斤呢?分享我的经历。我怀孕前是88斤,到娃分娩前体重达到117斤,我孕期没有臃肿,吃得东西也不算多,没有大补特补,就是按照我自己平时的量吃东西,而且我孕期一个人闲得无聊经常出去走走逛逛,爆李铁涉嫌用国脚资格置换利益,你怎么看?大概率事件,中国足球搞不好和这些玩足球的人有直接的关系,送钱进职业队,送钱进国家队都是不争的事实一个贪字当头之人!人品人格(所谓健力宝镀金基本功技术不及格)凭一句空话和没技术含量之即将被公司劝退,我该怎么办?我回答一下这个问题,仅供楼主参考。第一,铁打的营盘流水的兵。军营尚且如此,一个公司也绝非养老之地。一个公司人员流动是很正常的,劝退还是比较有善意的。按照劳动法,无论是雇主还是雇员,作为股民,你是否有贷款炒股?有没有翻身的?我有贷款,欠款越来越多了,所以不玩了我讲讲我的经历吧!我从大学期间就开始炒股,那时候是小打小闹。大学毕业参加工作以后,自己可支配资金逐渐多了起来,股市投资的资金也逐渐多了起来。因为二胎生活的你们,是怎么平衡老大的情绪,又照顾了老二呢?你好!我是lia香,一个二胎宝妈,很高兴回答你这个问题。现在越来越多的家庭知道二胎对大宝的影响很大,我先来说说处理不好二胎关系会带来哪些不好的影响。01出现行为倒退很多家庭的老大,有人说武林外传里邢育森比燕小六观感好一些,你怎么看?老邢虽然有时为了政绩干一些蠢事(防盗八法),但还是听劝的。佟掌柜教育了他之后,他也改了。而燕小六起初看着老实,得势当上捕头后,丑恶嘴脸就露了出来。典型的听不进好人言的白眼狼。一师徒大学怎么刷绩点?首先,听课。听课很有讲究,你要听什么?你可以不听老师具体讲了什么,你可以不马上理解,但是你必须知道他在讲哪里。专业书经常就是几千几百页的厚,复习的时候好多同学都在抓瞎,但是大学老师有专家说一次大醉,相当于患了3次肝炎,请问这句话有根据吗?对一个身体好的人来说,不要经常醉,三两年一大醉,能杀死身上很多病毒细菌,信不信由你。曾经青春献给小酒桌,醉生梦死就是喝。其实大学的时候学的体育专业,学校里对烟酒管理的比较严格,加上初入股市者,买20w券商,坐等牛市来临,这样可行吗?这个问题要分为几部分回答,金老师认为要合理一些。对于一位初入股市的投资者,投资20万券商股,然后坐等牛市,这般方法到底可不可行呢?1方法不可行,没有规范。A股市场确实有着有行情时或十岁的孩子还在尿床,是不是要多打骂几顿才能改过来,有没有其他好办法?别打孩子,有个土方就是在榆树上附有的一种东西和知了猴差不多大,铲下来烧水喝,就可以了。十多岁尿床不算事,我家邻居我叫她崔姐,她二十多岁还尿床呢?结婚以后好了也不尿床了,他家一大早就如何科学地教育孩子?在这珍贵时间,很高兴给大家分享我对这个问题看法,在这里让我们一起走进这个问题,那现在让我们一起探讨一下关于这个问题。在下面优质内容我为大家分享,首先我分享下我个人对这个问题的看法与
拒绝连败!全华班击败吉林男篮!琼斯空砍23分8助,国手遭到驱逐北京时间10月13日,CBA常规赛,浙江东阳光男篮对决吉林男篮!东阳光上一场输给卫冕冠军辽篮,还把小外援和孙铭徽给弄伤了,前者更是无法出战,加上胡金秋也打不了,赵岩昊状态平平,所以宇宙中有多少星系?哈勃望远镜用30年时间,回答了这个问题从远古茹毛饮血的原始时代,到现在飞向太空的科技时代,人类科技真正发展的时间只有三百多年。但我们取得的成就是惊人的,人们的生活质量获得的大大的提升,同时目光也投向了天空,对宇宙展开了祝贺!成功发射我国成功发射5米SSAR01星10月13日6时53分,我国在太原卫星发射中心使用长征二号丙运载火箭,成功将5米SSAR01星发射升空,卫星顺利进入预定轨道,发射任务获得圆满成功。这振奋!中国空间站发射梦天舱为科学新前沿做准备中国计划本月发射包含尖端设备的梦天空间舱,以完成其空间站的第一阶段建设。梦天是一个18米(59英尺)长22吨重的模块,主要用于科学实验。它是天宫空间站的第三个也是最后一个主要组成部台式机太占地方?试试组装一台HTPC,满足影音需求台式机太占地方?试试组装一台HTPC,满足影音需求就当前形势而言,除非游戏党,越来越多的人不待见台式电脑了,一方面手机功能的强大可以替代部分电脑功能,另一方面,轻薄办公本越做越精致索尼计划2023年出货3000万台PS5现有光驱款将停产索尼PS5主机性能很强,配套手柄也很好用,不过由于缺货问题导致很多玩家还没有买。最近有消息爆料称,索尼计划在2023年出货3000万台PS5主机。该消息来自知名爆料人TomHend双11购机指南华硕无畏Pro152022高性价比对于当下众多的创作者而言,即将到来的双11购物节无疑是生产力装备更新换代的黄金时间。若追求精致易携全场景适配的创作笔电,不妨关注下以高性能著称的无畏Pro152022。OLED华硕荣耀X40GT正式发布1999起的骁龙888游戏战神10月13日,荣耀举行荣耀X40GT发布会,全新配色竞速黑,融入赛车元素,碳纤纹理,撞色涂装,倾斜式格栅条纹,还有幻夜黑与钛空银可选,8。45mm厚度,199g重量。规格上,荣耀XRTX4090显卡即将上市,多家厂商公布价格在之前的英伟达发布会上,英伟达发布全新的RTX40系列旗舰级显卡RTX4090和RTX4080,并且RTX4090公版显卡将在今晚正式上市,非公版显卡也将在近期面市。据相关媒体报道地板价了!24寸高清IPS电竞显示器仅需278元文黄保霖责编吕东兴总编唐迪近期Hoesd。a电竞显示器特价仅需278元,而且提供5年质保,感兴趣的可以入手了!这款显示器采用24英寸雾面IPS屏,上下左右178内观看均与正面效果一2022年高效商务办公英特尔12代标压轻薄本推荐轻薄本配标压处理器在以往看来不太可能实现,而且对于厂商来说也是费力不讨好的事。因为轻薄本追求轻薄便携的同时,散热模组就不能做的太大,所以在散热方面就面临很大挑战,进而也就会影响到性
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软网