1 核心API
● Producer API
允许一个应用程序发布一串流式数据到一或多个Kafka topic。
● Consumer API
允许一个应用程序订阅一个或多个topic ,并且对发布给他们的流式数据进行处理。
● Streams API
允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换。
● Connector API
允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table) 的所有变更内容。
在Kafka中,客户端和服务器之间的通信是通过简单,高性能,语言无关的TCP协议完成的。
此协议已版本化并保持与旧版本的向后兼容性。Kafka提供多种语言客户端。
2 Kafka API - producer
- Producer会为每个partition维护一个缓冲,用来记录还没有发送的数据,每个缓冲区大小用batch.size指定,默认值为16k.
- linger.ms为,buffer中的数据在达到batch.size前,需要等待的时间
- acks用来配置请求成功的标准
- send异步方法
3 Kafka API - Consumer
3.1 Simple Cnsumer
位于kafka.javaapi.consumer包中,不提供负载均衡、容错的特性每次获取数据都要指定topic、partition、offset、 fetchSize
3.2 High-level Consumer
该客户端透明地处理kafka broker异常,透明地切换consumer的partition, 通过和broker交互来实现consumer group级别的负载均衡。
- Group
4 整体架构