第一章 Kafka概述
1.1 定义
Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
1.2 消息队列
1.2.1 应用场景
传统消息队列有同步处理和异步处理。同步处理是说当流程走完后才能向用户返回结果;异步处理是某一流程结束后,就可以向用户返回结果,后续步骤可以在向用户返回结果后接着执行。
使用消息队列(MQ)的好处:
1)解耦合
MQ两侧的内容可以修改和扩展,只要保持接口不变
2)可恢复性
系统的一部分组件失效时,不会影响到整个系统。当用户填写的注册信息加入到MQ消息队列后,即使运营商发送消息的进程出现故障,也可以在故障修复后从MQ中读取消息并向用户发送消息。不会影响前一阶段的用户注册。
3)缓存
当生产者的生产速率过大而消费者的消费速率低于前者时,可能导致消息丢失或者积压。通过MQ可以先将消息写入到队列中,消费者直接从队列中获取。
4)峰值处理能力
如果某一时刻有源源不断的消息加入到MQ中,运营商不会因为并发量过大而宕机。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
5)异步通信
消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
1.2.2 消息队列的两种模式
(1)点对点模式
消费者主动拉取数据,消息收到后清除队列中的消息,对一个消息而言只能被一个消费者读取消费
(2)发布-订阅模式
生产者将消息发布到topic中,每个订阅了这个topic的消费者都会消费这个topic的消息。同时可以有多个消费者消费同一条消息。
1.3 Kafka基础架构
Kafka Cluster:每个集群中的机器都有一个brokerID,而且ID不可重复
Producer:消息生产者,向kafk broker的某个topic生产消息
Cosumer:消息消费者,从kafka broker中某个topic取消息
Consumer Group(CG):消费者组,由多个consumer组成。
规则: