CN115469803B - 队列消息存储调度的方法及应用 - Google Patents

队列消息存储调度的方法及应用 Download PDF

Info

Publication number
CN115469803B
CN115469803B CN202211057876.0A CN202211057876A CN115469803B CN 115469803 B CN115469803 B CN 115469803B CN 202211057876 A CN202211057876 A CN 202211057876A CN 115469803 B CN115469803 B CN 115469803B
Authority
CN
China
Prior art keywords
queue
message
priority
scheduling
disk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211057876.0A
Other languages
English (en)
Other versions
CN115469803A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anchao Cloud Software Co Ltd
Original Assignee
Anchao Cloud Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anchao Cloud Software Co Ltd filed Critical Anchao Cloud Software Co Ltd
Priority to CN202211057876.0A priority Critical patent/CN115469803B/zh
Publication of CN115469803A publication Critical patent/CN115469803A/zh
Application granted granted Critical
Publication of CN115469803B publication Critical patent/CN115469803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种队列消息存储调度的方法及应用,该方法包括以下步骤:当生产消息时,将调度队列中的消息存储至内存;在所述内存的占用空间大于等于阈值时,根据所述消息的队列优先级将所述消息存储至磁盘空间。该方法能够有效解决高负载下RabbitMQ对于持久化消息的处理能力,提高整体服务的稳定性和可用性。

Description

队列消息存储调度的方法及应用
技术领域
本发明是关于存储领域,特别是关于一种队列消息存储调度的方法及应用。
背景技术
RabbitMQ消息、队列具有持久化与非持久化属性,持久化的消息会在磁盘中存储,非持久化的消息会在内存中存储。当内存可用空间达到阈值时,内存中存储的消息会被置换到磁盘中存储,以释放更多内存,即内存换页。当消费者消费消息时,存储在磁盘上的消息又会被读取加载到内存。消息的存储包括消息内容的存储和消息索引信息的索引,并且消息内容和消息索引信息是可以分开进行存储的。
RabbitMQ在消息存储调度设计方面,其调度算法对所有注册绑定的队列、消息的存储调度是无差别的,且这些队列、消息都共享同一个节点上存储资源,没有根据队列消息对存储资源做合理的分配隔离。这就导致某些低优先级队列在现有机制下会挤占较多的存储资源,且一旦发生消息堆积易造成整个RabbitMQ负载较高,影响其他高优先级队列消息的处理,甚至导致整个服务停顿或不可用。这反映了RabbitMQ在其持久化机存储调度机制设计上的缺陷。
目前RabbitMQ的持久化存储架构以常规的RAM+HDD两层架构为主,此存储架构缺点在于RAM与HDD存储设备在数据读写带宽和IOPS存在较大差距,当RabbitMQ面临百万级的消息吞吐时,除了显式的持久化消息需要存储外,势必会触发额外被动的消息换页,即当内存容量达到阈值,也会将非持久化的数据转存到磁盘上,此时HDD磁盘将面临的较大数据读写压力,尽管RabbitMQ在存储调度上使用软调度机制,即按消息处理状态将内存中队列消息转存到在不同的临时队列,将队列消息分为内容和索引两部分类分步的转存,逐步将内存中的消息或索引转存到磁盘中,但仍然会出现消费者消费能力不足,生产者生产消息速率较大导致的消息积压场景。加之HDD磁盘本身的读写性能限制,此种情况仅依靠这样的软调度算法是难以缓解的。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种队列消息存储调度的方法及应用,解决现有存储架构RAM与HDD存储设备在数据读写带宽和IOPS存在较大差距的问题。
为实现上述目的,本发明的实施例提供了一种队列消息存储调度的方法。
在本发明的一个或多个实施方式中,所述方法包括:,所述方法包括:当生产消息时,将调度队列中的消息存储至内存;在所述内存的占用空间大于等于阈值时,根据所述消息的队列优先级将所述消息存储至磁盘空间。
在本发明的一个或多个实施方式中,根据所述消息的队列优先级将所述消息存储至磁盘空间,包括:判断所述消息的队列优先级是否处于高优先级区间;若是,将所述消息存储至SSD磁盘;若否,将所述消息存储至HDD磁盘。
在本发明的一个或多个实施方式中,所述方法还包括:根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间;以及根据所述SSD磁盘的利用率、所述HDD磁盘的利用率、消费者消费速率和生产者生产速率确定所述调度队列的优先级。
在本发明的一个或多个实施方式中,根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间,包括:根据所述调度队列的数量设置优先级区间的整体区间,所述整体区间用于指示低优先级的右临界值;根据SSD磁盘利用率和HDD磁盘利用率设置优先级区间的临界优先级值,所述临界优先级值用于指示高优先级的右临界值。
在本发明的一个或多个实施方式中,所述方法还包括:当消费所述消息时,按照预设比例从所述磁盘空间中获取所述消息,并所述消息存储至所述调度队列;在所述内存的占用空间小于阈值时,按照预设顺序将所述调度队列中的所述消息存储至内存。
在本发明的一个或多个实施方式中,将所述消息存储至所述调度队列,包括:按照所述消息的队列优先级将所述消息存储至所述调度队列。
在本发明的一个或多个实施方式中,将按照所述消息的队列优先级将所述消息存储至所述调度队列,包括:将高优先级的队列消息存储至所述调度队列的队头部分,将低优先级的队列消息存储至所述调度队列的队尾部分。
在本发明的另一个方面当中,提供了一种队列消息存储调度的装置,其包括第一调度模块和第二调度模块。
第一调度模块,用于当生产消息时,将调度队列中的消息存储至内存。
第二调度模块,用于在所述内存的占用空间大于等于阈值时,根据所述消息的队列优先级将所述消息存储至磁盘空间。
在本发明的一个或多个实施方式中,所述第二调度模块还用于:判断所述消息的队列优先级是否处于高优先级区间;若是,将所述消息存储至SSD磁盘;若否,将所述消息存储至HDD磁盘。
在本发明的一个或多个实施方式中,所述第二调度模块还用于:根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间;以及根据所述SSD磁盘的利用率、所述HDD磁盘的利用率、消费者消费速率和生产者生产速率确定所述调度队列的优先级。
在本发明的一个或多个实施方式中,所述第二调度模块还用于:根据所述调度队列的数量设置优先级区间的整体区间,所述整体区间用于指示低优先级的右临界值;根据SSD磁盘利用率和HDD磁盘利用率设置优先级区间的临界优先级值,所述临界优先级值用于指示高优先级的右临界值。
在本发明的一个或多个实施方式中,所述装置还包括:第三调度模块和第四调度模块。
第三调度模块,用于当消费所述消息时,按照预设比例从所述磁盘空间中获取所述消息,并将所述消息存储至所述调度队列。
第四调度模块,用于在所述内存的占用空间小于阈值时,按照预设顺序将所述调度队列中的所述消息存储至内存。
在本发明的一个或多个实施方式中,所述第三调度模块还用于:按照所述消息的队列优先级将所述消息存储至所述调度队列。
在本发明的一个或多个实施方式中,所述第三调度模块还用于:将高优先级的队列消息存储至所述调度队列的队头部分,将低优先级的队列消息存储至所述调度队列的队尾部分。
在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的队列消息存储调度的方法。
在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的队列消息存储调度的方法的步骤。
与现有技术相比,根据本发明实施方式的队列消息存储调度的方法及应用,其能够通过存储架构方面,在RAM和HDD之间引入SSD,形成RAM、SSD、HDD三层存储架构;在存储调度方面,在三层存储架构的基础上,将队列的存储方式和存储位置差异化,通过监听系统负载动态调整队列消息存储方式和存储位置,使得整个系统的存储资源分配趋于均衡,并结合SSD新存储架构的优势做到自缓解系统负载,进而提供更加灵活的存储调度策略,有效解决高负载下RabbitMQ对于持久化消息的处理能力,提高整体服务的稳定性和可用性。
附图说明
图1是根据本发明一实施方式的队列消息存储调度的方法的流程图;
图2是根据本发明一实施方式的队列消息存储调度的方法的具体流程图;
图3是根据本发明一实施方式的队列消息存储调度的方法的整体存储调度示意图;
图4是根据本发明一实施方式的队列消息存储调度的装置的结构图;
图5是根据本发明一实施方式的队列消息存储调度的计算设备的硬件结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
以下结合附图,详细说明本发明各实施例提供的技术方案。
实施例1
如图1至图3所示,介绍本发明的一个实施例中队列消息存储调度的方法,该方法包括如下步骤。
在步骤S101中,当生产消息时,将调度队列中的消息存储至内存。
目前RabbitMQ的持久化存储架构以常规的RAM+HDD两层架构为主,此存储架构缺点在于RAM与HDD存储设备在数据读写带宽和IOPS存在较大差距,当RabbitMQ面临百万级的消息吞吐时,除了显式的持久化消息需要存储外,势必会触发额外被动的消息换页,即当内存容量达到阈值,也会将非持久化的数据转存到磁盘上,此时HDD磁盘将面临的较大数据读写压力。持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
常规的持久化存储架构中RabbitMQ队列消息主要分为两种状态,第一种是已发送到队列,但还未发送给消费者的消息,第二种是已发送给消费者但还未收到消费者确认的信息。对于第一种消息,RabbitMQ引入了alpha、beta、gamma、delta四个阶段,来对应消息内容与索引信息在内存磁盘存储位置的变化。其生产消费的流程为:1)消息生产到队列时,如果第三调度队列为空,则将消息缓存到第四调度队列中;如果第三调度队列非空,则将消息缓存到第一调度队列中;2)消息推送给消费者时,先从第四调度队列中获取消息;如果第四调度队列为空,则从第三调度队列中读取消息;如果第三调度队列也为空,则从delta中读取一部分数据放入第三调度队列中,再从第三调度队列中读取消息。
在本实施例中,由于引入SSD作为存储架构中的一层,生产者生产的消息直接进入第一调度队列中,并将消息(消息内容和索引信息)全部存储至内存中。在内存的可用空间达到阈值时,将消息按照优先级转存至对应的SSD磁盘或者HDD磁盘。
内存(RAM)是与CPU直接交换数据的内部存储器。通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。缺点是数据易失,即一旦断电所存储的数据将随之丢失。
在步骤S102中,在内存的占用空间大于等于阈值时,根据消息的队列优先级将消息存储至磁盘空间。
在本实施例中,引入SSD作为存储架构中的一层。在消息不断到达第一调度队列中,使得内存的占用空间达到阈值时,则需要将重要的优先级高的消息放至SSD磁盘中存储以实现快速读写,将优先级低的消息放至HDD磁盘中存储,实现持久化的存储调度。
HDD(机械硬盘)是一种传统的存储设备,它使用机械盘片和移动的读/写磁头来访问数据,读写能力一般,优点是容量大,使用经济成本低。SSD(固态硬盘)是用固态电子存储芯片阵列制成的硬盘,具有传统机械硬盘不具备的快速读写、质量轻、能耗低以及体积小等特点,缺点是容量低、寿命有限,使用经济成本高。
具体的,第二调度队列根据队列优先级决定将队列消息存储在哪种类型的磁盘上,当消息的队列优先级处于高优先级区间时,将队列消息存储至SSD磁盘中;当消息的队列优先级处于低优先级区间时,则将队列消息存储至HDD磁盘中。
除此之外,负载进程还会监控当前系统的负载情况,即负载进程会根据当前系统中内存的可用空间、SSD磁盘的可用空间和HDD磁盘的可用空间划分和调整优先级区间。具体的,根据当前系统中SSD磁盘,HDD磁盘、总队列数量划分和调整优先级区间。将优先级区间划分为高优先级区间和低优先级区间。系统整体区间为总队列数量,临界优先级=100-100*(SSD磁盘利用率+HDD磁盘利用率)/2,在临界优先级不足整数时向上取整。举例来说,当前存储系统HDD、SSD总计空间分别为200GB、200GB,对应的可用空间为100GB、100GB,则HDD磁盘和SSD磁盘对应的磁盘空间利用率均为50%,当前有100个队列,则优先级整体区间为100,此时临界优先级值为50,高优先级区间为对应的队列的优先级队列为1-50,低优先级队列对应的优先级区间为51-100。当整体磁盘利用率上升时,意味着系统磁盘处于较高的负载,此时临界优先级值将变小,低优先级区间范围将扩大,更多的消息队列优先级会处于低优先级区间。当整体磁盘利用率下降时,意味着系统磁盘处于较低的负载,此时临界优先级值将变大,低优先级区间范围将缩小,更多的消息队列优先级会处于高优先级区间。
结合各个队列对各层储存资源的占用情况、消费者消费速率和生产者生产速率等因素确定当前队列的优先级。队列在优先级计算方式以当前周期的存储资源占用率计算下一周期的优先级。具体的,当前队列的优先级=(上一周期内磁盘总占用率+上一周期内增量的消息占用率)*100。
举例来说,当前存储系统HDD、SSD总计空间分别为200GB、200GB,此时有100个队列,高优先级区间为1-30,低优先级区间为31-100。优先级计算周期为10秒。其中有A和B队列:A队列消息此时占用了100GB的SSD总计100万条消息和100G的HDD总计100万条消息。A队列当前周期优先级为50,处于低优先级空间。A队列的消息消费速率为2万每秒,生产者生产速率为1万每秒,那么A队列平均会以1万条每秒的速率处理堆积在磁盘中消息,假设每1万条消息占用磁盘大小为1G,假设计算队列优先级每10秒为一周期,则一个周期内将减少10G空间大小的消息。B队列消息此时占用了50GB的SSD总计50万条消息和50G的HDD总计50万条消息。B队列当前周期优先级为25,处于高优先级空间。B队列的消息消费速率为1万每秒,生产者生产速率为2万每秒,那么B队列平均会以1万条每秒的速率消息堆积在磁盘中,假设每1万条消息占用磁盘大小为1G,则一个周期内将堆积10G空间大小的消息。A队列在下一周期内的优先级会上升为至49.5,向高优先级区间靠拢。B队列会在下一周期内的优先级会下降到25.5,向低优先级区间靠拢,但仍然在高优先级区间,如果B队列的积压速率不变,则会在第11个周期后,进入到低优先级队列。此后周期内新增的消息将直接持久化至HDD中。在HDD中存量的消息将随着优先级不断上身被逐步转存至SSD或者直接被消费掉。同理A队列过程相反,不做赘述。
单位时间内对存储资源占用较少,生产和消费速率较一致稳定的队列意味着更为健康的消息吞吐状态,对系统的负载影响也较小,可以获得更高的优先级;而单位时间内对存储资源占用较多,且生产和消费速率一致性差或不稳定的队列意味着对系统的负载影响较大,相应分配较低的优先级。被认定为高优先级队列的消息抵达时将指定存储至SSD磁盘中,反之则直接存入低优先级区间对应的HDD磁盘中。
当低优先级队列的生产者或消费者速率逐步改善并稳定一致,对于存储资源的占用负载逐步减少时,其优先级也将逐步提升,直至消息的优先级到达高优先级区间时,后续的消息将会调度为由存储至HDD磁盘变为到SSD磁盘,且存量的已在HDD磁盘中的消息,将因升级逐步转存至SSD磁盘中。
当高优先级队列的生产者或消费者速率变得不一致且不稳定,对于存储资源的占用负载逐步增加时,其优先级也将逐步降低,直至消息的优先级到达低优先级区间时,后续的消息将会调度为由存储至SSD磁盘变为到HDD磁盘,且存量的已在SSD磁盘中的消息,将因降级逐步转存至HDD磁盘中。
此外处于高优先级或优先级不断上升的队列,其更多的消息将从SSD磁盘中存储和消费,而不经过HDD磁盘。而低优先级或优先级不断下降的队列,其更多的消息将从HDD磁盘中存储和消费,而不影响SSD磁盘中高优先级队列的消息的消费。由于SSD磁盘数据处理能力,比HDD磁盘的性能更好,吞吐更高,这意味着高优先级队列在系统高负载的情况下,始终不受处于HDD磁盘中低优先级队列堆积的对于磁盘吞吐的影响。而队列优先级是根据上述对系统负载因素在连续不断的周期内被监视和计算的,是一个动态调度和调整的过程,当低优先级队列的消息消费能力增强时,对于系统的负载变低这将会得使更多的消息将被调度转存至SSD磁盘中,这意味着在此过程中消息将逐步受益于SSD磁盘高性能吞吐从而更快的被消费,对系统的负载情况也将在动态调度和调整的过程中更快的被改善。
在步骤S103中,当消费消息时,按照预设比例从磁盘空间中获取消息,并将消息存储至调度队列。
第三调度队列对SSD磁盘或HDD磁盘中读取的消息按照队列优先级进行排序并重新入队。
具体的,高优先级的队列消息会优先调度至第三调度队列的队头部分,低优先级的队列消息会被调度到第三调度队列的队尾部分。这意味着当内存释放空间时,存储在SSD磁盘中高优先队列消息将被优先加载到内存中,供消费者消费,低优先级的队列消息则排在后面。
在步骤S104中,在内存的占用空间小于阈值时,按照预设顺序将调度队列中的消息存储至内存。
根据本发明实施方式的队列消息存储调度的方法及应用,其能够通过存储架构方面,在RAM和HDD之间引入SSD,形成RAM、SSD、HDD三层存储架构;在存储调度方面,在三层存储架构的基础上,将队列的存储方式和存储位置差异化,通过监听系统负载动态调整队列消息存储方式和存储位置,使得整个系统的存储资源分配趋于均衡,并结合SSD新存储架构的优势做到自缓解系统负载,进而提供更加灵活的存储调度策略,有效解决高负载下RabbitMQ对于持久化消息的处理能力,提高整体服务的稳定性和可用性。
如图4所示,介绍根据本发明具体实施方式的队列消息存储调度的装置。
在本发明的实施方式中,队列消息存储调度的装置包括第一调度模块401和第二调度模块402。
第一调度模块401,用于当生产消息时,将调度队列中的消息存储至内存。
第二调度模块402,用于在内存的占用空间大于等于阈值时,根据消息的队列优先级将消息存储至磁盘空间。
第二调度模块402还用于:判断消息的队列优先级是否处于高优先级区间;若是,将消息存储至SSD磁盘;若否,将消息存储至HDD磁盘。
第二调度模块402还用于:根据SSD磁盘的利用率、HDD磁盘的利用率和调度队列的数量按照预设周期设置优先级区间;以及根据SSD磁盘的利用率、HDD磁盘的利用率、消费者消费速率和生产者生产速率确定调度队列的优先级。
第二调度模块402还用于:根据调度队列的数量设置优先级区间的整体区间,整体区间用于指示低优先级的右临界值;根据SSD磁盘利用率和HDD磁盘利用率设置优先级区间的临界优先级值,临界优先级值用于指示高优先级的右临界值。
第三调度模块403,用于当消费消息时,按照预设比例从磁盘空间中获取消息,并将消息存储至调度队列。
第四调度模块404,用于在内存的占用空间小于阈值时,按照预设顺序将调度队列中的消息存储至内存。
第三调度模块403还用于:按照消息的队列优先级将消息存储至调度队列。
第三调度模块403还用于:将高优先级的队列消息存储至调度队列的队头部分,将低优先级的队列消息存储至调度队列的队尾部分。
图5示出了根据本说明书的实施例的用于队列消息存储调度的计算设备50的硬件结构图。如图5所示,计算设备50可以包括至少一个处理器501、存储器502(例如非易失性存储器)、内存503和通信接口504,并且至少一个处理器501、存储器502、内存503和通信接口504经由总线505连接在一起。至少一个处理器501执行在存储器502中存储或编码的至少一个计算机可读指令。
应该理解,在存储器502中存储的计算机可执行指令当执行时使得至少一个处理器501进行本说明书的各个实施例中以上结合图1-5描述的各种操作和功能。
在本说明书的实施例中,计算设备50可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-5描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
根据本发明实施方式的队列消息存储调度的方法及应用,其能够通过存储架构方面,在RAM和HDD之间引入SSD,形成RAM、SSD、HDD三层存储架构;在存储调度方面,在三层存储架构的基础上,将队列的存储方式和存储位置差异化,通过监听系统负载动态调整队列消息存储方式和存储位置,使得整个系统的存储资源分配趋于均衡,并结合SSD新存储架构的优势做到自缓解系统负载,进而提供更加灵活的存储调度策略,有效解决高负载下RabbitMQ对于持久化消息的处理能力,提高整体服务的稳定性和可用性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

Claims (7)

1.一种队列消息存储调度的方法,其特征在于,所述方法包括:
当生产消息时,将调度队列中的消息存储至内存;
在所述内存的占用空间大于等于阈值时,根据所述消息的队列优先级将所述消息存储至磁盘空间,其包括:判断所述消息的队列优先级是否处于高优先级区间;若是,将所述消息存储至SSD磁盘;若否,将所述消息存储至HDD磁盘;
根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间;以及
根据所述SSD磁盘的利用率、所述HDD磁盘的利用率、消费者消费速率和生产者生产速率确定所述调度队列的优先级;
其中根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间,包括:
根据所述调度队列的数量设置优先级区间的整体区间,所述整体区间用于指示低优先级的右临界值;
根据SSD磁盘利用率和HDD磁盘利用率设置优先级区间的临界优先级值,所述临界优先级值用于指示高优先级的右临界值。
2.如权利要求1所述的队列消息存储调度的方法,其特征在于,所述方法还包括:
当消费所述消息时,按照预设比例从所述磁盘空间中获取所述消息,并将所述消息存储至所述调度队列;
在所述内存的占用空间小于阈值时,按照预设顺序将所述调度队列中的所述消息存储至内存。
3.如权利要求2所述的队列消息存储调度的方法,其特征在于,将所述消息存储至所述调度队列,包括:
按照所述消息的队列优先级将所述消息存储至所述调度队列。
4.如权利要求3所述的队列消息存储调度的方法,其特征在于,将按照所述消息的队列优先级将所述消息存储至所述调度队列,包括:
将高优先级的队列消息存储至所述调度队列的队头部分,将低优先级的队列消息存储至所述调度队列的队尾部分。
5.一种队列消息存储调度的装置,其特征在于,所述装置包括:
第一调度模块,用于当生产消息时,将调度队列中的消息存储至内存;
第二调度模块,用于在所述内存的占用空间大于等于阈值时,根据所述消息的队列优先级将所述消息存储至磁盘空间,其中根据所述消息的队列优先级将所述消息存储至磁盘空间,包括:判断所述消息的队列优先级是否处于高优先级区间;若是,将所述消息存储至SSD磁盘;若否,将所述消息存储至HDD磁盘;
所述第二调度模块还用于根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间;以及
所述第二调度模块还用于根据所述SSD磁盘的利用率、所述HDD磁盘的利用率、消费者消费速率和生产者生产速率确定所述调度队列的优先级;
其中根据所述SSD磁盘的利用率、所述HDD磁盘的利用率和所述调度队列的数量按照预设周期设置优先级区间,包括:
根据所述调度队列的数量设置优先级区间的整体区间,所述整体区间用于指示低优先级的右临界值;
根据SSD磁盘利用率和HDD磁盘利用率设置优先级区间的临界优先级值,所述临界优先级值用于指示高优先级的右临界值。
6.一种电子设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1至4中任一项所述的队列消息存储调度的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的队列消息存储调度的方法的步骤。
CN202211057876.0A 2022-08-31 2022-08-31 队列消息存储调度的方法及应用 Active CN115469803B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211057876.0A CN115469803B (zh) 2022-08-31 2022-08-31 队列消息存储调度的方法及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211057876.0A CN115469803B (zh) 2022-08-31 2022-08-31 队列消息存储调度的方法及应用

Publications (2)

Publication Number Publication Date
CN115469803A CN115469803A (zh) 2022-12-13
CN115469803B true CN115469803B (zh) 2023-07-07

Family

ID=84370980

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211057876.0A Active CN115469803B (zh) 2022-08-31 2022-08-31 队列消息存储调度的方法及应用

Country Status (1)

Country Link
CN (1) CN115469803B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116301644B (zh) * 2023-03-24 2023-10-13 四川水利职业技术学院 基于多硬盘协调的数据存储方法、系统、终端及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541460B (zh) * 2010-12-20 2014-10-08 中国移动通信集团公司 一种多磁盘场景下的磁盘管理方法和设备
CN103914399B (zh) * 2012-12-31 2017-03-29 中国移动通信集团公司 一种并行计算系统中的磁盘缓存方法及装置
US10489299B2 (en) * 2016-12-09 2019-11-26 Stormagic Limited Systems and methods for caching data
CN109783028B (zh) * 2019-01-16 2022-07-15 Oppo广东移动通信有限公司 I/o调度的优化方法、装置、存储介质及智能终端

Also Published As

Publication number Publication date
CN115469803A (zh) 2022-12-13

Similar Documents

Publication Publication Date Title
US10895987B2 (en) Memory compression method of electronic device and apparatus thereof
CN107665146B (zh) 内存管理装置和方法
CN108733344B (zh) 数据读写方法、装置以及环形队列
US5463776A (en) Storage management system for concurrent generation and fair allocation of disk space among competing requests
CN115469803B (zh) 队列消息存储调度的方法及应用
WO2023024410A1 (zh) 任务调度方法、装置、设备、存储介质及计算机程序产品、计算机程序
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
CN115408100A (zh) 容器集群调度的方法、装置、设备及存储介质
CN102541467A (zh) 一种对象数据服务器读写请求的调度方法
CN113867957A (zh) 一种跨集群容器数量弹性伸缩实现方法及装置
CN109213745B (zh) 一种分布式文件存储方法、装置、处理器及存储介质
CN102576294B (zh) 含有多个存储装置的存储系统和方法
CN111913807B (zh) 一种基于多个存储区域的事件处理方法、系统及装置
CN117234691A (zh) 任务调度方法及装置
CN111459402B (zh) 磁盘可控缓冲写方法、控制器、混合io调度方法及调度器
US8756396B1 (en) Conversion of in-memory data representations
CN111208953A (zh) 一种分布式存储方法及其装置
CN113296971A (zh) 消息队列的扩容、缩容、处理方法、装置及设备
CN116107635A (zh) 命令分发器、命令分发方法、调度器、芯片、板卡、设备
CN115202842A (zh) 任务调度方法及装置
CN115499513A (zh) 数据请求的处理方法、装置、计算机设备和存储介质
CN112732189A (zh) 数据存储方法、装置、存储介质及电子设备
CN108304252B (zh) 一种任务调度方法及装置
CN111625395A (zh) 一种并行的纠删码编解码方法及系统
CN115794446B (zh) 一种消息处理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20230616

Address after: Room 1602, No. 6, Financial Third Street, Wuxi Economic Development Zone, Jiangsu Province, 214,000

Applicant after: Anchao cloud Software Co.,Ltd.

Address before: Room 1601, no.6, financial Third Street, Wuxi Economic Development Zone, Jiangsu Province, 214000

Applicant before: Jiangsu Anchao cloud Software Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant