rabbitMQ-kafka+mq作用目的

rabbitMQ-kafka+mq作用目的目录 rocketMq 架构 mq 作用消息幂等性判断 mq 消息积压 mq 消息过期 rabbitMq 优点缺点消息重复消费丢失数据 1 生产者丢数据 rabbitMqkafk mq 丢数据 rabbitMqkafk 消费者丢数据 rabbitMqKafk 顺序消费 rabbitMqkafk 架构 NameServer 是一个几乎无状态节点 可集群部署 在消息队列 RocketMQ 版中提供命名服务

目录

rocketMq架构 

mq作用

消息幂等性判断

mq消息积压

mq消息过期

rabbitMq 

优点

缺点

消息重复消费

丢失数据

1. 生产者丢数据

rabbitMq

kafka

2. mq丢数据

rabbitMq

kafka

3. 消费者丢数据 

rabbitMq

Kafka

顺序消费

rabbitMq

kafka


 

rocketMq架构 

rabbitMQ-kafka+mq作用目的

  • Name Server:是一个几乎无状态节点,可集群部署,在消息队列RocketMQ版中提供命名服务,更新和发现Broker服务。
  • Broker:消息中转角色,负责存储消息,转发消息。分为Master Broker和Slave Broker,一个Master Broker可以对应多个Slave Broker,但是一个Slave Broker只能对应一个Master Broker。Broker启动后需要完成一次将自己注册至Name Server的操作;随后每隔30s定期向Name Server上报Topic路由信息。
  • 生产者:与Name Server集群中的其中一个节点(随机)建立长连接(Keep-alive),定期从Name Server读取Topic路由信息,并向提供Topic服务的Master Broker建立长连接,且定时向Master Broker发送心跳。
  • 消费者:与Name Server集群中的其中一个节点(随机)建立长连接,定期从Name Server拉取Topic路由信息,并向提供Topic服务的Master Broker、Slave Broker建立长连接,且定时向Master Broker、Slave Broker发送心跳。Consumer既可以从Master Broker订阅消息,也可以从Slave Broker订阅消息,订阅规则由Broker配置决定。

nameServer,类似于一个 注册中心,broker进行注册,汇报自身信息,消费者、生产者与namerServer建立长连接,获取topic信息,然后去broker上进行数据操作。

mq作用

消息幂等性判断

mq消息积压

mq消息过期

批量重导,在流量低的时候,通过临时程序,将数据从数据库查询出来,然后重新灌入到mq

rabbitMq 

集群模式

优点

任何一个机器宕机了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它节点上去消费数据。

缺点

第一,这个性能开销也太大了吧,消息需要同步到所有机器上,导致网络带宽压力和消耗很重!

第二,这么玩儿,不是分布式的,就没有扩展性可言了,如果某个 queue 负载很重,你加机器,新增的机器也包含了这个 queue 的所有数据,并没有办法线性扩展你的 queue

rabbitMQ-kafka+mq作用目的

消息重复消费

rabbitMQ-kafka+mq作用目的

rabbitMQ-kafka+mq作用目的

丢失数据

rabbitMQ-kafka+mq作用目的

1. 生产者丢数据

rabbitMq

启动ack确认机制

确保说写 RabbitMQ 的消息别丢,可以开启 confirm 模式,在生产者那里设置开启 confirm 模式之后,你每次写的消息都会分配一个唯一的 id,然后如果写入了 RabbitMQ 中,RabbitMQ 会给你回传一个 ack 消息,告诉你说这个消息 ok 了。如果 RabbitMQ 没能处理这个消息,会回调你的一个 nack 接口,告诉你这个消息接收失败,你可以重试。而且你可以结合这个机制自己在内存里维护每个消息 id 的状态,如果超过一定时间还没接收到这个消息的回调,那么你可以重发

kafka

启用回调函数查看消息是否保存成功

失败重试机制

2. mq丢数据

rabbitMq

开启消息持久化

  • 创建 queue 的时候将其设置为持久化
    这样就可以保证 RabbitMQ 持久化 queue 的元数据,但是它是不会持久化 queue 里的数据的。
  • 第二个是发送消息的时候将消息的 deliveryMode 设置为 2
    就是将消息设置为持久化的,此时 RabbitMQ 就会将消息持久化到磁盘上去。

kafka

ack确认机制,kafka服务端配置,当所有的副本都同步完成之后,消息才保存成功,防止在leader宕机后,主从切换的时候,未同步的数据丢失,设置,ack=all或 -1 表示所有的副本同步完数据之后,消息才算保存成功

3. 消费者丢数据 

rabbitMq

关闭自动提交ack 

Kafka

关闭自动提交offset

顺序消费

rabbitMq

拆分多个 queue,每个 queue 一个 consumer,就是多一些 queue 而已,确实是麻烦点;

或者就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理。 

rabbitMQ-kafka+mq作用目的

kafka

写 N 个内存 queue,具有相同 key 的数据都到同一个内存 queue;然后对于 N 个线程,每个线程分别消费一个内存 queue 即可,这样就能保证顺序性。

rabbitMQ-kafka+mq作用目的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233235.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PyCharm安装配置谷歌浏览器驱动[通俗易懂]

    PyCharm安装配置谷歌浏览器驱动[通俗易懂]PyCharm配置安装Chorme驱动下载驱动查看Chorme的版本这是我的谷歌浏览器版本去网站下载对应的驱动软件下载后进入下载的目录,解压然后把这个文件放入Python的Scripts文件夹(首先你的Python环境变量已经配置过)驱动下载地址:http://chromedriver.storage.proxy.ustclug.org/index.html安装驱动进入设置,按照步骤点击安装selenium包然后会出现安装进程,添加完成之后开始测试驱动测试驱动创建一个Pyth

    2022年5月4日
    602
  • 配置Silverlight网站访问出现空白页面的解决办法

    配置Silverlight网站访问出现空白页面的解决办法
    打开IIS->站点属性->HTTP头->MIME类型->新建:
    扩展名:.xap    MIME类型: xapapplication/x-silverlight
    扩展名:.xaml  MIME类型: application/xaml+xml
     
    Silverlight的页面文件扩展名为xmal,项目编译后生成XAP包
    浏览器在页面呈现时无法对xmal、xap进行解析,
    需要加入MIME类型(MultipurposeIn

    2022年10月9日
    3
  • acwing-1169. 糖果(差分约束)「建议收藏」

    acwing-1169. 糖果(差分约束)「建议收藏」幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候, 老师需要满足小朋友们的 K 个要求。幼儿园的糖果总是有限的,老师想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。输入格式输入的第一行是两个整数 N,K。接下来 K 行,表示分配糖果时需要满足的关系,每行 3 个数字 X,A,B。如果 X=1.表示第 A 个小

    2022年8月11日
    1
  • 如何成为一名黑客(新手入门到大师全集)

    如何成为一名黑客(新手入门到大师全集)学前感言:1.这是一条坚持的道路,三分钟的热情可以放弃往下看了.2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发.3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答.4.遇到实在搞不懂的,可以先放放,以后再来解决.基本方向:1.web安全方面(指网站服务器安全方面,进行渗透测试,检测漏洞以及安全…

    2022年5月26日
    39
  • CSS设置超链接样式常用

    CSS设置超链接样式常用伪类名称 含义 示例 a:link 未单击访问时超链接样式 a:link{color:#9ef5f9;} a:visited 单击访问后超链接样式 a:visited{color:#333;} a:hover 鼠标悬浮其上的超链接样式 a:hover{color:#…

    2022年7月19日
    13
  • idea配置springboot热部署终极解决办法,解决热部署失效问题

    idea配置springboot热部署终极解决办法,解决热部署失效问题idea配置springboot热部署终极解决办法,解决热部署失效问题1.添加maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</a…

    2022年5月21日
    107

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号