kafka是什么
是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统。
是一个高性能跨语言分布式发布/订阅消息队列系统。
Kafka是一种发布-订阅模式。(消息传递的主要模式:点对点传递模式、发布-订阅模式)
kafka特点
- 提供消息持久化能力
- 高吞吐率
- 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输
- 同时支持离线数据处理和实时数据处理
- 异步通信
两种消息传递模式比较
特点\模式 | 点对点 | 发布-订阅 |
1 | 消息持久化到一个队列中 | 消息被持久化到一个topic中 |
2 | 一条消息只能被消费一次 | 一条数据可以被多个消费者(订阅了topic的订阅者)消费 |
3 | 数据被消费后被立马删除 | 数据被消费后不会立马删除 |
4 | 即使有多个消费者同时消费数据,也能保证数据处理的顺序 | 保证一个Partition内的消息的有序性 |
kafka相关术语介绍
broker | topic | partition | leader | follower | |
是什么 | Kafka 集群包含一个或多个服务器,服务器节点称为broker | 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic | topic中的数据分割为一个或多个partition(分区) | 每个partition有多个副本,其中有且仅有一个作为Leader | Follower跟随Leader |
作用 | broker存储topic的数据 | 消费者订阅topic后可以消费该topic中所有的数据 | 将topic内的数据分布到集群,防止所有数据屯在一个broker造车性能瓶颈,实现水平扩展 | 负责数据的读写的partition | Follower与Leader保持数据同步。如果Leader失效,则从Follower中选举出一个新的Leader |
其他 |
| 物理上不同Topic的消息分开存储 |
| 当Follower与Leader挂掉、卡住或者同步太慢,leader会把这个follower从“in sync replicas”(ISR)列表中删除,重新创建一个Follower。 |