1、kafka的HA机制:副本机制+消息同步+leader选举。

  每个topic有多个partition,每个partition又有多个副本,这些副本当中也存在不同的角色,leader、follower。producer和consumer都只跟leader进行交互,leader进行读写操作。leader负责将消息写进本地log当中,follower去leader上pull拉取数据,将数据同步到本地log当中。当leader挂了的时候,就利用zookeeper重新选出一个leader即可。

  其中,kafka将所有的partition均匀分布在集群中的broker上,所有的Replica副本也均匀分布在集群中的broker上,这样做主要是保证负载均衡和容错能力。因为所有的分区和副本都在一个broker上,那样这个broker挂了,数据也就都丢失了。实现这个均匀分布,使用的是一种算法。主要就是用求余数的运算。

  Kafka分配Replica的算法如下:

  1.将所有Broker(假设共n个Broker)和待分配的Partition排序

  2.将第i个Partition分配到第(i mod n)个Broker上

  3.将第i个Partition的第j个Replica分配到第((i + j) mode n)个Broker上

总之,kafka的健壮性主要来源其强大的副本策略。

2、消息同步策略:producer发送消息到某个partition时,首先通过zookeeper获取这个partition的leader, producer只将消息发送给leader ,leader将该消息写入其本地log中,follower从leader上pull数据。为了提高性能,follower收到消息之后直接向leader返回Ack,follower将消息写进本地log中。一旦leader收到了ISR列表中的所有Replica的ack,该消息就被认为已经commit了,leader向producer发送ACK。

consumer读消息也只从leader读取,只有commit的消息才会暴露给consumer。

3、leader选举:所有的follower都在zookeeper上注册watch监听,一旦leader宕机,其对应的ephemeral znode临时节点会被删除,此时所有的follower都去尝试创建该节点,创建成功者,成为新的leader,其他的Replica就是follower。

leader选举本质上是分布式锁,有两种方式实现基于zookeeper的分布式锁。

节点名称唯一性:多个客户端创建一个节点,只有创建成功的才会获得锁。

临时顺序节点:所有的客户端在某个目录下创建自己的临时顺序节点,只有序号最小的才会获得锁。

参考博客:https://www.cnblogs.com/frankdeng/p/9310704.html

kafka的HA机制的更多相关文章

  1. Hadoop_HDFS架构和HA机制

    Hadoop学习笔记总结 01.HDFS架构 1. NameNode和ResourceManager NameNode负责HDFS,从节点是DataNode:ResourceManager负责MapR ...

  2. kafka知识体系-kafka设计和原理分析-kafka文件存储机制

    kafka文件存储机制 topic中partition存储分布 假设实验环境中Kafka集群只有一个broker,xxx/message-folder为数据文件存储根目录,在Kafka broker中 ...

  3. HA机制下的Hadoop配置

    [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://www.cnblogs.com/sdksdk0/p/5585355.html 作者: 朱培    ID:sdksdk0 ----- ...

  4. Kafka文件存储机制及partition和offset

    转载自:  https://yq.aliyun.com/ziliao/65771 参考:  Kafka集群partition replication默认自动分配分析    如何为kafka选择合适的p ...

  5. 一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试)

    1:能否让两个NameNode都正常影响客户端请求? 应该让两个NameNode节点在某个时间只能有一个节点正常影响客户端请求,相应请求的必须为Active状态的那一台. 2:standBy状态的节点 ...

  6. Kafka文件存储机制及offset存取

    Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...

  7. Kafka文件存储机制那些事

    Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...

  8. Kafka 文件存储机制那些事 - 美团技术团队

    出处:https://tech.meituan.com/2015/01/13/kafka-fs-design-theory.html 自己总结: Kafka 文件存储机制_结构图:https://ww ...

  9. HDFS的HA机制

    传统的HDFS机制如下图所示: 也就是存在一个NameNode,一个SecondaryNameNode,然后若干个DataNode.这样的机制虽然元数据的可靠性得到了保证(靠edits,fsimage ...

随机推荐

  1. Fineui 解决OnClientClick中无论是返回true或false,都依然执行后台代码的问题

    有时写js代码验证数据,需要在OnClientClick中执行,如果符合条件执行后台代码,不符合则不触发后台代码.刚开始的时候无论返回true或false都会执行后台代码(asp.net写法),看了h ...

  2. [转帖]央行推出数字货币DCEP:基于区块链技术、将取代现钞

    央行推出数字货币DCEP:基于区块链技术.将取代现钞 天天快报的内容. 密码财经 2019-10-29 18:15 关注   前不久的10月23日,Facebook的首席执行官扎克伯格在美国国会听证会 ...

  3. 如何在运行时更改JMeter的负载

    在某些情况下,能够在不停止测试的情况下更改性能测试产生的负载是有用的或必要的.这可以通过使用Apache JMeter™的恒定吞吐量计时器和Beanshell服务器来完成.在这篇文章中,我们将介绍如何 ...

  4. C语言实现简单的计算器(加、减、乘、除)

    利用运算符做为swich  case 语句条件,实现简单程序的编写;并且对输入的运算做判断,除数为零也需做判断; #include<stdio.h> int add(int a, int ...

  5. 数列分段 II

    题目描述 思路 代码 #include <cstdio> int n, m, arr[100005], ans; int l, r, mid, inf = 0x7f3f3f3f; inli ...

  6. 我的 VSCode 配置

    VSCode 配置 先安装 Settings Sync 插件,然后点击"download from github"之类的一个链接,弹出一个输入框,输入 a5922d436b82dd ...

  7. jquery 根据后台传递过来的三维数组动态生成三级菜单

    根据后台传递过来的三维数组动态生成三级菜单 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  8. 数据建模工具------EZMNL

    表结构设计器(EZDML) 表结构设计器EZDML1.5新版本发布,比以前介绍的1.2版本改进了很多,因此重新写了个介绍. 表结构设计,即所谓的数据建模,目前大家常用的同类著名工具有PowerDesi ...

  9. JavaNetty

    Netty的简单使用: import io.netty.bootstrap.Bootstrap; import io.netty.buffer.Unpooled; import io.netty.ch ...

  10. python day10: 反射补充,面向对象

    目录 pythdon day 10 1. 反射补充 16. 面向对象 16.1 面向对象初步介绍 16.2 面向对象和面向过程区别 16.3 对象的进化 17. 类class 17.1 类的定义 17 ...