[发明专利]一种基于内存池的消息队列优化方法在审
申请号: | 202211701671.1 | 申请日: | 2022-12-29 |
公开(公告)号: | CN116048838A | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 温泉 | 申请(专利权)人: | 天翼云科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100010 北京市东城区青*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 内存 消息 队列 优化 方法 | ||
1.一种基于内存池的消息队列优化方法,其特征在于,包括:
S101:通过无锁环形队列的方式,构建内存池队列,其中,每个所述内存池队列中包括至少一个容量大小相同的内存块;
S102:获取消息数据,根据所述消息数据的长度,挑选目标内存块,通过所述目标内存块存放所述消息数据;
S103:按照所述目标内存块的挑选顺序,填充所述目标内存块的头部区,其中,填充的内容包括:所属的内存池队列编号、消息的总块数以及消息的块索引值;
S104:配置内存块指针,所述内存块指针用于存放所述目标内存块的指针值;
S105:将所述内存块指针放入消息队列,并通过消息通道进行传输;
S106:在所述消息数据完成传输的情况下,对所述目标内存块进行回收。
2.根据权利要求1所述的消息队列优化方法,其特征在于,所述S102具体包括:
S1021:在所述消息数据的长度小于或者等于长度阈值的情况下,挑选出符合第一预设条件的所有内存池队列,其中,所述第一预设条件为内存块容量大于或者等于所述消息数据的长度;
S1022:从符合所述第一预设条件的内存池队列中,挑选出符合第二预设条件的内存池队列,其中,所述第二预设条件为内存块容量最小;
S1023:在仅有一个内存池队列满足所述第二预设条件的情况下,从该内存池队列中确定出所述目标内存块;
S1024:在存在多个内存池队列满足所述第二预设条件的情况下,从队列编号最小的内存池队列中确定出所述目标内存块。
3.根据权利要求2所述的消息队列优化方法,其特征在于,所述S102还包括:
S1025:在所述消息数据的长度大于所述长度阈值的情况下,挑选出符合第三预设条件的所有内存池队列,其中,所述第三预设条件为内存块容量小于所述消息数据的长度;
S1026:从符合所述第三预设条件的内存池队列中,挑选出符合第四预设条件的内存池队列,其中,所述第四预设条件为内存块容量最大;
S1027:在存在多个内存池队列满足所述第四预设条件的情况下,从队列编号最小的内存池队列中确定出t个所述目标内存块,其中t满足以下条件:
t×m<l<(t+1)×m
其中,m为编号最小的内存池队列的内存块容量,l为所述消息数据的长度;
S1028:计算剩余消息数据的长度l1:
l1=l﹣t×m
S1029:,对于所述剩余消息数据,重新执行S1021。
4.根据权利要求3所述的消息队列优化方法,其特征在于,每个t的值以及所有t值的和均小于或者等于8,所述块索引值的范围为0至7。
5.根据权利要求4所述的消息队列优化方法,其特征在于,所述内存块指针的存储量大小为67字节。
6.根据权利要求1所述的消息队列优化方法,其特征在于,还包括:
S107:根据内存块的空闲程度,动态地对内存块的容量进行扩容或者缩容。
7.根据权利要求6所述的消息队列优化方法,其特征在于,所述S107具体包括:
S1071:将所述内存池队列按照内存块容量的大小进行分组;
S1072:挑选出同组中队列编号最大的内存池队列;
S1073:在队列编号最大的内存池队列中可用的内存块数量与队列容量的占比大于或者等于预设占比的情况下,不做扩容处理;
S1074:在队列编号最大的内存池队列中可用的内存块数量与队列容量的占比小于所述预设占比的情况下,对相应的内存池队列进行扩容,并更新原子变量数组上的时间值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天翼云科技有限公司,未经天翼云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211701671.1/1.html,转载请声明来源钻瓜专利网。