前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识kafka

初识kafka

作者头像
爬蜥
发布2019-07-09 10:21:00
4280
发布2019-07-09 10:21:00
举报

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权威指南

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kafka优点有哪些
  • kafka的基本概念有哪些?
  • 常见请求类型?
  • 如何处理请求?
  • 附录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档