Day69 Kafka 设计原理详解

可以实时处理大量数据,满足各种需求场景.

  1. Hadoop 批处理系统。
  2. Storm/Spark 流式处理引擎
  3. web/nginx,访问日志
  4. 消息服务

开放统一接口给consumer

hadoop,hbase等.

装载到hadoop,数仓etl做离线分析和数据挖掘.

Screen Shot 2022-07-13 at 2.44.08 PM.png
  • Partition副本选举Leader
    消息消费offset记录,consumer-offset

Rebalance机制

消费者数量和消费分区有变化的时候。kafka会重新分配消息分区的关系,重启后分区又会归还给其他的消费者.

  • 以下几种情况均会触发rebalance
    consumer,消费组分区partitation,Topic.

要尽量避免rebalance,实在要触发也尽量避开高峰期.

因为消费组无法送kafka消费消息,会对kafka的tps产生影响,比如有数百个那么rebalance会很耗时.

  • ISR && OSR
    In Sync Replicas (所有与leader副本保持一定程度同步的副本在内组成ISR)
    osd 和 leader副本同步情况滞后太多的副本组成osr.

正常情下: follower副本都应该与leader副本保持一定程度的同步.
offset偏移高低水位.

日志分段存储:

规定了一个段位的log文件最大为1g大小

一个segment可以有 index(稀疏索引,log消息体,timeindex(时间位移))


  • Partition副本选举Leader机制
  1. 消费者消息Offset

Rebalance分区分配策略

image.png

写入方式, push到Broker.
消息路由,根据分区算法选择存储到哪一个partition.

image.png

HW和LEO详解

0 1 all 三种模式.

image.png

日志分段存储

.index 根据这个定位offset(kafka的稀疏索引)
.log 消息存储文件,存放offset和消息体
(每次都会往分区发送4k的消息,记录一条当前消息的发送时间戳对应的offset)
.timeindex 消息发送时间索引

你可能感兴趣的:(Day69 Kafka 设计原理详解)