关键能力
一个流处理平台具有三个关键能力:
- 发布和订阅消息(流),在这方面,它类似于一个消息队列或企业消息系统;
- 以容错(故障转移)的方式存储消息(流);
- 在消息流发生时处理它们。
有何优势
- 构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。
- 构建实时流的应用程序,对数据流进行转换或反应。
核心概念
要了解kafka是如何做这些事情的,可以从下到上深入探讨kafka的能力。首先几个概念:
- kafka作为一个集群运行在一个或多个服务器上;
- kafka集群存储的消息是以topic为类别记录的;
- 每个消息(也叫记录record,我习惯叫消息)是由一个key,一个value和时间戳构成。
kafka有四个核心API:
- 应用程序使用 Producer API 发布消息到1个或多个topic(主题)中。
- 应用程序使用 Consumer API来订阅一个或多个topic,并处理产生的消息。
- 应用程序使用 Streams API充当一个流处理器,从1个或多个topic消费输入流,并生产一个输出流到1个或多个输出topic,有效地将输入流转换到输出流。
- Connector API可构建或运行可重用的生产者或消费者,将topic连接到现有的应用程序或数据系统。例如,连接到关系数据库的连接器可以捕获表的每个变更。
Client和Server之间的通讯,是通过一条简单、高性能并且和开发语言无关的TCP协议。并且该协议保持与老版本的兼容。Kafka提供了Java Client(客户端)。除了Java客户端外,还有非常多的其它编程语言的客户端。
首先来了解一下Kafka所使用的基本术语:
- Topic:Kafka将消息分门别类,每一类的消息称之为一个主题(Topic);
- Producer:发布消息的对象称之为主题生产者(Kafka topic producer);
- Consumer:订阅消息并处理发布的消息的对象称之为主题消费者(consumers)
- Broker:已发