1.Kafka是一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
2.Kafka生动描述:Kafka就相比一个果篮,果篮里有很多水果,生产者就是往里放水果的爸爸妈妈,消费者就是拿水果的孩子。这其中,Kafka就相当于是这个篮子,是用来存东西的。
3.Kafka的一些重要概念:
- massage: kafka中最基本的传递对象,有固定格式。
- topic: 一类消息,如page view,click行为等。
- producer: 产生信息的主体,可以是服务器日志信息等。
- consumer: 消费producer产生话题消息的主体。
- broker: 消息处理结点,多个broker组成kafka集群。
- partition: topic的物理分区,每个partition都是一个有序队列。
- segment: 多个大小相等的段组成了一个partition。
- offset: 一个连续的用于定位被追加到分区的每一个消息的序列号,最大值为64位的long大小,19位数字字符长度。
4.Kafka的优势:
-
设计为简单轻量的客户端库,可以轻松的嵌入到任何Java程序中
-
除了Kafka本身作为内部消息传递层之外,没有外部依赖
-
通过kafka的分区模型还实现横向扩展,并且保证数据的有序性
-
支持本地状态容错,可以实现快速高效的有状态操作,如窗口链接和聚合
-
支持一次处理语义,即使在处理过程中出现Streams客户端或Kafka代理失败时,每条记录也只会被处理一次
-
采用一次一笔记录处理,实现毫秒级处理延迟
-
支持基于事件时间的窗口操作并支持对延迟到达记录的处理
-
提供必要的流处理原语,包括高级Streams DSL和底层的Processor API