简介
- Apache Kafka,2011年成为开源Apache项目,然后于2012年成为First-class Apache项目。
- Kafka是用Scala和Java编写的。
- Apache Kafka是基于发布订阅的容错消息系统。 它是快速,可扩展和设计分布。
优点:可以横向扩展、高可靠,而且还变态快
- 消息结构:Kafka内部是一个消息队列
组件
一、Broker(代理)
- Kafka集群通常由多个代理组成以保持负载平衡。
- Kafka代理是无状态的,所以他们使用ZooKeeper来维护它们的集群状态。
- 一个Kafka代理实例可以每秒处理数十万次读取和写入,每个Broker可以处理TB的消息,而没有性能影响。
- Kafka经纪人领导选举可以由ZooKeeper完成。
二、ZooKeeper
- ZooKeeper用于管理和协调Kafka代理。
- ZooKeeper服务主要用于通知生产者和消费者Kafka系统中存在任何新代理或Kafka系统中代理失败。
- 根据Zookeeper接收到关于代理的存在或失败的通知,然后产品和消费者采取决定并开始与某些其他代理协调他们的任务。
三、Producers(生产者)
- 生产者将数据推送给经纪人。
- 当新代理启动时,所有生产者搜索它并自动向该新代理发送消息
- Kafka生产者不等待来自代理的确认,并且发送消息的速度与代理可以处理的一样快。
四、Consumers(消费者)
- 因为Kafka代理是无状态的,这意味着消费者必须通过使用分区偏移来维护已经消耗了多少消息。
- 如果消费者确认特定的消息偏移,则意味着消费者已经消费了所有先前的消息。
- 消费者向代理发出异步拉取请求,以具有准备好消耗的字节缓冲区。
- 消费者可以简单地通过提供偏移值来快退或跳到分区中的任何点。
- 消费者偏移值由ZooKeeper通知。
简单步骤整理:
- 启动服务
Kafka使用Zookeeper,所以如果你没有的话需要首先启动Zookeeper服务。你可以使用kafka自带的脚本启动一个简单的单一节点Zookeeper实例)
- 创建一个主题
- 发送消息
- 启动一个消费者
- 设置多个代理集群
- 使用Kafka Connect导入导出数据
- 用Kafka Streams处理数据
详细使用学习教程:w3cschool