mysql数据库列队写入_写数据库消息队列

问题:核心业务处理转发系统在处理前段发来的请求时,由于各个事务中有连接数据库写操作,当并发量足够大时,业务系统由于直连mysql更新数据库,所以需要等待mysql处理完反馈结果,也就是说要等待数据库I/O的时间。导致并发量增大,当增加到该模块处理发阀值时,会将部分请求丢弃不做处理,最终结果是会有部分用户请求被忽略。

为了解决上述问题,在该模块与mysql之间,建立一个消息队列的机制,分为A,B两个模块,A部分与该模块(以后称为O模块)耦合,以后直连mysql的操作,全部发到A模块,A模块写入待执行命令文件,B模块读文件。实现业务逻辑与实际I/O的分离,提高O模块处理能力。

遇到的问题:

1. 事务完整性,执行命令为一个事务一条命令,也就是说一条命令会包含一条至多条sql语句。

2. 命令执行失败后写日志,而不能通过O模块失败,这个由于O模块业务特点,不会因为部分sql执行失败导致整个事务流程的变化。

3. 同步读写问题:也就是说高峰期,写肯定会有一些延迟,如果读写同时进行,那读肯定读的不是最新的内容了。这个只能通过业务逻辑程序自己控制了,要么就是这部分处理不走消息队列,直接还是走mysql了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值