kafka的一万字精华总结

什么是 Kafka

    Kafka 是一个分布式的,支持多分区、多副本的分布式消息流平台,它同时也是一款开源的**基于发布订阅模式的消息引擎系统,**简单来说就是一个分布式消息队列。
    在2.8版本之前,无论是Kafka 集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。2.8版本之后使用内嵌的KRaft作为zookeeper部分功能的替代品。

    如上图所示,一个典型的 Kafka 集群中包含若干Producer,若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。

使用场景

活动跟踪

    kafka可以用来跟踪用户行为,比如我们经常回去淘宝购物,你打开淘宝的那一刻,你的登陆信息,登陆次数都会作为消息传输到 kafka,当你浏览购物的时候,你的浏览信息,你的搜索指数,你的购物爱好都会作为一个个消息传递给 kafka,这样就可以生成报告,可以做智能推荐,购买喜好等。

传递消息

    kafka另外一个基本用途是传递消息,应用程序向用户发送通知就是通过传递消息来实现的,这些应用组件可以生成消息,而不需要关心消息的格式,也不需要关心消息是如何发送的;度量指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。

日志记录

    Kafka 的基本概念来源于提交日志,比如我们可以把数据库的更新发送到 kafka上,用来记录数据库的更新时间,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。

流式处理

    流式处理是有一个能够提供多种应用程序的领域;限流削峰:kafka多用于互联网领域某一时刻请求特别多的情况下,可以把请求写入kafka中,避免直接请求后端程序导致服务崩溃。

基本数据结构

Producer

    生产者,发送消息的一方,负责创建消息发给kafka,会把消息发送到指定的topic里。

Comsumer

    消费者,连接kafka并接收消息,对指定的topic进行消费消息。

Comsumer group

    一个消费者组可以包含n个消费者,同一组的消费者会去消费指定的topic,保证不会重复消费同一条消息。
    因为topic里包含多个partition,kafka规定一个partition不能由多个comsumer消费,如果消费组的comsumer数量小于partition的,就会导致多余的comsumer线程空闲,如果大于那么comsumer会进行轮询直到消费完所有的partition,所以消费组里的comsumer的数量跟partition一致可达到最高利用率

Broker

    服务代理节点,也就是服务节点,kafka的服务器。

Topic

    kafka的消息以topic为单位进行划分,生产者将消息发送到特定的topic,而消费者负责订阅topic的消息并进行消费。

Partition

    topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。消息到来时会使用轮询制往每个partition写入,如下图。

    kafka默认使用的是hash进行分区,所以同一个topic下的不同partition包含的消息是不同的。
    物理上每个partition对应的是一个文件夹,其命名规则为topic名称+有序序号,第一个partiton序号从0开始,序号最大值为partitions数量减1。而文件夹里存储的当然是文件,这个文件就是segment。

Segment

    partition包含多个segment,每个segment对应一个文件,partition全局的第一个segment从0开始,后续每个segment文件名为上一个segment文件最后一条消息的offset值。数值最大为64位long大小,19位数字字符长度,没有数字用0填充。
    segment可以手动指定大小(log.segment.bytes),当segment达到阈值时,将不再写数据。
    记录只会被append到segment中,不会被单独删除或者修改,每个segment中的消息数量不一定相等。
    而segment又分为索引跟手数据文件,2个文件是相关对应的,如下图:

  • 索引文件:以.index结尾的文件,采取稀疏索引存储方式,它减少索引文件大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫小八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值