美文网首页
kafka学习笔记(一)

kafka学习笔记(一)

作者: 那些年搬过的砖 | 来源:发表于2020-01-19 08:36 被阅读0次
一、Kafka注册到zk
1.1、kafka在zk中的整体注册信息结构

(图片来源:https://www.cnblogs.com/qingyunzong/p/9007107.html

2.1、topic信息的注册

当broker启动时,会到对应topic节点下注册自己的broker.id到对应分区的ISR列表中;当broker退出时,zk会自动更新其对应的topic分区的ISR列表,ISR列表用于分区leader的选举。

#登录zkCli查看kafka节点分区信息(为了更直观的查看,对json进行了格式化)
[zk: 127.0.0.1:3181(CONNECTED) 59] get /brokers/topics/dataPush
{
    "version": 1,
    "partitions": {
        "2": [0, 1],
        "1": [2, 0],
        "0": [1, 2]
    }
}
cZxid = 0x1000000c4
ctime = Tue Dec 18 16:09:32 CST 2018
mZxid = 0x1000000c4
mtime = Tue Dec 18 16:09:32 CST 2018
pZxid = 0x1000000c7
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 58
numChildren = 1
[zk: 127.0.0.1:3181(CONNECTED) 60]
对应磁盘上的结构如下
二、Kafka副本机制
2.1、基本概念

Kafka的分区及副本会均匀的落到多个broker上

如果分区数为3,副本数为1,存储结构如下

如果分区数为3,副本数为2,则每个分区有两个个副本

kafka集群中,每个分区的副本保存在不同broker上,并且在这些副本中会选举出leader,其他为follower

2.2、Kafka副本同步机制

kafka副本创建分为同步复制和异步复制,由producer配置决定

>消息的确认模式
> # 0:只管发送,不管broker是否接收。这种方式为异步同步
> # 1:发送消息,并会等待leader 收到确认后。同步复制。
> # -1:发送消息,等待leader收到确认,并进行复制操作后,才返回,可靠性最高,同步复制。
> request.required.acks = 0

我们知道大部分集群系统都采用了超半数选举的策略来选举leader,如zk的zab算法,但是kafka不同,kafka内部动态维护了一个同步状态的副本集合(ISR),这个集合中的成员才有资格被选举为leader。只有所有ISR都收到写入,才认为对kafka分区的写入是commited。

同步过程如下

image.png
1:连接zk
2:由zk反馈leader信息
3:producer向leader发送消息,leader收到消息后,写入本地log
4:leader向消息同步到所有followers(实际是由followers 从leader pull消息),并将消息写入本地log
5:向leader发送ack消息
6:leader收到所有ack消息后,将ack反馈到producer

附录:
1:kafka consumer是线程非安全的,一个consumer对象只能一个线程操作。可以一个线程从kafka拉取数据,多个线程处理。

相关文章

  • Kafka学习笔记(一)

    Kafka介绍 从事Java开发三年了,但是一直没写过什么分享,在项目组同事的建议下,在接下来的几篇中给大家介绍一...

  • Kafka学习笔记一

    1.简介 kafka是一个分布式的流平台,一个流平台有以下三个能力: 发布和订阅记录流,就像一个消息队列或者企业级...

  • kafka学习笔记(一)

    一、Kafka注册到zk 1.1、kafka在zk中的整体注册信息结构 (图片来源:https://www.cnb...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • sptest

    # Spring Kafka 学习笔记 ## 1 接收消息 接收消息需要提供MessageListenerCont...

  • Kafka学习笔记

    Kafka 学习笔记 内容大部分引用自Info - Apache Kafka:下一代分布式消息系统 原文作者Abh...

  • kafka学习笔记-kafka基础

    参考:极客时间-Kafka核心技术与实战 kafka术语 消息(Record):kafka要处理的主要对象。 主题...

  • spark 学习笔记

    Spark学习笔记 Data Source->Kafka->Spark Streaming->Parquet->S...

  • kafka学习笔记

    1、kafka 简介 kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理百万级QPS(每秒访问次数)的动...

  • Kafka学习笔记

    定义: Kafka 是一款开源的、轻量级的 、分布式、可分区和具有复制备份的 CReplicated)、基于Zoo...

网友评论

      本文标题:kafka学习笔记(一)

      本文链接:https://www.haomeiwen.com/subject/kltrzctx.html