Kafka相关定义

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

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

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


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

  • 提升接口的响应的 RT(异步消息队列,不再占用主线程的资源);
  • 能够提升接口的可用性(不会因为分支事件的执行失败影响主线的执行);

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

异步通信

消息队列的两种模式:

  • 点对点模式。其中包括了 poll拉模式,push推模式。
  • 发布/订阅模式


    消息队列两种模式

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

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

Kafka的基础架构:

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

Kafka的基础架构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容