专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

初识kafka

kafka是用来干嘛的? 一个系统通常拥有许多的应用场景,比如聊天,购物,前端交互等,每个场景的数据进行单独分析的时候需要有各自的队列来搜集数据,然后分发给各自的后台来处理数据,各自的维护成本大,kafka则可以用来解决这些问题,它提供了多个数据的入口,并可以分发给下游多个地方消费

kafka优点有哪些

1、 支持多个生产者

2、 支持多个消费者从一个单独的消息流上读取数据,而且消费者之间不会相互影响。如果消费者群主,可以保证整个群组对每个给定的消息只处理一次

3、 消息可以落地磁盘,如果消费者被关闭了,可以从上次停止的地方继续读取

4、 支持broker的扩展

5、 能保证亚秒级的消息延迟

kafka的基本概念有哪些?

  • 消息:kafka的数据单元【相当于表的一条记录】。这个数据没有特别的格式,按照字节存储 消息模式:对字节形式消息的一种结构定义,便于理解

  • 批次:一组消息

  • 主题:消息的分类

  • 分区:消息的记录,一个主题包含多个分区,分区之间不能保证顺序,但是一个分区可保证有序

  • 偏移量:消息最后读取的地方

  • 消费者群组:一个或者多个消费者共同读取一个主题,它保证一个分区只被一个消费者使用
  • 消费者对分区的所有权:消费者与分区之间的映射关系
  • broker:一个独立的kafka服务器

常见请求类型?

  • 生产请求:生产者发送的请求,包含客户端写入broker的消息。必须发给分区的首领副本。broker接收到生产请求时,会做一些基本验证,比如是否有写入权限?acks值是否有效(消息是否写成功的标志)?acks=all时是否有足够多的同步副本保证消息被安全写入?。然后消息被写入磁盘(linux上消息被写到文件系统缓存,但不保证何时刷到磁盘),kafka不等待写到磁盘上,消息写入分区首领后,broker检验acks,ackas条件满足后,返回给客户端

  • 获取请求:从broker读取消息时发的请求。必须发给分区的首领副本。它可以指定请求的偏移量,数据量上限和下限,以及等待累积数据的时长,时长满足但未达到下限仍然可以返回结果。只有当所有的同步副本数据完成后,数据才会发送给消费者,否则返回空

  • 元数据请求:客户端获取首领副本的方式。它的请求包含客户端感兴趣的主题列表,响应指明这些主题所包含的分区,每个分区的副本,谁是首领副本(这些信息每个broker都有缓存)

如何处理请求?

1、 kafka提供一个二进制协议,指定请求消息格式。broker会在它所监听的端口上运行Acceptor线程,它会创建连接给processor(网络线程)程处理,processor获取请求消息后扔到请求队列,由IO线程来处理请求,然后结果被写入响应队列,processor从中取出响应给kafka客户端。
2、 kafka客户端一般会缓存各首领副本的信息,当发送请求接受的broker不是首领副本的时候,返回 非分区首领 异常,这时候客户端会先刷新元数据,再重新发送请求(也会有一个时间间隔来定时更新客户端的元数据)

附录

kafka权威指南

文章永久链接:https://tech.souyunku.com/47313

未经允许不得转载:搜云库技术团队 » 初识kafka

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们