2016 - 2024

感恩一路有你

java怎么处理高并发 高并发用消息队列会延迟,还有什么好方法解决?

浏览量:2989 时间:2021-03-18 06:44:42 作者:admin

高并发用消息队列会延迟,还有什么好方法解决?

首先,您需要知道队列的应用场景在哪里。一般来说,当后台需要大量的逻辑处理或计算资源时,队列也可以改善前端的用户体验。例如:微博-关注/粉丝。如果你有1000个粉丝,你发一个微博,1000个粉丝就会收到你的消息。消息队列适合这种情况。原因:1。推送1000个动态数据是一个耗时的操作,发送微博页面需要尽快响应,这样就可以将任务放入队列中。微博发送后,会立即生效,但允许粉丝延迟接收微博,通过队列实现也满足需求;3.队列处理可以采用高性能集群架构。架构实现了关注点的分离,系统扩展更加灵活

如果需要根据数据量和业务复杂度综合评估硬件级别,建议购买两台云主机(4核8g内存)构建集群环境。之后将根据实际需要进行扩建。

软件级别:

1。如果是写操作,应该:

1.1使用消息队列进行异步处理(如ActiveMQ等),避免消息阻塞

1.2使用mongodb的批写功能,如每1000条数据写一次

2。Mongodb以集群方式部署,可以分散压力

3。如果是读操作,可以考虑添加redis来缓存热数据

消息中间件不会丢失消息,主要从以下几个方面来考虑

1。生产者关闭

情况是这样的,在你的生产的同时,生产者必须将消息推送到消息中间件进行异步处理。此时,如果生产者挂断,消息数据将不会被推入消息中间件,并且会发生数据不一致。

在生产者推送之后,将标志位设置为已交付。另外,启动一个计时任务来检测是否有消息未被传递,并确保消息数据将进入中间件。

2. 消息重试

消息中间件存储在磁盘上。存储在磁盘上的消息不会丢失,磁盘文件也会备份。如果丢失了一个,可以通过备份文件来恢复。

同样,会导致重复消费,这就需要考虑消费的幂等性,可以做消费记录,防止重复消费。

java怎么处理高并发 前端如何处理高并发 什么是高并发怎么解决

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。