Kafka知识点记录

1. Kafka是什么

kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),消息队列简称MQ,MQ属于Java中的JMS规范,而Kafka是JMS规范的一种实现

2. 消息队列应用

同步处理优化为异步处理举例
在这里插入图片描述
引入消息队列优点

  1. 解耦(实现角度):要增强短信功能,并不会影响到修改注册信息写入数据库逻辑。
  2. 提高系统可用性(系统的可用性角度):发送短信某一段时间不可用了,并不会影响到注册功能的使用。
  3. 缓冲作用,匹配生产者与消费者的处理速度:一般来说生产消费模型都是需要缓冲的,总有一个快慢。如上述注册功能需要10ms,发送短信需要500ms,如果我们引入MQ,让发送短信功能在MQ消费使用,那么我们的注册功能可以提供性能50倍
  4. 流量削峰: 对于突发流量,可能将我们的应用直接击垮,由于MQ具有缓冲作用可以顶住突发压力。如果MQ也顶不住了,我们希望不可用的是中间件MQ,而不是整个应用

3. 消息队列的两种模式

点对点模式( 一对一 ,消费者主动拉取数据,Queue收到确认消费后清除消息)
在这里插入图片描述
消息生产者

  1. 生产消息从队列尾部顺序发送到Queue中

消息消费者

  1. 消息消费者从Queue头部取出消息
  2. 消息消费者处理完消息后,向Queue发出已消费的信号
  3. 从Queue中删除该消息
  4. 重复步骤1,若没有消息,阻塞

发布/订阅模式( 一对多 ,Queue收到确认消费后不会清除消息,故需要维护消费的偏移量)

Topic概念,一个Topic可以理解为一个Queue。
生产者可以向Topic中发送消息,消费者只要订阅了Topic,即可收到生产者发送的消息

在这里插入图片描述
消息生产者

  1. 生产消息从队列尾部顺序发送到Queue中

消息消费者

  1. 消息消费者从Queue头部取出消息
  2. 消息消费者处理完消息后,向Queue发出已消费的信号
  3. 重复步骤1,若没有消息,阻塞

多个消息消费者消费同一个topic是互不影响的

4. Kafka基础架构

在这里插入图片描述

  1. Producer :消息生产者,向kafka broker 发消息的客户端;
  2. Consumer :消息消费者,向kafka broker 取消息的客户端;
  3. Consumer Group (CG):消费者组,由多个consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者
  4. Broker :一台kafka 服务器就是一个broker。一个集群由多个broker 组成。一个broker可以容纳多个topic。
  5. Topic :可以理解为一个队列,生产者和消费者面向的都是一个topic;
  6. Partition:为了实现扩展性,一个非常大的topic 可以分布到多个broker(即服务器)上,一个topic 可以分为多个partition,每个partition 是一个有序的队列;
  7. Replica:副本,为保证集群中的某个节点发生故障时,该节点上的partition 数据不丢失,且kafka仍然能够继续工作 kafka提供了副本机制,一个 topic的每个分区都有若干个副本,一个leader和若干个 follower
  8. leader 每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。
  9. follower 每个分区多个副本中的“从”,实时从 leader中同步数据,保持和 leader数据的同步。 leader发生故障时,某个 follower会成为新的 follower。
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值