消息队列MQ

kafka 学习笔记1

本文主要是介绍kafka 学习笔记1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Event streaming is the digital equivalent of the human body’s central nervous system

概述

分布式基于发布/订阅模式的消息队列,应用于大数据实时处理领域。
1 6 3005

应用

  1. 异步处理

两种模式

  1. 点对点 消费者主动拉取消息
  2. 发布订阅 一对多 消费者消费数据后不会清除消息

结构

在这里插入图片描述

  1. broker 主题 消息队列分区 ,一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker,可以容纳多个 topic。
  2. Topic 逻辑:可以理解为一个队列,生产者和消费者面向的都是一个 topic;
  3. Partition物理分区:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列
  4. follower 副本 leader主要 生产者消费者只找leader
  5. consumer group 消费者组 某一个分区只能被同一个消费者组里的消费者消费
  6. zookeeper 如果kafka要集群要用一套zk

分片和索引机制

生产者生产的信息不断增加在log文件末尾,为防止log文件过大导致数据定位效率低下。

segment

每个partition分为多个segment,每个segment对应两个文件.index索引和.log数据
在这里插入图片描述

文件夹命名规则

topic名称+分区序号

分区的原因

  1. 方便集群中扩展
  2. 可以提高并发 为p为单位读写

分区原则

将producer发送的数据封装成一个ProducerRecord对象

  1. 指明 partition 的情况下,直接将指明的值直接作为 partiton 值;
  2. 没有指明 partition 值但有 key 的情况下,将 key 的 hash 值与 topic 的 partition
    数进行取余得到 partition 值;
  3. 既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后
    面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition
    值,也就是常说的 round-robin 算法

可靠性保证

每次p收到producer发送的数据后,想producer发送ack,则进行下一轮发送否则重新发送

副本同步策略

在这里插入图片描述
使用第二种并优化方案。ISR

同步副本 ISR

Leader 维护了一个动态的 in-sync replica set (ISR),意为和 leader 保持同步的 follower 集
合。当 ISR 中的 follower 完成数据的同步之后,leader 就会给 follower 发送 ack。如果follower
长时间 未 向 leader 同 步 数 据 , 则 该 follower 将 被 踢 出 ISR , 该 时 间 阈 值
replica.lag.time.max.ms 参数设定。Leader 发生故障之后,就会从 ISR 中选举新的 leader。

p15

问题

zap协议

这篇关于kafka 学习笔记1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!