Kafka的HA

       Kafka在0.8以前版本中是没有High Available的,每个Partition没有Replication,一旦机器宕机或者某个Broker停止工作,受影响的Partition会变为不可用的,这对整个系统的可用性造成了影响。且集群越大,出现异常的几率就越大。

为什么需要Leader选举机制?

       引入HA后,每个Partition有多个副本Replica,需要再这些Replica中选举出一个Leader,Producer和Consumer只与这个Leader进行交互,其他的Replica与这个Leader进行数据的同步,从Leader中复制数据。
       想象一个情况,如果没有Leader,Partition的Replica间的数据一致性怎么保证?如果其中的一个Replica发生了宕机,怎么保证其他的Replica能继续提供服务而不造成数据丢失?在没有Leader的情况下,多个Replica间需要互相同步数据,这样就需要N*N条通路,一致性非常难以保证。
如果Replica中有一个Leader,其余的Replica只需要向此Leader进行数据的Fetch,因此只需要N条通路,简单且高效。

HA的设计

       Kafka应尽量将Replica分散到整个集群上。典型的做法是创建一个Topic时,使其Partition数量大于Broker数量,同时Replica尽量分散到不同机器(确保一台Broker宕机的影响最小)。
       分配Replica算法如下:
1.将n个broker和partition排序
2.第i个partition分配到第(i mod n)个broker上
3.第i个partition的第j个replica分配到第((i + j) mod n)个broker上

消息的传播

       Producer通过Zookeeper找到某Paritition的Leader,将消息发送给Leader,Leader将其写入本地Log。其他的Replica(Follower)会从Leader处拉取消息,Flllower收到消息后(并不需要写入Log,也就是在内存中,提高了吞吐量),立即向Leader发送ACK,若Leader收到了所有Replica的ACK,该消息被认为是commit的。这是Consumer才能看到这条消息。

需要保证多少个备份?

       Leader中保存着与其同步的Replica的列表,称为ISR(in-sync Replica),如果一个Follower宕机或落后太多(可配置),Leader将其从ISR中移除。
       一条消息只有被ISR里的素有Follower都从Leader复制过去才认为已提交。

如何选举Leader?

       Kafka在Zookeeper中动态维护了一个ISR(in-sync replicas),其中所有的Replica都跟上了Leader,只有ISR中的成员才能被选为Leader。
       Kafka会在所有broker中选出一个controller,所有Partition的Leader选举都由controller决定。
       每个Partition会有多个备份,我们称某个Partition的Replica列表为AR(Assigned Replicas),AR中的第一个Replica称为“Preferred Replica”,它会被选为Leader,且Kafka保证Preferred Replica被均匀分布到所有Broker上,这样可以均衡集群的读写压力。

Kafka均衡Leader工具

$Kafka_HOME/bin/kafka-preferred-replica-election.sh --zookeeper localhost:2181
       broker宕机后,集群的leader可能处于一种不均衡的状态,此工具用来重新分配Leader所在Broker,使其均衡。

Kafka分区再均衡工具

       上一个工具只能在Partition的AR范围内调整其Leader,使Leader分布均匀,但这是不够的,此工具还可以调整Partition的AR。
       在对Kafka集群扩容的时候,已有的Topic不会自动将Partition迁移到新加入的Broker上,这时就需要用到此工具。

       此工具有三种用法:

  • generate模式,给定需要重新分配的Topic,自动生成reassign plan(不执行)
  • execute模式,根据指定的reassign plan重新分配Partition
  • verify模式,验证重新分配Partition是否成功

       例子:
(1)generate
$KAFKA_HOME/bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file /tmp/topics-to-move.json --broker-llist "4,5,6,7" --generate

(2)execute
$KAFKA_HOME/bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file /tmp/reassign-plan.json --execute

(3)verify
$KAFKA_HOME/bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file /tmp/reassign-plan.json --verify

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容