【技术实现步骤摘要】
消息中间件的消息写入方法、装置、设备及可读存储介质
本申请涉及电子信息领域,尤其涉及一种消息中间件的消息写入方法、装置、设备及可读存储介质。
技术介绍
大型的网络活动可能会产生较高的流量脉冲,从而导致流量洪峰,目前,解决流量洪峰问题的最佳方式,是利用消息中间件将收到的消息保存下来,以供业务系统平滑地将消息取出来处理。消息中间件通常有三种存储方式:存储到结构化数据库中、存储到键值数据库中、存储到文件系统,并且以上三种方式的存储速度从大到小通常依次是:文件系统、键值数据库、结构化数据库。在采用文件系统存储消息时,为了达到更高的消息写入性能,通常采用顺序写而非随机写,并且使用内存映射文件来提高磁盘读写访问性能。基于文件系统顺序写的消息存储方案,为了保证多线程并发处理消息写入请求的正确性,会引入一个互斥锁来保证多线程写入消息时不相互影响。单个线程内的写入流程为:先申请互斥锁,有且仅有一个线程能申请,其他线程进行等待;申请成功的线程执行消息写入;写入完成后不论成功或失败均立即释放互斥锁,使得其他待写入线程有可能能申请到 ...
【技术保护点】
1.一种消息中间件的消息写入方法,其特征在于,包括:/n响应于第一线程的消息写入请求,查询第一偏移量,所述第一偏移量为当前的文件偏移量;/n基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量;/n使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量;/n响应于更新成功,向所述第一线程反馈所述第一偏移量,所述第一偏移量用于所述第一线程向所述消息中间件写入所述消息。/n
【技术特征摘要】 【专利技术属性】
1.一种消息中间件的消息写入方法,其特征在于,包括:
响应于第一线程的消息写入请求,查询第一偏移量,所述第一偏移量为当前的文件偏移量;
基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量;
使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量;
响应于更新成功,向所述第一线程反馈所述第一偏移量,所述第一偏移量用于所述第一线程向所述消息中间件写入所述消息。
2.根据权利要求1所述的方法,其特征在于,所述使用自旋锁,将所述当前的文件偏移量更新为所述第二偏移量,包括:
使用比较并交换CAS技术,将所述当前的文件偏移量更新为所述第二偏移量。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述第一偏移量和所述第一线程待写入的消息的长度,获取第二偏移量,包括:
计算作为文件偏移量的第一数值,所述第一数值为所述第一偏移量和所述第一线程待写入的消息的长度之和;
如果所述第一偏移量与所述第一数值位于同一文件,将所述第一数值作为所述第二偏移量。
4.根据权利要求3所述的方法,其特征在于,还包括:
如果所述第一偏移量与所述第一数值没有位于同一文件,将下一文件的起始偏移量与所述消息的长度之和,作为所述第二偏移量。
5.根据权利要求1或2所述的方法,其特征在于,还包括:
响应于更新不成功,重新查询所述第一偏移量以及重新获取所述第二偏移量,并将所述当前的文件偏移量更新为所述第二偏移量。
技术研发人员:李升亮,郑鸣,李诗君,王继业,张晓涛,钟存木,
申请(专利权)人:银联商务股份有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。