Kafka知识学习

一、什么是Kafka?

  Apache Kafka是一个社区分布式事件流平台,能够每天处理数万亿个事件。Kafka最初被设想为消息传递队列,它基于分布式提交日志的抽象。自2011年由LinkedIn创建并开源以来,Kafka已迅速从消息队列发展成为一个成熟的事件流平台。用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。活动数据包括网站的页面访问量、被查看内容方面的信息以及搜索情况等。这类数据通常的处理方式是把各种活动以日志的形式存入某种文件,并周期性的将这些文件进行统计分析。运营数据指的是服务器的性能数据(CPU、IO 使用率、请求时间、服务日志等等数据)

 

二、Kafka的专用术语

  BrokerKafka集群包含一个或多个服务器,这种服务器被称为 Broker。

   Topic每条发布到服务器上的信息都会有一个类别,这个类别被称为Topic。同一 Topic 下的信息在物理上是分开存储的,在逻辑上是在一个 Topic 的消息虽然是保存到一个或多个 Broker 上的,但是用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处。

  Partition每个 Topic 包含一个或多个 PartitionPartition 是物理概念上的分区。

  Producer:负责发布消息到 Kafka broker

  Consumer:消息消费者,向 Kafka broker 读取消息的客户端。

  Consumer Group:每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)。

 

三、Kafka的交互流程 

  Kafka 是一个基于分布式消息发布-订阅系统,它被设计成快速、可扩展的、持久的。与其他消息发布-订阅系统类似,Kafka 在主题当中保存消息的信息。生产者向主题写入数据,消费者从主题读取数据。由于 Kafka 的特性是支持分布式,同时也是基于分布式的,所以主题也是可以在多个节点上被分区和覆盖的。

  信息是一个字节数组,程序员可以在这些字节数组中存储任何对象,支持的数据格式包括 String、JSON、Avro。Kafka 通过给每一个消息绑定一个键值的方式来保证生产者可以把所有的消息发送到指定位置。属于某一个消费者群组的消费者订阅了一个主题,通过该订阅消费者可以跨节点地接收所有与该主题相关的消息,每一个消息只会发送给群组中的一个消费者,所有拥有相同键值的消息都会被确保发给这一个消费者。

  Kafka 设计中将每一个主题分区当作一个具有顺序排列的日志。同处于一个分区中的消息都被设置了一个唯一的偏移量。Kafka 只会保持跟踪未读消息,一旦消息被置为已读状态,Kafka 就不会再去管理它了。Kafka 的生产者负责在消息队列中对生产出来的消息保证一定时间的占有,消费者负责追踪每一个主题 (可以理解为一个日志通道) 的消息并及时获取它们。基于这样的设计,Kafka 可以在消息队列中保存大量的开销很小的数据,并且支持大量的消费者订阅。

 

转载于:https://www.cnblogs.com/Lyh1997/p/11457709.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值