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 消息发送时间索引

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 可以实时处理大量数据,满足各种需求场景. Hadoop 批处理系统。 Storm/Spark 流式处理引擎 web...
    小周爱吃瓜阅读 121评论 0 0
  • 什么是Kafka Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。 最早设计的目的是作为Li...
    WEIJAVA阅读 8,569评论 4 76
  • Kafka Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(...
    redleaf阅读 349评论 0 2
  • 姓名:周小蓬 16019110037 转载自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw阅读 34,747评论 13 425
  • 1 kafka应用系统框架图 作为一款典型的消息中间件产品,kafka系统仍然由producer、broker、c...
    movee阅读 1,078评论 0 0