Kafka相关定义

2022-08-18  本文已影响0人  TlyZxj

Kafka定义:是一个\color{red}{分布式}的基于\color{red}{发布/订阅模式}\color{red}{消息队列}(Message Queue),主要应用于大数据实时处理领域。现在被定义为是一个\color{red}{开源的分布式事件流平台}

发布/订阅:消息的发布者\color{red}{不会将消息直接发送给特定的订阅者},而是将发布的消息分为不同的类别,\color{red}{订阅者只接收感兴趣的消息}

试想,若 kafka是直接将消息推送给特定的订阅者,那么订阅者的消费速度怎么保证能跟得上推送的速度?面对不同的订阅者,怎么保证它们消费的速率一致?


作为消息队列,主要应用场景包括:\color{red}{缓存/消峰、解耦和异步通信}
1、缓存/消峰
有助于控制和优化数据经过系统的速度,解决生产消息和消费消息处理速度不一致的情况。
2、解耦
弱化双方的关联关系,不再要求其强依赖的关系。
假设我们要对一件事件进行解耦动作,首先我们抓住事件的主线,将分支事件进行拆解出去。主线不依赖于分支事件的执行情况,分支事件不依赖于主线的执行返回。
解耦的好处在于:

3、异步通信
允许用户把一个消息放入到消息队列中,但不立即处理它,然后在需要的时候再去处理它们。

异步通信

消息队列的两种模式:

用 Rabbit MQ与 Kafka的相关概念进行对比的话:

Rabbit MQ Kafka
queue topic
同一个消息被多个消费者消费:往 exchange(绑定多个 queue)上推送消息 多个消费组消费同一个 topic
消费完成后就删除掉 不删除,按照一定的策略进行删除;消费后改变偏移量 offset

Kafka的基础架构:

注意看,同一个分区的 leader和 follower分布在不同的服务器 broker上,这样就能很好的避免因为某个 broker挂掉后造成服务不可用了。
一个分区只能被一个消费者进行消费,而一个消费者可以消费多个分区中的 topic消息!

Kafka的基础架构
上一篇 下一篇

猜你喜欢

热点阅读