【技术实现步骤摘要】
一种基于冷热分离存储的消息存储方法及系统
[0001]本专利技术属于消息存储
,具体涉及一种基于冷热分离存储的消息存储方法及系统。
技术介绍
[0002]本部分的陈述仅仅是提供了与本专利技术相关的
技术介绍
信息,不必然构成在先技术。
[0003]消息队列是一种数据处理系统中常见的中间组件。它可以将很多请求临时存储下来,等待其他程序使用这些请求。
[0004]消息队列如果使用SSD固态硬盘保存消息,则保存的消息数量收到固态硬盘容量的限制。而如果使用HDD机械硬盘来保存消息,则由于机械硬盘速度较慢,随机读写性能较差等原因,导致消息队列系统的整体性能都会降低。
[0005]大多数消息队列的请求和处理都近乎实时,即刚刚发起请求,另一个程序就要处理请求,仅有部分程序可能需要历史消息,因此对于实时消息,最好使用固态硬盘作为存储介质;而对于历史消息,最好使用机械硬盘作为存储介质,因此单一的存储介质(即仅用机械硬盘或者仅用固态硬盘)很难同时满足既需要实时消息又需要历史消息的需求。
[0006]目前主要是采 ...
【技术保护点】
【技术特征摘要】
1.一种基于冷热分离存储的消息存储方法,其特征在于,包括:获取多个写线程发起的多个写请求消息,得到请求队列;根据请求队列中的多个写请求对象进行聚合得到聚合队列;从所述聚合队列中获取批量的写请求对象数据存入到缓冲区;将缓冲区的消息数据先写入到固态硬盘,然后再写入到机械硬盘中,之后更新消息数据的索引数据,记录下消息数据在固态硬盘中保存的位置,完成消息存储。2.如权利要求1所述的一种基于冷热分离存储的消息存储方法,其特征在于,所述获取多个写线程发起的多个写请求消息,得到请求队列,包括:将写请求包装为请求对象添加到请求队列中,得到最终的请求队列。3.如权利要求2所述的一种基于冷热分离存储的消息存储方法,其特征在于,所述根据请求队列中的多个写请求对象进行聚合得到聚合队列,包括:启动聚合线程,不断轮询从请求队列中获取写请求对象;当获取的写请求对象的数量达到设定阈值后,将批量的写请求数据添加到聚合队列中。4.如权利要求1所述的一种基于冷热分离存储的消息存储方法,其特征在于,从所述聚合队列中获取批量的写请求对象数据存入到缓冲区,包括:启动多个刷盘线程,从所述聚合队列中取出批量的写请求对象;将所述批量的写请求对象中的数据存入到缓冲区;其中,当所述批量的写请求对象的字节长度小于缓冲区的字节长度时,对缓冲区尾部进行字节填充,保证缓冲区的字节长度大小能够被4K整除。5.如权利要求4所述的一种基于冷热分离存储的消息存储方法,其特征在于,在启动多个所述刷盘线程时,对所述刷盘线程进行初始化配置,即配置刷盘线程数以及缓存容量大小。6.如权利要求4所述的一种基于冷热分离存储的消息存储方法,其特征在于,所述刷盘线程在接收到写入请求时,判断缓存空间容量是否足够;如果缓存空间容量足够,将写...
【专利技术属性】
技术研发人员:冯晓坤,李凡平,石柱国,
申请(专利权)人:以萨技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。