kafka入门

kafka作为一个消息系统,主要用于解决应用解耦、异步消息、流量削峰等问题。

1.1 kafka流式数据平台

作为一个流式数据平台具备三个特点:

数据注入功能:提供事件流的发布和订阅;

数据存储功能:存储事件流数据的节点具有故障容错的特点;

流处理功能:能够对实时的事件流进行流式地处理和分析;

kafka对于以上功能的实现和组合:

一. 消息系统,包括以下两种模型:

kafka入门

1.队列模式(也叫点对点模式):多个消费者读取消息队列,每条消息只发送给一个消费者;

2.发布-订阅模式:多个消费者订阅主题,主题的每条记录会发布给所有的消费者;

如果要实现传统消息系统的“队列”模型,可以让每个消费者都拥有相同的消费组名称,这样消息就会负载均衡到所有的消费者;如果要实现“发布-订阅”模型, 则每个消费者的消费组名称都不相同,这样每条消息就会广播给所有的消费者。
 

二. 存储系统

任何消息队列要做到“发布消息”和“消费消息”的解桐合, 实际上都要扮演一个存储系统的角色,负责保存还没有被消费的消息 。 杏则,如果消息只是在内存中, 一旦机器右机或进程重启,内存中的消息就会全部丢失 。 Kafka也不例外,数据写入至UKafka集群的服务器节点时,还会复制多份来保证出现故障时仍能可用 。 为了保证消息的可靠存储, Kafka还允许生产者的生产请求在收到应答结果之前,阻塞式地等待一条消息,直到它完全地复制到多个节点上,才认为这条消息写入成功 。
三. 流处理系统

Kafka流处理 ( Kafka Streams )为开发者提供了完整的流处理API ,比如流的聚合、连接 、 各种转换操作 。 同时,
Kafka流处理框架内部解决很多流处理应用程序都会面临的问题 :处理乱序或迟来的数据、重
新处理输入数据 、 窗口和状态操作等 。

三者组合在一起:
Kafka则将消息系统、存储系统 、 流处理系统都组合在一起,构成了以Kafka为中心的流式数据-处理平台 。 它既能处理最新的实时数据,也能处理过去的历史数据 。Kafka作为流式数据平台的核心组件,主要包括下面4种核心的 API :
·生产者 ( producer )应用程序发布事件流Kafka的一个或多个主题。
·消费者 ( consumer )应用程序订阅Kafka的一个或多个主题,并处理事件流。
·连接器 ( connector )将Kafka主题和已有数据源进行连接,数据’可以互相导人和导出 。
·流处理 ( processor ) 从Kafka主题消费输入流,经过处理后,产生输州流到输出主题。