目录
Kafka 简介
- 中间件,如Kafka,用来存储消息的软件(组件)
- 程序员可以在消息队列中 存 取 消息
- 很多时候消息队列是临时存储(设定期限:消息在MQ中保存10天)
消息
- 存在topic主题,类似数据库中的表,但是是半结构化的
- 一般存同一类型的消息,但有些情况下也可以存不同类型的
- 主题可以包含多个分区Partition,不同的分区存在不同的服务器上,使Kafka集群能够线性拓展
- 存在分区内的消息是不可变的
- Kafka可以通过偏移量(下标)对消息进行提取,无法对消息的内容检索或查询
- 分区损坏数据丢失,Kafka通过副本机制(副本也是分区),保证数据可靠性(replication-factor=3 // 副本因子为3)
- Kafka会选择一个副本作为主分区leader,用于数据的读取
- 其他副本为follow,只复制leader的数据
- 维护一个ISR的集合(正在同步的副本集),监控数据同步的状态
- 消息形式:键值对
- 如果不指定key,key的值为空,如果存消息使key为空,Kafka会将消息平均匀到各个分区
- 如果消息指定key,那么相同key的消息会存在同一分区,保证相同性的消息按照一定顺序进行写入
- 消息代理Broker
- Kafka集群是由多个Broker组成的,Broker负责消息的读写请求,并将消息存入磁盘中。
- 通常,一台服务器就是一个Broker
- 举例:有多个Broker组成每个Kafka集群,每个Broker中有多个分区,其中一个为主分区leader,其他几个为follow。这个Broker就负责处理这个leader的读写请求,负责在follow上同步数据