Kafka
概念
-
1.分布式的 消息队列
-
2.可分区 可复制
-
3.具有类似于JMS的特性
- JMS是java提供的消息队列的规范
-
4.依赖zookeeper协调集群信息
-
5.topic、broker、producer、consumer
优点
-
1.高吞吐量
-
2.持久化数据存储
-
不用内存缓存数据 直接写入磁盘
- 1.平时磁盘读写慢 是因为读的小文件多 寻址时间长
- 2.Kafka按顺序连续读写,充分发挥了磁盘的性能,速度并不慢
- 3.与此同时不必再担心内存数据的丢失
-
-
3.分布式易于扩展
- producer、consumer、broker均可以设置多个,无需停机即可扩展机器
-
4.客户端状态维护
-
消息被处理的状态在consumer被维护 而不是由server端维护
- consumer端直接告诉server端从哪里开始读取,这样server端不必提供性能来处理会话管理相关的事务
-
Topic
-
将一组消息归纳的单位
-
多个项目使用同一个kafka集群,为了区分不同的项目,使用各自的topic
-
每个topic,进行分区
-
每个分区在集群内有多个副本
- 为了负载均衡 失败恢复
-
每个分区具有一个leader,该分区其他副本所在服务器为flower
- leader负载读和写 flower负责读 并复制leader信息
-
-
每个分区由有序的消息组成,并且消息会被连续追加,每个消息都有唯一标识
-
在配置时间内 无论消息是否被消费 都会被保留
- 为了保证磁盘连续读写的性能,所以不会删除
- 因此kafka允许读取之前读取过的内容
- 配置时间过后 消息被删除
Producer
- 将消息发送到topic中
- 负责决定发送到哪个分区
Consumer
-
唯一需要维护的是数据在日志中读取的位置,以便到server中找到要读取的消息
-
模式
-
队列模式
- 消费者竞争数据
-
发布-订阅模式
- 消费者共享数据
-
消费者组
- 组外共享 组内竞争
-