kafka 研究和实战1
来自官网的定义
Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue)消息队列。
Kafka是 一个开源的分布式事件流平台 (Event Streaming Platform)spark/flink 等级的框架。
消息队列场景
主要用来 缓存/消峰、解耦和异步通信
- 缓存/消峰 缓解系统不能够及时处理的大批量的并发的请求。
- 解耦 消息队列两端的应用没做很多的限制。
- 允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。
前两点实际上Redis RabbitMQ 都能实现。我认为kafka独特的机制有: 分组和分区消费机制,分布式系统以及基于内存+硬盘的存储机制的统一结合。
kafka的一些核心的概念
- Producer:消息生产者
- Consumer:消息消费者
- Consumer Group(CG):消费者组,由多个 consumer 组成。
消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。也就是分区和消费者一一对应。
多个消费者组订阅相同的主题,每个消费者组的消费数据都是全量的。
分区多,消费者组内可添加更多的消费者,实现更大量的并发消费。 - Broker:一台 Kafka 服务器就是一个 broker, 是独立服务