目录一、 kafka简介
二、 Kafka架构方案
三、 Kafka安装
四、 Kafka Client API
4.1 Producers API
4.2 Consumers API
4.3 消息高可靠 At-Least-Once
4.4 消息高可靠Consumer
4.5 生产者、消费者总结
五、 Kafka运维
5.1 Broker故障切换
5.2 Broker动态扩容
5.2.1 增加分区
5.2.2 增加Broker Server
5.3 Kafka配置优化
5.4 数据清理
5.4.1 数据删除
5.4.2 数据压缩
5.5 Kafka运行监控
六、Kafka其他组件](#c6)
6.1 Kafka Connect
6.2 Kafka Stream
6.3 Kafka Camus
七、 Kafka典型应用场景
7.1 ETL
八、 参考资料
一、Kafka简介Kafka是LinkedIn使用scala开发的一个分布式消息系统,它以水平扩展能力和高吞吐率著称,被广泛用于日志处理、ETL等应用场景。Kafka具有以下主要特点:
- 同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。
- 可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。
- 分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的,无需停机即可扩展机器。
- 消息被处理的状态由消费者同步到zookeeper而非broker server中,当broker server失效时,通过副本切换机制选择一个新的broker server,消费者从zookeeper中读取之前消费消息的位置,不会引起消息丢失。
- 支持online和offline的场景。
LinkedIn有个三人小组出来创业了—正是当时开发出Apache Kafka实时信息列队技术的团队成员,基于这项技术Jay Kreps带头创立了新公司Confluent。Confluent的产品围绕着Kafka做的,与Kafka相比,Confluent包含了更多的组件:
- Confluent Control Center(闭源)。管理和监控Kafka最全面的GUI驱动系统
- Confluent Kafka Connectors(开源)。连接SQL数据库/Hadoop/Hive
- Confluent Kafka Clients(开源)。对于其他编程语言,包括C/C++,Python
- Confluent Kafka REST Proxy(开源)。允许一些系统通过HTTP和Kafka之间发送和接收消息。
- Confluent Schema Registry(开源)。帮助确定每一个应用使用正确的schema当写数据或者读数据到Kafka中。
|