• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:kafka-原理

java 搞代码 4年前 (2022-01-27) 22次浏览 已收录 0个评论

kafka是基于公布、订阅模式的音讯队列,由scala写成,吞吐强悍,实用于大数据实时处理。

架构


topic:
producer:生产者
consumer group:生产组,内含多个消费者。
consumer:消费者从broker拉取音讯,以适当速度生产音讯。
offset:偏移量,相当于音讯在队列里的地位。

broker:kafka集群由多个实例组成,每个实例称为broker。一个broker能够被多个topic共用。
partition:一个topic分成多个partition,每个partition解决一部分音讯,每个partition内有序,每个partition只能由一个consumer生产,一个consumer能够生产多个partition,partition数<=consumer数。通过分区能够不便扩大,进步并发。
Replication:一个partition分成leader和多个follower,他们都成为replication,散布在多个broker上,replication数不能超过broker数。

原理

写入形式

producer采纳 push 模式将音讯公布到 broker,每条音讯都被 append 到 patition 中,被赋予了一个惟一的 offset 值。属于 程序写磁盘 ,程序写比随机写要起码提速3个数量级!

分区形式

1.指明partition
2.没指明,但又key,将key的hash值对分区数取余
3.没有key,第一次调用时随机生成一个整数,尔后每次自增,用这个数对分区数取余(round-robin算法)

存储构造


每个partition分为多个segment,每个segment有一个.INDEX寄存索引(log文件中音讯的偏移地址)和一个.LOG存放数据。index和log文件以本人第一条音讯的偏移量命名。

数据可靠性

at least once
at most once
exactly once

生产者信息发送至Broker

  1. producer 从 ZK 找到指标 Partition 的 Leader 元数据。
  2. producer 发送音讯给 Leader。
  3. Leader 承受音讯长久化,而后依据acks配置抉择如何同步Follower。
  4. Follower 依照后面说的同步数据后给Leader回复ack。
  5. Leader 跟 Follower 同步结束后 Leader 给 producer 回复 ack。

    acks配置

    request.required.acks = 0

    producer不期待 broker 的ack,提供了一个最低的提早,broker接管到还没有写入磁盘就曾经返回,当broker故障时有可能失落数据,对应 At Most Once 模式。

    request.required.acks = 1

    默认值,producer 期待 broker 的 ack,partition 的leader落盘胜利后返回ack,如果在follower同步胜利之前leader故障,那么将会失落数据;认为leader返回 信息就胜利了。

    request.required.acks = -1 / all

    producer 期待 broker 的 ack,partition 的 leader 和 follower (ISR中的)全副落盘胜利后才返回 ack。
    但如果在 leader 收到信息返回ok,follower 收到信息然而发送 ack 时 leader 故障,此时生产者会从新给follower 发送个信息。
    对应 At Least Once 模式。

    幂等性

    无论生产者发送多少个反复音讯,Server端只会长久化一条数据,在生产者参数中 enable.idompotence= true。使用的是broker对requestno做缓存的原理。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:kafka-原理

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址