消息中间件

本文探讨了消息队列在系统解耦、异步处理和削峰负载中的应用,以及可能遇到的问题如数据持久化、重复消费处理和高并发挑战。讨论了数据丢失预防、幂等性实现和消费性能优化的方法,并列举了适用场景,如信息管理系统中的消息传递和模板操作.
摘要由CSDN通过智能技术生成

消息中心项目

  • 什么是消息队列,使用消息队列的好处是什么
    使用消息队列的目的总的来说可以有三种情况:解耦、异步和削峰

解耦:解决系统直接的依赖关系,提升系统的性能。对个个系统进行拆分。
如果出现其他系统接口问题,就会导致整个系统挂掉在这里插入图片描述
在这里插入图片描述

削峰:假如并发量一下子达到了3000条数据,有两台机器,每台机器只能消费1000的并发量吗,多出1000就可能导致我们系统崩溃。> 在这里插入图片描述
这里我们可以使用消息队列,每次从队列中拿1000的数据
在这里插入图片描述

  • **

使用消息队列会出现什么问题

**

  • 问题1

搭建mq集群高可能,防止数据丢失,数据本地持久化,使用镜像队列

  • 在这里插入图片描述在这里插入图片描述

  • 队列创建

  • 在这里插入图片描述

  • 问题2

数据重复消费如何处理,使用幂等性出来
方案1 - 对数据进行md5加密,写到队列中,当消费端获取到指定队列的数据,先写入数据,判断是否存在,对数据库字段建立唯一性索引。如果存在报错,说明当前数据已经存在,ack在队列中剔除当前消息
方案2 把数据唯一性id写道redis的zset方法中,判断redis存不存在,已经存在说明当前消息,需要剔除
方案3 使用redis分布式锁来操作

  • 问题3

当mq队列产生大量数据如何处理,开启多线程
在这里插入图片描述

  • 问题4

如果还出现消费过慢,对消费端机器进行横向扩容

什么场景我们会使用到队列呢?
比如信息管理系统
在这里插入图片描述
由web页面进行新增模板页面,在模板上配置不同的消息渠道,消息内容。
模板信息写入到redis,加快读速度。
在这里插入图片描述

对其他各个业务系统对应的模板id,最终会在结果表产生一条记录,如果失败会通过定时任务xxl-job来定时扫描,失败次数超过三次的会进行邮件通知对于的业务人员.
生产端通过HAProxy进行消息路由到不同的MQ集群队列中,使用HAProxy就是可以方便的监听指定的队列信息。
在这里插入图片描述
这边不同的消费端消费指定的队列信息,业务端会通过消息内容,把消息写入到不同的队列中,由不同的队列进行消费。

需要考虑,怎么加快接口的性能,给到其他的各个业务系统。
模板,系统参数写入到redis加快读操作。
使用线程池加快数据组装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值