Kafka
概述
Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据实时处理领域。
发布/订阅:消息的发布者不会讲消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接受感兴趣的消息
Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
消息队列
目前企业中比较常见的消息队列产品主要有Kafka、Activemq、Rabbit MQ、Rocket MQ等。
在大数据场景主要采用Kafka作为消息队列。在Java EE开发中主要采用Active MQ、Rabbit MQ、Rocket MQ。
传统消息队列的应用场景
传统的消息队列的主要应用场景包括
- 缓冲/削峰
- 解耦
- 异步通信
消息队列的两种模式
点对点模式

发布/订阅模式

Kafka基础架构
为方便扩展,并提高吞吐量,一个topic分为多个partition
配合分区的设计,提出消费者组的概念,组内每个消费者并行消费
为提高可用性,为每个partition增加若干副本,类似Name Node HA

Kafka命令行操作
| 参数 | 描述 |
|---|---|
| —bootstrap-server |
连接的Kafka broker主机名称和端口号 |
| —topic |
操作的topic名称 |
| —create | 创建主题 |
| —delete | 删除主题 |
| —alter | 修改主题 |
| —list | 查看所有主题 |
| —describe | 查看主题详细描述 |
| —partitions |
设置分区数 |
| —replication-factor |
设置分区副本数 |
| —config |
更新系统默认的配置 |
查看当前服务器中的所有topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list
创建first topic
bin/kafka-topics.sh --boot