mq相关知识

为什么使用mq?

解耦、异步、消峰

mq怎么保证高可用?

比如kafaka高可用:一个topic有多个partition分布在不同的机器上,类似于分片,每个partition对应有至少两个副本纵向部署在不同机器上,分布主从。

mq 选型问题?

activemq:万级请求,很成熟,但社区不活跃,不是分布式

rabbitmq:延时很低,管理界面强大,社区活跃,不是分布式

rocketmq:单机吞吐量十万级,阿里的可靠,java的源码

kafaka:单机十万级,分布式mq,topic的多个partition分布在不同的机器上,一个partition又在不同机器上有不同的副本

mq积压问题解决?

1  可以改下代码,将原来3个partition的数据送到12个partition里消费

2、如果你消息设置了过期时间,然后积压又没了,就从源头重新拉取。

3、如果积压到一定程度,mq磁盘满了,我们可以直接消费,然后从源头重新拉取。

mq重复性问题?(kafaka重启,但offset没有ack,那么会重复消费)。

1、redis判重。

2、mysql设置唯一索引。

mq 消息丢失问题?

场景一:生产者写消息过程中 网络传输丢了,或者消息到mq没存下来

a、try catch 重试机制,但会阻塞 不推荐

b、回调函数 confirm机制,异步通知。

场景二:mq接受到消息暂存在内存,但是重启丢了

开启持久化磁盘功能

场景三: 消费者没来得及消费,但mq以为自己已经消费掉了

将autoack关闭,每次你自己处理完一条消息后才手动ack.

如何设计一个mq?

1、分布式功能,参考kafaka

2、可扩容

3、高可用-多个副本

4、消息丢失-持久化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值