1.1 简介
Kafka是一个分布式流数据处理平台。这到底是什么意思呢?
我们认为一个流数据处理平台必须具备三个关键功能:
- 它允许你发布订阅流数据,在这方面,他类似一个消息队列或企业级消息系统(消息中间件);
- 它让你存储的流式数据具有容错机制;
- 它让你能实时处理流式数据
Kafka有什么好处? 它被用于两大类别的程序:
- 在系统和应用之间构建实时、可靠获取数据的流数据管道
- 构建用于数据转换、数据重复处理的实时流数据应用
要想明白kafka如何做这些事情,需要我们从上到下深入探索kafka的功能。
先熟悉几个概念:
- kafka可以作为集群运行在一个或多个的服务器上;
- kafka集群存储流数据类别的称为topic。
- 每条记录由一个key,value,timestamp组成的。
Kafka有4个核心的APIs:
- Producer API:允许某个应用程序发布流数据到一个或多个kafka topic
- Consumer API:允许某个应用程序订阅一个或多个kafka topic同时处理生产的流数据。
- Streams API:允许某应用程序作为流处理器,消费一个或多个topic输入流和生产一个或多个topic输出流,高效地转换输入输出流。
- Connector API:允许构建和运行可重用的生产者或消费者,连接kafka topic到现有的应用程序或数据系统、例如:一个连接到关系型数据库可能需要捕获一张表的每次改变。(可作为数据库日志同步功能)

在kafka中,客户端和服务器之间的通信采用简单的,高性能,开发语言无关的TCP协议。这种协议是有版本的,并且保持向后兼容性。Kafka提供了一个Java的客户端,同时也提供其他开发语言的客户端。