[发明专利]消息持久化处理方法、装置和存储介质有效
申请号: | 201910410582.3 | 申请日: | 2019-05-17 |
公开(公告)号: | CN111770030B | 公开(公告)日: | 2023-08-08 |
发明(设计)人: | 王海 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | H04L47/722 | 分类号: | H04L47/722;H04L47/50 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 张晓霞;刘芳 |
地址: | 100195 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息 持久 处理 方法 装置 存储 介质 | ||
1.一种消息持久化处理方法,其特征在于,包括:
获取当前可用内存的大小;
根据所述当前可用内存的大小,确定缓冲队列的长度;
接收请求消息,并根据所述缓冲队列的长度将所述请求消息存入所述缓冲队列;
对所述缓冲队列中的所述请求消息执行持久化操作;
所述根据所述当前可用内存大小,确定缓冲队列的长度,包括:
获取接收到的所述请求消息的大小;
根据所述当前可用内存大小和所述请求消息的大小,确定第一预设时间段内所接收到的请求消息的初始峰值;
根据所述初始峰值和双曲正切函数,确定所述第一预设时间段内所接收到的请求消息的伸缩峰值;
将所述伸缩峰值确定为所述缓冲队列的长度。
2.根据权利要求1所述的方法,其特征在于,所述对所述缓冲队列中的所述请求消息执行持久化操作,包括:
每隔第二预设时间段,将所述缓冲队列中的所述请求消息执行持久化操作;
或者,
在所述缓冲队列中的所述请求消息的数量达到第一预设阈值时,将所述缓冲队列中的所有所述请求消息执行持久化操作。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据第三预设时间段,将所述可用内存划分为m个子内存,所述m个子内存为环状结构;
获取第n个请求消息存储在第一子内存中的时间,所述第一子内存为所述m个子内存中的任意一个;
根据当前时间和所述第n个请求消息存储在第一子内存中的时间,确定流失时间;
根据所述流失时间和所述第三预设时间段,确定是否对所述请求消息进行限流操作。
4.根据权利要求3所述的方法,其特征在于,所述根据所述流失时间和所述第三预设时间段,确定是否对所述请求消息进行限流操作,包括:
判断所述流失时间是否小于所述第三预设时间段;
若所述流失时间小于所述第三预设时间段,则确定对所述请求消息进行限流操作。
5.根据权利要求4所述的方法,其特征在于,所述若所述流失时间小于所述第三预设时间段,则确定对所述请求消息进行限流操作,包括:
若所述流失时间小于所述第三预设时间段,则根据所述流失时间和所述第三预设时间段,确定休眠时间;
控制所述请求消息在所述休眠时间内处于挂起状态。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
确定对所述缓冲队列中的所述请求消息执行持久化操作是否失败;
若对所述缓冲队列中的所述请求消息执行持久化操作的失败次数超过第二预设阈值,则将执行持久化操作失败的请求消息存入消息重试缓存队列中,所述消息重试缓存队列的长度为根据所述当前可用内存的大小确定的;
在轮询触发器启动后,对所述消息重试缓存队列中的预设数量的所述请求消息执行持久化操作。
7.一种消息持久化处理装置,其特征在于,包括:
获取模块,用于获取当前可用内存的大小;
确定模块,用于根据所述获取模块获取到的所述当前可用内存的大小,确定缓冲队列的长度;
接收模块,用于接收请求消息,并根据所述缓冲队列的长度将所述请求消息存入所述缓冲队列;
处理模块,用于对所述缓冲队列中的所述请求消息执行持久化操作;
所述确定模块,具体用于:
获取接收到的所述请求消息的大小;
根据所述当前可用内存大小和所述请求消息的大小,确定第一预设时间段内所接收到的请求消息的初始峰值;
根据所述初始峰值和双曲正切函数,确定所述第一预设时间段内所接收到的请求消息的伸缩峰值;
将所述伸缩峰值确定为所述缓冲队列的长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910410582.3/1.html,转载请声明来源钻瓜专利网。