美文网首页
第三讲-消息队列

第三讲-消息队列

作者: liwsh | 来源:发表于2021-06-24 11:32 被阅读0次

1.kafka知识点

1.1 生产者

1.提高生产者性能,可以使用异步发送。生产者宕机会导致消息丢失,需要生成者有机制保证驱动流程到终态
2.生产者自己决定消息的重要性,配置不同的ack可以获取不一样的性能。ack为1代表主本ack即可,ack为0不需要主本ack,ack为-1要求主本和副本都ack。

1.2 消费者

  1. 消费者要幂等,kafka消息有可能重复
  2. 消费失败,需要进入死信重试
  3. 消费者catch所有异常,否则会导致kafka中断
  4. 消费者是拉模式,消费速率消费者控制,缺点是消息延迟。如果是推模式优缺点相反。RocketMQ也是拉模式。kafka和rocketMQ都采取长轮询模式规避拉模式的缺点,白话就是服务端和客户端配合,采用通知机制实现。具体参考:https://juejin.cn/post/6864909592061542407
  5. partition内保证有序

1.3 缺点

  1. kafka rebalance期间会导致消费者暂停消费,对于实时性要求非常高的服务是不可接受的。
    2.由于mafka本身模型的原因,一个partition只能被一个消费者消费,当消费者数量大于partition数量时,部分消费者分配不到partition。
    解决思路:增加中间层,中间层从broker拉数据,放入阻塞队列。消费者直接从阻塞队列取数据。

1.4 事务

2PC:同步阻塞,协调者单点
TCC:业务耦合大。TCC 分为三个阶段 try - confirm - cancel,try成功,confirm一定要能够成功。 try失败,cancel一定要能够成功。confirm,cancel要支持重试幂等。
事务消息:适用于异步更新的场景,并且对数据实时性要求不高的地方,解决消息生产者与消息消费者的数据一致性问题。比如下单后需要把购物车清空
rocketMQ事务原理:

image.png
RocketMQ 解决的是本地事务的执行和发消息这两个动作满足事务的约束,
而 Kafka 事务消息则是用在一次事务中需要发送多个消息的情况,保证多个消息之间的事务约束,即多条消息要么都发送成功,要么都发送失败。
参考:https://juejin.cn/post/6867040340797292558

1.5 RocketMq与kafka区别

1.topic数量激增,kafka性能下降比较厉害,rocketmq表现良好
2.事务消息,rocketmq支持,kafka不支持
3.kafka使用异步刷盘方式,异步Replication
RocketMQ支持异步刷盘,同步刷盘,同步Replication,异步Replication

  1. Kafka消费失败不支持重试
    RocketMQ消费失败支持定时重试,每次重试间隔时间顺延
  2. Kafka不支持定时消息
    RocketMQ支持定时消息
  3. Kafka理论上可以按照Offset来回溯消息
    RocketMQ支持按照时间来回溯消息,精度毫秒,例如从一天之前的某时某分某秒开始重新消费消息

1.6 kafka高性能

  1. 批量发送消息
    2.消息持久化为顺序写
  2. 零拷贝


    image.png

相关文章

  • 第三讲-消息队列

    1.kafka知识点 1.1 生产者 1.提高生产者性能,可以使用异步发送。生产者宕机会导致消息丢失,需要生成者有...

  • 消息队列:消息队列简介

    1. 什么是消息队列 消息队列(message queue),是一种应用程序的通信方法; 消息队列是 生产者-消费...

  • 消息中间件

    消息中间件,也可以叫做中央消息队列或者是消息队列(区别于本地消息队列,本地消息队列指的是 JVM 内实现的队列实现...

  • 消息队列对比

    引用: 常用消息队列对比消息队列及常见消息队列介绍 常用消息队列 1. RabbitMQ 用erlang语言开发的...

  • 消息队列应用-使用异步队列就解耦了吗

    消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主...

  • Kafka常见问题解决

    概要:我们使用消息队列,就需要知道为什么要用消息队列,什么场景需要用消息队列,使用消息队列能带来哪些好处和消息队列...

  • 进程间通信(下)

    消息队列 在UNP第二卷中详细介绍了两种消息队列:Posix消息队列和System V消息队列。这两种消息队列很相...

  • APUE读书笔记-15进程内部通信(6)

    7、消息队列 消息队列是存放在内核中的消息的链表,通过消息队列标识进行标记。我们把消息队列称为队列,把它的标识称为...

  • java消息机制

    1.什么是消息队列? 1.消息队列是一个队列,先进先出,你无法读取消息队列中间的消息,只能按照顺序,从消息队列的头...

  • springboot项目架构(4)activemq、rabbit

    消息队列实现 支持的消息队列 ActiveMq RabbitMq RocketMq Kafka 各个队列实现队列与...

网友评论

      本文标题:第三讲-消息队列

      本文链接:https://www.haomeiwen.com/subject/lumbyltx.html