这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天.
Kafka
Kafka是一个高吞吐、分布式、基于发布订阅的消息系统,利用Kafka技术可以在廉价的PC Server上搭建起大规模消息系统。
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒。
- 可扩展性:kafka集群支持热扩展。
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)。
- 高并发:支持数千个客户端同时读写。
- 支持实时在线处理和离线处理:可以使用Storm这种实时流处理系统对消息进行实时进行处理,同时还可以使用Hadoop这种批处理系统进行离线处理。
如何使用Kafka
创建集群 ——> 新增Topic ——> 编写生产者逻辑 ——> 编写消费者逻辑。
基本概念
Topic:逻辑队列,不同的Topic可以建立不同的Topic。
Cluster:物理集群,每个集群中可以建立多个不同的Topic。
Producer:生产者,负责将业务消息发送到Topic中。
Consumer:消费者,负责消费Topic中的消息。
ComsumerGroup:消费者组,不同组Consumer消费进度互不干涉。
Topic内部
Offset:消息在partition内的相对位置信息,可以理解为唯一的ID,在partition内部严格递增。
每个分片有多个Replica,Leader Replica 将会从ISR中选出。
数据复制
重启操作
Kafka问题总结
- 运维成本高
2.对于负载不均衡的场景,解决方案复杂
3.没有自己的缓存,完全依赖 Page Cache
4.Controller 和 Coordinator 和Broker 在同一进程中,大量的IO会造成性能下降