[发明专利]消息中间件的消息写入方法、装置、设备及可读存储介质在审
| 申请号: | 202010806295.7 | 申请日: | 2020-08-12 |
| 公开(公告)号: | CN111930528A | 公开(公告)日: | 2020-11-13 |
| 发明(设计)人: | 李升亮;郑鸣;李诗君;王继业;张晓涛;钟存木 | 申请(专利权)人: | 银联商务股份有限公司 |
| 主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/54 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 刘颖 |
| 地址: | 201203 上海市中国(上海*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 消息 中间件 写入 方法 装置 设备 可读 存储 介质 | ||
本申请实施例提供一种消息中间件的消息写入方法、装置、设备及可读存储介质,响应于第一线程的消息,查询第一偏移量,基于第一偏移量和第一线程待写入的消息的长度,获取的第二偏移量,进一步,本实施例使用自旋锁,将当前的文件偏移量更新为第二偏移量,并且响应于更新成功,向第一线程反馈所述第一偏移量,第一偏移量用于第一线程向所述消息中间件写入所述消息。本方法基于自旋锁的特性,使用自旋锁更新当前的文件偏移量,具有互斥性,可以将消息写入的互斥区间从整个写入过程,缩减到写入位置的分配,从而提高消息中间件消息写入的并发程度,实现优化写入性能的目的。
技术领域
本申请涉及电子信息领域,尤其涉及一种消息中间件的消息写入方法、装置、设备及可读存储介质。
背景技术
大型的网络活动可能会产生较高的流量脉冲,从而导致流量洪峰,目前,解决流量洪峰问题的最佳方式,是利用消息中间件将收到的消息保存下来,以供业务系统平滑地将消息取出来处理。
消息中间件通常有三种存储方式:存储到结构化数据库中、存储到键值数据库中、存储到文件系统,并且以上三种方式的存储速度从大到小通常依次是:文件系统、键值数据库、结构化数据库。在采用文件系统存储消息时,为了达到更高的消息写入性能,通常采用顺序写而非随机写,并且使用内存映射文件来提高磁盘读写访问性能。
基于文件系统顺序写的消息存储方案,为了保证多线程并发处理消息写入请求的正确性,会引入一个互斥锁来保证多线程写入消息时不相互影响。单个线程内的写入流程为:先申请互斥锁,有且仅有一个线程能申请,其他线程进行等待;申请成功的线程执行消息写入;写入完成后不论成功或失败均立即释放互斥锁,使得其他待写入线程有可能能申请到互斥锁继续写入消息。
但是,由于互斥锁的存在,多线程写入变成了串行写入,没有发挥出多线程的并发能力,因此,目前引入互斥锁的消息中间件的消息写入方法写入性能较低。
发明内容
本申请提供了一种消息中间件的消息写入方法、装置、设备及可读存储介质,目的在于提高消息中间件消息写入的并发程度。
为了实现上述目的,本申请提供了以下技术方案:
一种消息中间件的消息写入方法,包括:
响应于第一线程的消息写入请求,查询第一偏移量,所述第一偏移量为当前的文件偏移量;
基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量;
使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量;
响应于更新成功,向所述第一线程反馈所述第一偏移量,所述第一偏移量用于所述第一线程向所述消息中间件写入所述消息。
可选地,使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量,包括:
使用比较并交换CAS技术,将所述当前的文件偏移量更新为所述第二偏移量。
可选地,基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量,包括:
计算作为文件偏移量的第一数值,所述第一数值为所述第一偏移量和所述第一线程待写入的消息的长度之和;
如果所述第一偏移量与所述第一数值位于同一文件,将所述第一数值作为所述第二偏移量。
可选地,还包括:
如果所述第一偏移量与所述第一数值没有位于同一文件,将下一文件的起始偏移量与所述消息的长度之和,作为所述第二偏移量。
可选地,还包括:
响应于更新不成功,重新查询所述第一偏移量以及重新获取所述第二偏移量,并将所述当前的文件偏移量更新为所述第二偏移量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于银联商务股份有限公司,未经银联商务股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010806295.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种清肺茶
- 下一篇:一种非织造布用刺针联动装置





