CN105763608A - 一种用于云存储系统的消息处理方法和装置 - Google Patents

一种用于云存储系统的消息处理方法和装置 Download PDF

Info

Publication number
CN105763608A
CN105763608A CN201610082605.9A CN201610082605A CN105763608A CN 105763608 A CN105763608 A CN 105763608A CN 201610082605 A CN201610082605 A CN 201610082605A CN 105763608 A CN105763608 A CN 105763608A
Authority
CN
China
Prior art keywords
message
queue
priority
message queue
highest
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.)
Granted
Application number
CN201610082605.9A
Other languages
English (en)
Other versions
CN105763608B (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.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry 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 Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201610082605.9A priority Critical patent/CN105763608B/zh
Publication of CN105763608A publication Critical patent/CN105763608A/zh
Application granted granted Critical
Publication of CN105763608B publication Critical patent/CN105763608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种用于云存储系统的消息处理方法和装置,其中方法包括:当接收到消息时,确定接收的消息的类型及该类型对应的消息队列,若该消息队列不为空,则将该接收的消息添加至该消息队列中,若该消息队列为空,则还将该消息队列的实际优先级恢复默认值,当调用消息时,选取实际优先级最高的消息队列,得到选定队列,从该选定队列中调用消息,当在该选定队列中调用的消息的数目大于预设阈值时,更新该选定队列的实际优先级,直至该选定队列的实际优先级小于预设优先级,重新选取优先级最高的消息队列。具有较高的消息添加效率,降低了消息队列长度过长问题的可能,保证优先级较高的消息先被调用的同时,还可避免优先级较低的消息被积压。

Description

一种用于云存储系统的消息处理方法和装置
技术领域
本发明涉及信息处理技术领域,特别是涉及一种用于云存储系统的消息处理方法和装置。
背景技术
云存储系统是应对大数据量高响应、吞吐量的要求而发展的。近半个世纪以来,计算机和互联网的应用得到了普及和广泛和发展。数据也在较大级数的增长。人们对于存储空间的要求也越来越高。云存储系统应用而生,并且得到了快速的发展。云存储系统作为计算机的延生服务,通过诸多的技术将很多的服务器组织起来,协调工作,统一向外提供服务。
云存储系统节点间、节点与管理节点、元数据结点间均通过消息来通信,目前,通常通过在各消息实体中添加优先级字段来缓解云存储系统发送压力过大的问题。在各消息实体中添加优先级字段后,当接收到消息时,将会将各消息按照优先级的高低顺序依次进行排列在消息队列中,将具有较高优先级的消息放在离队列出口端较近的位置,将具有较低优先级的消息放在离队列出口端较远的位置,当调压消息时,消息队列也会对具有较高优先级的消息较先进行发送,而对优先级较低的消息较后进行发送。
由于消息队列中的消息按照各消息的优先级进行排列,后接收的消息将根据其优先级不断地插入到消息队列中,因此,在当集群压力较大时,将可能导致大量优先级较高的消息不断插入消息队列更靠近出口端的一方,而致使位于消息队列后方的部分优先级较低的消息长时间不被处理的情况发生;同时,由于消息队列中的消息按照各消息的优先级进行排列,每次接收到消息后,均需要根据其优先级和消息队列中各消息的优先级后才可确定该消息在队列中的位置,将消息插入消息队列的操作较为复杂度,需要花费大量时间来计算各消息插入消息队列的位置,影响添加消息的效率;另外,由于接收的所有消息均添加至一消息队列中进行分发处理,也可能出现消息队列长度过长的问题。
发明内容
有鉴于此,本发明实施例提供一种用于云存储系统的消息处理方法和装置,以解决现有技术中位于消息队列后方的部分优先级较低的消息长时间不被处理,将消息插入消息队列的操作较为复杂度,需要花费大量时间来计算各消息插入消息队列的位置,影响添加消息的速率,另外,可能出现消息队列长度过长的问题。
为实现上述目的,本发明实施例提供如下技术方案:
一种用于云存储系统的消息处理方法,包括:
当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断所述消息队列是否为空,若不为空,则将所述接收的消息添加至所述消息队列中,若为空,则将该接收的消息添加至所述消息队列中,并将所述消息队列的默认优先级作为所述消息队列的实际优先级;
当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从所述选定队列中调用消息,当在所述选定队列中调用的消息的数目大于预设阈值时,更新所述选定队列的实际优先级,直至所述选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。
其中,所述当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列前过还包括:
确定所有可接收消息,并确定每个可接收消息的类型;
将所有可接收消息的类型进行整合,得到类型集合;
对所述类型集合中每个类型均对应创建一相对应的消息队列,并根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
其中,所述根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级后还包括:
判断是否存在默认优先级相同的消息队列;
若存在,则将所有默认优先级相同的消息队列合并为一消息队列,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同。
其中,所述将所述接收的消息添加至所述消息队列中为:将所述接收的消息添加至所述消息队列的队尾;
所述从所述选定队列中调用消息为:每次调用位于所述选定队列队头的消息。
其中,所述在所有消息队列中选取实际优先级最高的消息队列,得到选定队列包括:
确定所有消息队列的实际优先级,并在所有消息队列中确定实际优先级最高的消息队列;
判断所述实际优先级最高的消息队列的数目是否大于1个;
若否,则选取所述实际优先级最高的消息队列,得到选定队列;
若是,则在所有所述实际优先级最高的消息队列中选取默认优先级最高的消息队列,得到选定队列。
其中,所述消息处理方法还包括:
为每个消息队列分别创建一记录数据结构,每个记录数据结构均包括optState字段、cPriority字段和pru字段;
其中,所述optState字段用于记录调用消息时消息队列是否被选取,所述cPriority字段用于记录消息队列的实际优先级,所述pru字段用于记录消息队列的首地址。
一种用于云存储系统的消息处理装置,包括:消息写入模块和消息调用模块;其中,
所述消息写入模块,用于当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断所述消息队列是否为空,若不为空,则将所述接收的消息添加至所述消息队列中,若为空,则将该接收的消息添加至所述消息队列中,并将所述消息队列的默认优先级作为所述消息队列的实际优先级;
所述消息调用模块,用于当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从所述选定队列中调用消息,当在所述选定队列中调用的消息的数目大于预设阈值时,更新所述选定队列的实际优先级,直至所述选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。
其中,所述消息处理装置还包括:队列创建模块,用于确定所有可接收消息,并确定每个可接收消息的类型,将所有可接收消息的类型进行整合,得到类型集合,对所述类型集合中每个类型均对应创建一相对应的消息队列,并根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
其中,所述消息处理装置还包括:队列合并模块,用于所述队列创建模块根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级后,判断是否存在默认优先级相同的消息队列,若存在,则将所有默认优先级相同的消息队列合并为一消息队列,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同。
其中,所述消息调用模块包括:确定单元、判断单元、第一选取单元和第二选取单元;其中,
所述确定单元,用于确定所有消息队列的实际优先级,并在所有消息队列中确定实际优先级最高的消息队列;
所述判断单元,用于判断所述实际优先级最高的消息队列的数目是否大于1个;
所述第一选取单元,用于当所述判断单元判定所述实际优先级最高的消息队列的数目不大于1个时,选取所述实际优先级最高的消息队列,得到选定队列;
所述第二选取单元,用于当所述判断单元判定所述实际优先级最高的消息队列的数目大于1个时,在所有所述实际优先级最高的消息队列中选取默认优先级最高的消息队列,得到选定队列。
基于上述技术方案,本发明实施例提供的用于云存储系统的消息处理方法和装置,当接收到消息时,确定接收的消息的类型及该类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断该消息队列是否为空,若不为空,则将该接收的消息添加至该消息队列中,若为空,则将该接收的消息添加至该消息队列中,并将该消息队列的默认优先级作为该消息队列的实际优先级,当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从该选定队列中调用消息,当在该选定队列中调用的消息的数目大于预设阈值时,更新该选定队列的实际优先级,直至该选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。接收消息时,根据接收的消息的类型,将各消息添加至不同的消息队列中,将消息插入消息队列的操作较为简单,具有较高的消息添加效率,且降低了出现消息队列长度过长问题的可能;同时,接收消失时,若有消息需要加入空的消息队列中,该加入消息的空的消息队列的实际优先级将恢复默认值,在调用消息时,每次在实际优先级最高的消息队列中调用消息,并每次在实际优先级最高的消息队列中获取一定数目的消息后,对该实际优先级最高的消息队列的实际优先级进行更新,然后在所有消息队列中重新选取实际优先级最高的消息队列,从该重新选取的实际优先级最高的消息队列中获取消息,在保证优先级较高的消息先被调用的同时,还可以避免优先级较低的消息被积压的情况发生。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的用于云存储系统的消息处理方法的流程图;
图2为本发明实施例提供的用于云存储系统的消息处理方法中创建消息队列的方法流程图;
图3为本发明实施例提供的用于云存储系统的消息处理方法中合并消息队列的方法流程图;
图4为本发明实施例提供的用于云存储系统的消息处理方法中在所有消息队列中选取实际优先级最高的消息队列,得到选定队列的方法流程图;
图5为本发明实施例提供的用于云存储系统的消息处理装置的系统框图;
图6为本发明实施例提供的用于云存储系统的消息处理装置的另一系统框图;
图7为本发明实施例提供的用于云存储系统的消息处理装置的又一系统框图;
图8为本发明实施例提供的用于云存储系统的消息处理装置中消息调用模块的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的用于云存储系统的消息处理方法的流程图,将消息插入消息队列的操作较为简单,具有较高的消息添加效率,且降低了出现消息队列长度过长问题的可能,同时,在保证优先级较高的消息先被调用的同时,还可以避免优先级较低的消息被积压的情况发生;参照图1,该用于云存储系统的消息处理方法可以包括:
步骤S100:当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断所述消息队列是否为空,若不为空,则将所述接收的消息添加至所述消息队列中,若为空,则将该接收的消息添加至所述消息队列中,并将所述消息队列的默认优先级作为所述消息队列的实际优先级;
每个消息均具有其相对应的类型,每个类型均具有其相对应的消息队列,在当接收到消息时,先确定该接收的消息的类型,并确定该接收的消息的类型相对应的消息队列,然后将该接收的消息添加至该消息队列中。
其中,每个消息队列均具有默认优先级和实际优先级。可选的,每个消息队列的默认优先级可根据给各消息队列中消息的重要程序来决定,将重要程度较高的消息相对应的消息队列设置为较高的默认优先级,将重要程度较低的消息相对应的消息队列设置为较低的默认优先级。在空的消息队列中添加消息时,和对在对某消息队列中调用的消息的数目大于预设阈值时,都对将对相应的消息队列的实际优先级进行更新。
当接收到消息时,若需先将消息的消息队列不为空,则将接收的消息添加至该消息队列中,若该消息队列为空,则除了将该接收的消息添加至该消息队列中外,还需要将该消息队列的默认优先级作为该消息队列的实际优先级,即将该消息队列的实际优先级更新恢复为默认值。
可选的,在当接收到消息前,还应先创建消息队列,可通过先确定所有可接收消息,即确定所有可能接收到的消息,然后确定每个可接收消息的类型,将所有可接收消息的类型进行整合,得到类型集合,最后对该类型集合中每个类型均对应创建一相对应的消息队列,并根据该类型集合中各类型的重要程序为每个消息队列设置一默认优先级,来创建消息队列。
可选的,在对类型集合中每个类型均对应创建一相对应的消息队列,并根据类型集合中各类型的重要程序为每个消息队列设置一默认优先级后,还可再判断是否存在默认优先级相同的消息队列,然后将所有默认优先级相同的消息队列合并为一消息队列,其中,保持进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同,即对各消息队列进行合并后不更改默认优先级,且该合并后得到的消息队列将对应多个类型。例如,若存在2个默认优先级为2的消息队列,该2个默认优先级为2的消息队列分部对应类型为A的消息和类型为B的消息,则将该2个默认优先级为2的消息队列合并为一消息队列后,该合并后的消息队列的默认优先级为2,同时与类型为A的消息和类型为B的消息相对应。
可选的,在建立消息队列后,还可为每个消息队列分别创建一记录数据结构,并使每个记录数据结构均包括optState字段、cPriority字段和pru字段,通过optState字段来记录调用消息时消息队列是否被选取,即通过optState字段来记录调用消息时消息队列是否为选定队列,通过cPriority字段来记录消息队列的实际优先级,通过pru字段来记录消息队列的首地址。
步骤S110:当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从所述选定队列中调用消息,当在所述选定队列中调用的消息的数目大于预设阈值时,更新所述选定队列的实际优先级,直至所述选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。
当调用消息时,先在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从该选定队列中调用消息,当在该选定队列中调用的消息的数目大于预设阈值时,则更新该选定队列的实际优先级,直至该选定队列的实际优先级小于预设优先级,之后再重新在所有消息队列中选取优先级最高的消息队列。
例如,若存在实际优先级分别为4、3、2和1的四个消息队列,预设优先级为2,那么,当调用消息时,将先选取实际优先级为4的消息队列为选定队列,从该实际优先级为4的消息队列中调用消息,当在该实际优先级为4的消息队列中调用的消息的数目大于预设阈值时,则更新该选定队列的实际优先级,直至该实际优先级为4的消息队列的实际优先级小于2,即直至该实际优先级为4的消息队列的实际优先级为1,此时,该四个消息队列的实际优先级分别为1、3、2和1,重新在所有消息队列中选取优先级最高的消息队列时,将选取实际优先级为3的消息队列为选定队列,从该实际优先级为3的消息队列中调用消息,依次类推。
其中,若在重新在所有消息队列中选取优先级最高的消息队列前,有消息加入空的消息队列中,使该加入消息的空的消息队列的实际优先级恢复为默认值,则重新在所有消息队列中选取优先级最高的消息队列时,以该加入消息的空的消息队列的恢复默认值后的实际优先级为比对对象。
例如,若存在实际优先级分别为4、3、2和1的四个消息队列,其中,实际优先级为1的消息队列的默认优先级为5,且该实际优先级为1的消息队列为空,那么,在重新在所有消息队列中选取优先级最高的消息队列前,有消息该实际优先级为1的消息队列中,该实际优先级为1的消息队列的实际优先级恢复为5,则重新在所有消息队列中选取优先级最高的消息队列时,将认为该四个消息队列的实际优先级分别为5、3、2和1,将选取实际优先级为5的消息队列为选定队列。
可选的,可以设置在消息队列采用先入先出的方式调用信息。由于在消息队列采用先入先出的方式调用信息,因此,插入消息的复杂度为队列的个数,可以认为是O(1)。
可选的,当设置在消息队列采用先入先出的方式调用信息时,可设置在消息队列中按照从队头至队尾的顺序来调用消息,即设置每次接收到消息后,均将接收的消息添加至消息队列的队尾,每次调用信息时,均调用位于选定队列队头的消息。
可选的,可通过C++语言的STL库queue容器实现在消息队列中按照从队头至队尾的顺序来调用消息。
可选的,由于可能存在多个实际优先级最高的消息队列,因此,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列时,可判断实际优先级最高的消息队列的数目是否大于1个,若确定得到的实际优先级最高的消息队列的数目不大于1个,即确定得到的实际优先级最高的消息队列的数目为1个,则可直接选取改实际优先级最高的消息队列为选定队列,若确定得到的实际优先级最高的消息队列的数目大于1个,则在所有实际优先级最高的消息队列中选取默认优先级最高的消息队列为选定队列。
可选的,可在设置各消息队列的默认优先级后根据各消息队列的默认优先级对各消息队列标注下标,此时,若确定得到的实际优先级最高的消息队列的数目大于1个,可在所有实际优先级最高的消息队列中根据各消息队列的下标选取选定队列。
基于上述技术方案,本发明实施例提供的用于云存储系统的消息处理方法,当接收到消息时,确定接收的消息的类型及该类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断该消息队列是否为空,若不为空,则将该接收的消息添加至该消息队列中,若为空,则将该接收的消息添加至该消息队列中,并将该消息队列的默认优先级作为该消息队列的实际优先级,当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从该选定队列中调用消息,当在该选定队列中调用的消息的数目大于预设阈值时,更新该选定队列的实际优先级,直至该选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。接收消息时,根据接收的消息的类型,将各消息添加至不同的消息队列中,将消息插入消息队列的操作较为简单,具有较高的消息添加效率,且降低了出现消息队列长度过长问题的可能;同时,接收消失时,若有消息需要加入空的消息队列中,该加入消息的空的消息队列的实际优先级将恢复默认值,在调用消息时,每次在实际优先级最高的消息队列中调用消息,并每次在实际优先级最高的消息队列中获取一定数目的消息后,对该实际优先级最高的消息队列的实际优先级进行更新,然后在所有消息队列中重新选取实际优先级最高的消息队列,从该重新选取的实际优先级最高的消息队列中获取消息,在保证优先级较高的消息先被调用的同时,还可以避免优先级较低的消息被积压的情况发生。
可选的,图2示出了本发明实施例提供的用于云存储系统的消息处理方法中创建消息队列的方法流程图,参照图2,该创建消息队列的方法可以包括:
步骤S200:确定所有可接收消息,并确定每个可接收消息的类型;
在创建消息队列时,先确定定所有可接收消息,即确定所有可能接收到的消息,然后确定每个可接收消息的类型。
步骤S210:将所有可接收消息的类型进行整合,得到类型集合;
在确定每个可接收消息的类型后,可将所有可接收消息的类型进行整合,得到类型集合。
步骤S220:对所述类型集合中每个类型均对应创建一相对应的消息队列,并根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
在得到类型集合后,可对该类型集合中每个类型均对应创建一相对应的消息队列,然后根据改类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
可选的,图3示出了本发明实施例提供的用于云存储系统的消息处理方法中合并消息队列的方法流程图,参照图3,该合并消息队列的方法可以包括:
步骤S300:判断是否存在默认优先级相同的消息队列;
为了避免创建的消息队列的数目过多,因此,在对类型集合中每个类型均对应创建一相对应的消息队列,并根据类型集合中各类型的重要程序为每个消息队列设置一默认优先级后,还可再判断是否存在默认优先级相同的消息队列,通过判断是否存在默认优先级相同的消息队列,来判断是否可存在可进行合并的消息队列。
步骤S310:若存在,则将所有默认优先级相同的消息队列合并为一消息队列,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同。
若存在默认优先级相同的消息队列,则说明存在可进行合并的消息队列,可将默认优先级相同的消息队列合并为一消息队列,其中,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同,对各消息队列进行合并后不更改默认优先级。并且,该合并后得到的消息队列将对应多个类型。
可选的,图4示出了本发明实施例提供的用于云存储系统的消息处理方法中在所有消息队列中选取实际优先级最高的消息队列,得到选定队列的方法流程图,参照图4,该在所有消息队列中选取实际优先级最高的消息队列,得到选定队列的方法可以包括:
步骤S400:确定所有消息队列的实际优先级,并在所有消息队列中确定实际优先级最高的消息队列;
步骤S410:判断所述实际优先级最高的消息队列的数目是否大于1个;
由于可能存在多个实际优先级最高的消息队列,因此,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列时,可先确定所有消息队列的实际优先级,在所有消息队列中确定实际优先级最高的消息队列,然后判断实际优先级最高的消息队列的数目是否大于1个。
步骤S420:若否,则选取所述实际优先级最高的消息队列,得到选定队列;
若确定得到的实际优先级最高的消息队列的数目不大于1个,即确定得到的实际优先级最高的消息队列的数目为1个,则可直接选取改实际优先级最高的消息队列为选定队列。
步骤S430:若是,则在所有所述实际优先级最高的消息队列中选取默认优先级最高的消息队列,得到选定队列。
若确定得到的实际优先级最高的消息队列的数目大于1个,则在所有实际优先级最高的消息队列中选取默认优先级最高的消息队列为选定队列。
可选的,可在设置各消息队列的默认优先级后根据各消息队列的默认优先级对各消息队列标注下标,此时,若确定得到的实际优先级最高的消息队列的数目大于1个,可在所有实际优先级最高的消息队列中根据各消息队列的下标选取选定队列。
本发明实施例提供的用于云存储系统的消息处理方法,将消息插入消息队列的操作较为简单,具有较高的消息添加效率,且降低了出现消息队列长度过长问题的可能,同时,在保证优先级较高的消息先被调用的同时,还可以避免优先级较低的消息被积压的情况发生。
下面对本发明实施例提供的用于云存储系统的消息处理装置进行介绍,下文描述的用于云存储系统的消息处理装置与上文描述的用于云存储系统的消息处理方法可相互对应参照。
图5为本发明实施例提供的用于云存储系统的消息处理装置的系统框图,参照图5,该用于云存储系统的消息处理装置可以包括:消息写入模块100和消息调用模块200;其中,
消息写入模块100,用于当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断所述消息队列是否为空,若不为空,则将所述接收的消息添加至所述消息队列中,若为空,则将该接收的消息添加至所述消息队列中,并将所述消息队列的默认优先级作为所述消息队列的实际优先级;
消息调用模块200,用于当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从所述选定队列中调用消息,当在所述选定队列中调用的消息的数目大于预设阈值时,更新所述选定队列的实际优先级,直至所述选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。
可选的,图6示出了本发明实施例提供的用于云存储系统的消息处理装置的另一系统框图,参照图6,该用于云存储系统的消息处理装置还可以包括:队列创建模块300。
队列创建模块300,用于确定所有可接收消息,并确定每个可接收消息的类型,将所有可接收消息的类型进行整合,得到类型集合,对所述类型集合中每个类型均对应创建一相对应的消息队列,并根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
可选的,图7示出了本发明实施例提供的用于云存储系统的消息处理装置的又一系统框图,参照图7,该用于云存储系统的消息处理装置还可以包括:队列合并模块400。
队列合并模块400,用于队列创建模块300根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级后,判断是否存在默认优先级相同的消息队列,若存在,则将所有默认优先级相同的消息队列合并为一消息队列,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同。
可选的,图8示出了本发明实施例提供的用于云存储系统的消息处理装置中消息调用模块200的结构框图,参照图8,该消息调用模块200可以包括:确定单元210、判断单元220、第一选取单元230和第二选取单元240;其中,
确定单元210,用于确定所有消息队列的实际优先级,并在所有消息队列中确定实际优先级最高的消息队列;
判断单元220,用于判断所述实际优先级最高的消息队列的数目是否大于1个;
第一选取单元230,用于当判断单元220判定所述实际优先级最高的消息队列的数目不大于1个时,选取所述实际优先级最高的消息队列,得到选定队列;
第二选取单元240,用于当判断单元220判定所述实际优先级最高的消息队列的数目大于1个时,在所有所述实际优先级最高的消息队列中选取默认优先级最高的消息队列,得到选定队列。
本发明实施例提供的用于云存储系统的消息处理装置,将消息插入消息队列的操作较为简单,具有较高的消息添加效率,且降低了出现消息队列长度过长问题的可能,同时,在保证优先级较高的消息先被调用的同时,还可以避免优先级较低的消息被积压的情况发生。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种用于云存储系统的消息处理方法,其特征在于,包括:
当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断所述消息队列是否为空,若不为空,则将所述接收的消息添加至所述消息队列中,若为空,则将该接收的消息添加至所述消息队列中,并将所述消息队列的默认优先级作为所述消息队列的实际优先级;
当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从所述选定队列中调用消息,当在所述选定队列中调用的消息的数目大于预设阈值时,更新所述选定队列的实际优先级,直至所述选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。
2.根据权利要求1所述的消息处理方法,其特征在于,所述当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列前过还包括:
确定所有可接收消息,并确定每个可接收消息的类型;
将所有可接收消息的类型进行整合,得到类型集合;
对所述类型集合中每个类型均对应创建一相对应的消息队列,并根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
3.根据权利要求2所述的消息处理方法,其特征在于,所述根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级后还包括:
判断是否存在默认优先级相同的消息队列;
若存在,则将所有默认优先级相同的消息队列合并为一消息队列,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同。
4.根据权利要求1所述的消息处理方法,其特征在于,
所述将所述接收的消息添加至所述消息队列中为:将所述接收的消息添加至所述消息队列的队尾;
所述从所述选定队列中调用消息为:每次调用位于所述选定队列队头的消息。
5.根据权利要求1所述的消息处理方法,其特征在于,所述在所有消息队列中选取实际优先级最高的消息队列,得到选定队列包括:
确定所有消息队列的实际优先级,并在所有消息队列中确定实际优先级最高的消息队列;
判断所述实际优先级最高的消息队列的数目是否大于1个;
若否,则选取所述实际优先级最高的消息队列,得到选定队列;
若是,则在所有所述实际优先级最高的消息队列中选取默认优先级最高的消息队列,得到选定队列。
6.根据权利要求1所述的消息处理方法,其特征在于,还包括:
为每个消息队列分别创建一记录数据结构,每个记录数据结构均包括optState字段、cPriority字段和pru字段;
其中,所述optState字段用于记录调用消息时消息队列是否被选取,所述cPriority字段用于记录消息队列的实际优先级,所述pru字段用于记录消息队列的首地址。
7.一种用于云存储系统的消息处理装置,其特征在于,包括:消息写入模块和消息调用模块;其中,
所述消息写入模块,用于当接收到消息时,确定接收的消息的类型及所述类型相对应的消息队列,其中,每个消息队列均具有默认优先级和实际优先级,判断所述消息队列是否为空,若不为空,则将所述接收的消息添加至所述消息队列中,若为空,则将该接收的消息添加至所述消息队列中,并将所述消息队列的默认优先级作为所述消息队列的实际优先级;
所述消息调用模块,用于当调用消息时,在所有消息队列中选取实际优先级最高的消息队列,得到选定队列,从所述选定队列中调用消息,当在所述选定队列中调用的消息的数目大于预设阈值时,更新所述选定队列的实际优先级,直至所述选定队列的实际优先级小于预设优先级,重新在所有消息队列中选取优先级最高的消息队列。
8.根据权利要求7所述的消息处理装置,其特征在于,还包括:队列创建模块,用于确定所有可接收消息,并确定每个可接收消息的类型,将所有可接收消息的类型进行整合,得到类型集合,对所述类型集合中每个类型均对应创建一相对应的消息队列,并根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级。
9.根据权利要求8所述的消息处理装置,其特征在于,还包括:队列合并模块,用于所述队列创建模块根据所述类型集合中各类型的重要程序为每个消息队列设置一默认优先级后,判断是否存在默认优先级相同的消息队列,若存在,则将所有默认优先级相同的消息队列合并为一消息队列,进行合并后得到的消息队列的默认优先级与进行合并前各默认优先级相同的消息队列的默认优先级相同。
10.根据权利要求7所述的消息处理装置,其特征在于,所述消息调用模块包括:确定单元、判断单元、第一选取单元和第二选取单元;其中,
所述确定单元,用于确定所有消息队列的实际优先级,并在所有消息队列中确定实际优先级最高的消息队列;
所述判断单元,用于判断所述实际优先级最高的消息队列的数目是否大于1个;
所述第一选取单元,用于当所述判断单元判定所述实际优先级最高的消息队列的数目不大于1个时,选取所述实际优先级最高的消息队列,得到选定队列;
所述第二选取单元,用于当所述判断单元判定所述实际优先级最高的消息队列的数目大于1个时,在所有所述实际优先级最高的消息队列中选取默认优先级最高的消息队列,得到选定队列。
CN201610082605.9A 2016-02-05 2016-02-05 一种用于云存储系统的消息处理方法和装置 Active CN105763608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610082605.9A CN105763608B (zh) 2016-02-05 2016-02-05 一种用于云存储系统的消息处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610082605.9A CN105763608B (zh) 2016-02-05 2016-02-05 一种用于云存储系统的消息处理方法和装置

Publications (2)

Publication Number Publication Date
CN105763608A true CN105763608A (zh) 2016-07-13
CN105763608B CN105763608B (zh) 2019-03-15

Family

ID=56330729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610082605.9A Active CN105763608B (zh) 2016-02-05 2016-02-05 一种用于云存储系统的消息处理方法和装置

Country Status (1)

Country Link
CN (1) CN105763608B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106941461A (zh) * 2017-02-23 2017-07-11 江苏徐工信息技术股份有限公司 一种利用消息队列优化服务器处理请求的方法
CN107391283A (zh) * 2017-08-16 2017-11-24 郑州云海信息技术有限公司 一种消息处理方法及装置
CN115002224A (zh) * 2022-05-26 2022-09-02 阿里巴巴(中国)有限公司 消息处理方法、装置、系统、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261592A (zh) * 2007-03-07 2008-09-10 国际商业机器公司 用于对任务请求进行调度的方法和设备
CN101582786A (zh) * 2009-06-17 2009-11-18 中兴通讯股份有限公司 一种及时消息及时处理的方法及装置
CN101599987A (zh) * 2008-06-05 2009-12-09 中兴通讯股份有限公司 消息队列管理方法和装置
CN101651615A (zh) * 2009-09-14 2010-02-17 中兴通讯股份有限公司 报文调度方法和装置
CN101958844A (zh) * 2010-11-02 2011-01-26 南京邮电大学 区分服务网络中基于QoS的主动队列调度方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261592A (zh) * 2007-03-07 2008-09-10 国际商业机器公司 用于对任务请求进行调度的方法和设备
CN101599987A (zh) * 2008-06-05 2009-12-09 中兴通讯股份有限公司 消息队列管理方法和装置
CN101582786A (zh) * 2009-06-17 2009-11-18 中兴通讯股份有限公司 一种及时消息及时处理的方法及装置
CN101651615A (zh) * 2009-09-14 2010-02-17 中兴通讯股份有限公司 报文调度方法和装置
CN101958844A (zh) * 2010-11-02 2011-01-26 南京邮电大学 区分服务网络中基于QoS的主动队列调度方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106941461A (zh) * 2017-02-23 2017-07-11 江苏徐工信息技术股份有限公司 一种利用消息队列优化服务器处理请求的方法
CN107391283A (zh) * 2017-08-16 2017-11-24 郑州云海信息技术有限公司 一种消息处理方法及装置
CN115002224A (zh) * 2022-05-26 2022-09-02 阿里巴巴(中国)有限公司 消息处理方法、装置、系统、电子设备和存储介质

Also Published As

Publication number Publication date
CN105763608B (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
US8930593B2 (en) Method for setting parameters and determining latency in a chained device system
WO2020082871A1 (zh) 一种并行化执行区块链交易的方法、装置及系统
CN104102693B (zh) 对象处理方法和装置
CN105763608A (zh) 一种用于云存储系统的消息处理方法和装置
AU2011223511B2 (en) System and method for multiple concurrent virtual networks
CN110673794B (zh) 分布式数据的均衡处理方法、装置、计算终端和存储介质
TW200826566A (en) Persistent information unit pacing
CN107153620A (zh) 一种数据处理方法及装置
CN109960587A (zh) 超融合云计算系统的存储资源分配方法和装置
CN104021034A (zh) 任务处理方法及系统
CN105141685A (zh) 文件读写系统及其元数据存储器和文件读写方法和装置
CN107592237A (zh) 一种混合云的资源监控方法及系统
CN110113393A (zh) 一种消息推送方法、装置、电子设备及介质
CN107528789A (zh) 报文调度方法及装置
CN106325758A (zh) 一种队列存储空间管理方法及装置
CN103986779A (zh) 一种应用数据传输方法、装置及终端设备
CN103345507B (zh) 一种基于碰撞盒原理动态加载三维地图的方法
CN109213447A (zh) 一种san存储卷挂载、卸载方法及系统
CN107493330A (zh) 一种云服务方法及云服务器
CN113596107A (zh) 一种基于区块链的数据同步方法和装置
CN106959819B (zh) 数据存储方法、装置和系统以及便携式电子设备
CN107329695A (zh) 一种分布式存储内存管理方法、系统及计算机存储介质
CN106293996A (zh) 数据同步方法、主设备、备份设备和系统
CN106782668B (zh) 一种测试内存读写极限速度的方法及装置
CN107147696A (zh) 在复杂网络中分配缓存服务器的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant