消息中间件的消息写入方法、装置、设备及可读存储介质制造方法及图纸

技术编号:26342203 阅读:24 留言:0更新日期:2020-11-13 20:31
本申请实施例提供一种消息中间件的消息写入方法、装置、设备及可读存储介质,响应于第一线程的消息,查询第一偏移量,基于第一偏移量和第一线程待写入的消息的长度,获取的第二偏移量,进一步,本实施例使用自旋锁,将当前的文件偏移量更新为第二偏移量,并且响应于更新成功,向第一线程反馈所述第一偏移量,第一偏移量用于第一线程向所述消息中间件写入所述消息。本方法基于自旋锁的特性,使用自旋锁更新当前的文件偏移量,具有互斥性,可以将消息写入的互斥区间从整个写入过程,缩减到写入位置的分配,从而提高消息中间件消息写入的并发程度,实现优化写入性能的目的。

【技术实现步骤摘要】
消息中间件的消息写入方法、装置、设备及可读存储介质
本申请涉及电子信息领域,尤其涉及一种消息中间件的消息写入方法、装置、设备及可读存储介质。
技术介绍
大型的网络活动可能会产生较高的流量脉冲,从而导致流量洪峰,目前,解决流量洪峰问题的最佳方式,是利用消息中间件将收到的消息保存下来,以供业务系统平滑地将消息取出来处理。消息中间件通常有三种存储方式:存储到结构化数据库中、存储到键值数据库中、存储到文件系统,并且以上三种方式的存储速度从大到小通常依次是:文件系统、键值数据库、结构化数据库。在采用文件系统存储消息时,为了达到更高的消息写入性能,通常采用顺序写而非随机写,并且使用内存映射文件来提高磁盘读写访问性能。基于文件系统顺序写的消息存储方案,为了保证多线程并发处理消息写入请求的正确性,会引入一个互斥锁来保证多线程写入消息时不相互影响。单个线程内的写入流程为:先申请互斥锁,有且仅有一个线程能申请,其他线程进行等待;申请成功的线程执行消息写入;写入完成后不论成功或失败均立即释放互斥锁,使得其他待写入线程有可能能申请到互斥锁继续写入消息。本文档来自技高网...

【技术保护点】
1.一种消息中间件的消息写入方法,其特征在于,包括:/n响应于第一线程的消息写入请求,查询第一偏移量,所述第一偏移量为当前的文件偏移量;/n基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量;/n使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量;/n响应于更新成功,向所述第一线程反馈所述第一偏移量,所述第一偏移量用于所述第一线程向所述消息中间件写入所述消息。/n

【技术特征摘要】
1.一种消息中间件的消息写入方法,其特征在于,包括:
响应于第一线程的消息写入请求,查询第一偏移量,所述第一偏移量为当前的文件偏移量;
基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量;
使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量;
响应于更新成功,向所述第一线程反馈所述第一偏移量,所述第一偏移量用于所述第一线程向所述消息中间件写入所述消息。


2.根据权利要求1所述的方法,其特征在于,所述使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量,包括:
使用比较并交换CAS技术,将所述当前的文件偏移量更新为所述第二偏移量。


3.根据权利要求1或2所述的方法,其特征在于,所述基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量,包括:
计算作为文件偏移量的第一数值,所述第一数值为所述第一偏移量和所述第一线程待写入的消息的长度之和;
如果所述第一偏移量与所述第一数值位于同一文件,将所述第一数值作为所述第二偏移量。


4.根据权利要求3所述的方法,其特征在于,还包括:
如果所述第一偏移量与所述第一数值没有位于同一文件,将下一文件的起始偏移量与所述消息的长度之和,作为所述第二偏移量。


5.根据权利要求1或2所述的方法,其特征在于,还包括:
响应于更新不成功,重新查询所述第一偏移量以及重新获取所述第二偏移量,并将所述当前的文件偏移量更新为所述第二偏移量。

【专利技术属性】
技术研发人员:李升亮郑鸣李诗君王继业张晓涛钟存木
申请(专利权)人:银联商务股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1