我们通常会使用环形数组或者链表来实现消息队列,那么假设,我某一个队列运行的服务器只有 32G 内存,而我的这个队列因为消息堆积达到了 32G 内存的占用量,或者同一台机器上多个队列的内存占用总和达到机器内存总量。
这种情况下,解决方案似乎只有拒绝插入新数据,或者就是多台机器维护同一个队列,如果想要用两台机器维护同一个队列该怎么设计实现比较好?
1
maggch97 2023-02-18 23:32:48 +08:00
虽然但是,分布式消息队列不是有很多?
|
2
FrankAdler 2023-02-19 01:57:33 +08:00
参考现有的分布式消息队列:分片、分区的概念
|
3
documentzhangx66 2023-02-19 18:15:25 +08:00
你的业务所产生的消息队列的数据,真的会撑满 32G 内存?就算 32G 不是文字数据,全是图片数据,非大厂业务,也可以支撑一段时间。
建议检查一下你的策略,特别是那些在一定时间内,没被消费的数据,是否真有必要还让它耗在物理内存里。 如果有必要,建议增加 SSD 作为中间缓存。 如果一定要增加内存,给单机添加内存,会比上双机的方案要好得多。 |