CN102223681B - 一种物联网系统及其中缓存的控制方法 - Google Patents

一种物联网系统及其中缓存的控制方法 Download PDF

Info

Publication number
CN102223681B
CN102223681B CN201010151031.9A CN201010151031A CN102223681B CN 102223681 B CN102223681 B CN 102223681B CN 201010151031 A CN201010151031 A CN 201010151031A CN 102223681 B CN102223681 B CN 102223681B
Authority
CN
China
Prior art keywords
terminal
buffer queue
message
cache
file
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.)
Expired - Fee Related
Application number
CN201010151031.9A
Other languages
English (en)
Other versions
CN102223681A (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.)
Guangzhou seagull Supply Chain Management Co., Ltd.
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201010151031.9A priority Critical patent/CN102223681B/zh
Priority to PCT/CN2011/071883 priority patent/WO2011131066A1/zh
Publication of CN102223681A publication Critical patent/CN102223681A/zh
Application granted granted Critical
Publication of CN102223681B publication Critical patent/CN102223681B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/10Flow control between communication endpoints
    • H04W28/14Flow control between communication endpoints using intermediate storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种物联网系统中缓存的控制方法,包括:系统创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息;系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,或者将M2M终端的消息从对应的M2M终端消息缓存队列中取出。应用本发明,解决了提供高效率、无限制的缓存空间的同时又能提高内存利用率的问题。

Description

一种物联网系统及其中缓存的控制方法
技术领域
本发明涉及物联网应用领域,具体地说涉及一种物联网系统及其中缓存的控制方法。
背景技术
在计算机技术飞速发展的今天,物联网越来越成为一个未来互联网发展的一个方向,在M2M(物联网)应用中,M2M服务器往往同时连接了上万个终端,同一时刻有大量的消息需要M2M服务器处理,此时M2M服务器不能处理完一个消息再接收下一条消息,这样会造成消息丢失或者阻塞的问题,因此就需要先将消息接收下来,进行缓存,再从缓存中获取消息处理。
在传统的M2M服务器中对消息的缓存方式有内存缓存和文件缓存,其中,内存缓存根据处理方式又可以分为以定长内存空间缓存和临时分配内存空间缓存。这几种缓存方式都存在弊端:
定长内存空间缓存的方式:
M2M服务器在启动时即分配好固定长度的缓存,M2M服务器接收到终端的各种消息后,直接将消息放入事先分配好的缓存中的空闲位置。在M2M服务器运行过程中会出现比较极端的两种情况,当M2M终端消息量小的时候,M2M服务器上缓存空间的内存大部分都空闲,造成了物理内存的浪费;而当M2M终端消息量极大的时候,又可能出现由于缓存空间被占满而无法继续缓存消息的问题。
临时分配内存空间缓存的方式:
M2M服务器在启动时并不分配缓存空间,当M2M服务器的接口层每次收到M2M终端的消息后临时向操作系统申请内存,申请成功后将M2M终端的消息存入临时申请的内存空间中,当M2M服务器将M2M终端上报的一条消息处理完成后立即释放对应内存空间。M2M服务器使用这种方式进行M2M终端消息的缓存可以避免的内存空间的浪费,但是M2M服务器对每条M2M终端上报的消息都进行操作系统的内存申请和释放操作,非常消耗系统资源,并且整个M2M服务器能够使用的最大缓存大小也受物理内存大小的限制。
纯文件缓存的方式:
M2M服务器将M2M终端上报的消息保存在文件中进行缓存。该方法上可以使M2M服务器保存大量的M2M终端上报消息,理论上只受M2M服务器所安装主机的硬盘大小的限制,但是磁盘IO的效率非常低,从而导致M2M服务器大量的处理时间被用于了读写磁盘,从而降低了M2M服务器的消息处理性能,因此,纯文件缓存在M2M服务器的应用中存在处理效率上的弊端。
从上可以看出,当前需要一种新的M2M系统中的缓存方式既可提供高效率、无限制的缓存空间的同时又能提高内存利用率,不造成物理内存空间的浪费。
发明内容
本发明所要解决的技术问题是提供一种物联网系统及其中缓存的控制方法,解决了提供高效率、无限制的缓存空间的同时又能提高内存利用率的问题。
为了解决上述问题,本发明提供了一种物联网系统中缓存的控制方法,包括:
所述系统创建一物联网M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息;
所述系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,或者将M2M终端的消息从对应的M2M终端消息缓存队列中取出。
进一步地,上述方法还可包括,所述系统创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,包括以下步骤:
所述系统发起一创建M2M终端消息缓存队列请求,其中包含M2M终端消息缓存队列id;
所述系统判断该M2M终端消息缓存队列id若不存在,则扫描是否已经有该M2M终端消息缓存队列id的缓存文件,若有,则获取缓存文件的起始、结束编号,生成新建的该M2M终端消息缓存队列的信息,其中填入缓存文件的起始和结束编号;
所述系统将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息。
进一步地,上述方法还可包括,所述系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,包括以下步骤:
所述系统收到M2M终端上报的消息,判断需要插入的M2M终端消息缓存队列如果合法,则判断该M2M终端消息缓存队列是否已经存在缓存文件,如果有,则执行步骤a2;否则执行步骤a1;
步骤a1、所述系统判断所述M2M终端消息缓存队列中是否有空闲的内存块,如果有,则执行步骤a3;否则执行步骤a4;
步骤a2、所述系统根据所述缓存队列管理信息,判断当前缓存文件是否需要创建新的缓存文件,如果是,则根据所述缓存队列管理信息生成一新的缓存文件,将所述M2M终端上报的消息写入生成的该新的缓存文件的空闲空间头部,退出流程;否则将所述M2M终端上报的消息写入所述缓存文件的空闲空间头部,退出流程;
步骤a3、所述系统将所述M2M终端上报的消息拷贝到所述内存块队尾保存,退出流程;
步骤a4、所述系统根据所述缓存队列管理信息,判断该M2M终端消息缓存队列是否可以新建内存块,如果是,则申请一内存块,将内存地址加入所述缓存队列管理信息,并将该M2M终端上报的消息拷贝到该内存块保存,退出流程;否则执行步骤a2。
进一步地,上述方法还可包括,所述系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出,包括以下步骤:
所述系统判断需要提取的M2M终端消息缓存队列如果合法,则执行步骤b0;
步骤b0、所述系统判断提取的当前M2M终端消息缓存队列是否存在有内存块的缓存,如果是,则执行步骤b3,否则执行步骤b1,;
步骤b1、所述系统判断所述M2M终端消息缓存队列是否存在缓存文件,如果是,则执行步骤b2,否则退出流程,;
步骤b2、所述系统打开文件编号最小的一缓存文件,读取该缓存文件内容,并拷贝该缓存文件内容到所述M2M终端消息缓存队列的第一个内存块中;
步骤b3、所述系统从内存块中提取M2M终端的消息,判断提取的M2M终端的消息是否达到预设的M2M终端的消息的条数,如果是,则退出流程,否则判断该M2M终端消息缓存队列中是否已经没有消息,如果是,则退出流程,否则执行步骤b0。
进一步地,上述方法还可包括,所述缓存队列管理信息,包括:M2M系统应用的M2M缓存配置信息、M2M系统中所有正使用的M2M终端消息缓存队列的信息以及所有M2M消息缓存队列链表首地址信息;其中,M2M缓存配置信息包括所有缓存队列最大允许使用内存量、每条队列最大记录条数、同一类型缓存允许的内存块个数、内存块释放规则和缓存文件保存路径信息。
本发明还提供了一种物联网系统,包括:创建生成管理信息模块、消息储存模块和消息提取模块,其中,
所述创建生成管理信息模块,用于创建一物联网M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,并发送给所述消息储存模块和所述消息提取模块;
所述消息储存模块,用于根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列;
所述消息提取模块,用于根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出。
进一步地,上述系统还可包括,所述创建生成管理信息模块创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,具体是指:
所述创建生成管理信息模块发起一创建M2M终端消息缓存队列请求,其中包含M2M终端消息缓存队列id;判断该M2M终端消息缓存队列id若不存在,则扫描是否已经有该M2M终端消息缓存队列id的缓存文件,若有,则获取缓存文件的起始、结束编号,生成新建的该M2M终端消息缓存队列的信息,其中填入缓存文件的起始和结束编号;将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息。
进一步地,上述系统还可包括,所述消息储存模块根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,具体是指:
所述消息储存模块收到M2M终端上报的消息,判断需要插入的M2M终端消息缓存队列如果合法,则判断该M2M终端消息缓存队列若存在缓存文件,则根据所述缓存队列管理信息,判断当前缓存文件是否需要创建新的缓存文件,如果是,则根据所述缓存队列管理信息生成一新的缓存文件,将所述M2M终端上报的消息写入生成的该新的缓存文件的空闲空间头部,否则将所述M2M终端上报的消息写入所述缓存文件的空闲空间头部;
判断该M2M终端消息缓存队列若不存在缓存文件,则判断所述M2M终端消息缓存队列中是否有空闲的内存块,若有,则将所述M2M终端上报的消息拷贝到所述内存块队尾保存;否则根据所述缓存队列管理信息,判断该M2M终端消息缓存队列是否可以新建内存块,如果是,则申请一内存块,将内存地址加入所述缓存队列管理信息,并将该M2M终端上报的消息拷贝到该内存块保存。
进一步地,上述系统还可包括,所述消息提取模块根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出,具体是指:
所述消息提取模块判断需要提取的M2M终端消息缓存队列如果合法,则判断提取的当前M2M终端消息缓存队列若存在有内存块的缓存,则从内存块中提取M2M终端的消息,判断提取的M2M终端的消息若已达到预设的M2M终端的消息的条数,则退出,否则判断该M2M终端消息缓存队列中若已经没有消息,则退出;
判断提取的当前M2M终端消息缓存队列若没有存在内存块的缓存,则判断所述M2M终端消息缓存队列若存在缓存文件,则打开文件编号最小的一缓存文件,读取该缓存文件内容,并拷贝该缓存文件内容到所述M2M终端消息缓存队列的第一个内存块中;从内存块中提取M2M终端的消息,判断提取的M2M终端的消息若已达到预设的M2M终端的消息的条数,则退出,否则判断该M2M终端消息缓存队列中若已经没有消息,则退出。
进一步地,上述系统还可包括,所述创建生成管理信息模块中所述缓存队列管理信息,包括:M2M系统应用的M2M缓存配置信息、M2M系统中所有正使用的M2M终端消息缓存队列的信息以及所有M2M消息缓存队列链表首地址信息;其中,M2M缓存配置信息包括所有缓存队列最大允许使用内存量、每条队列最大记录条数、同一类型缓存允许的内存块个数、内存块释放规则和缓存文件保存路径信息。
与现有技术相比,应用本发明,结合了内存与文件存储缓存的两种方式,使用内存块为基本单位进行内存的申请、释放,一方面即提供了内存这种高速存取的能力,又避免了频繁进行内存申请、释放所带来的系统消耗,另外使用文件作为扩展的存储方式,使该方法理论上可以保存无限的与M2M终端交互的消息,保存容量只与物理硬盘大小有关,既可提供高效率、无限制的缓存空间的同时又能提高内存利用率,不造成物理内存空间的浪费。。
附图说明
图1是本发明中缓存在M2M系统中的存储位置示意图;
图2是本发明的物联网系统中缓存的控制方法的流程图;
图3是本发明的创建一M2M终端消息缓存队列的流程图;
图4是本发明的M2M终端消息入队列的流程图;
图5是本发明的M2M终端消息出队列的流程图;
图6是本发明的物联网系统的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
本发明的物联网系统中允许建立多个M2M终端消息缓存队列,所有M2M终端消息缓存队列的信息以一个双向链表来进行管理,每个队列对应一种M2M终端上报消息,每个队列都可以使用内存+文件的方式存储M2M终端上报消息,系统以内存使用块作为单位进行管理,内存的申请、释放都以单个内存块为单位,有效的提高了内存利用率;缓存文件的大小与内存块大小一致,当需要从文件中获取消息时,采用将整个文件映射入内存的方式处理,以后再次获取该文件中的消息时,则从内存中处理,不再操作缓存文件,提高了访问效率。其中,系统将缓存文件大小与内存块大小设计成一致,可以有效的提高从文件到内存的映射拷贝工作,当需要进行M2M缓存文件到M2M缓存内存块拷贝时,只需要对文件进行一次二进制读取,然后拷贝到内存块中即可,提高了文件到内存的内容复制效率;系统中文件命名规则是通过M2M消息缓存队列id文件编号,文件编号从0开始累加,这样就保证了系统对文件保存有先进先出的顺序。
所述缓存队列管理信息,包括:M2M系统应用的M2M缓存配置信息、M2M系统中所有正使用的M2M终端消息缓存队列的信息以及所有M2M消息缓存队列链表首地址信息。其中,M2M缓存配置信息包括所有缓存队列最大允许使用内存量、每条队列最大记录条数、同一类型缓存允许的内存块个数、内存块释放规则和缓存文件保存路径信息。上述信息在系统初始化时设置。
其中,所述创建一M2M终端消息缓存队列的流程,主要设置以下一些队列的配置信息:M2M终端消息队列id,M2M终端消息队列中单条消息长度,M2M终端消息内存使用相关信息,即最多可使用多少个M2M服务器缓存内存块,M2M终端消息文件使用相关信息,即文件的起始编号,M2M终端消息当前队列的前后队列双向链表的指针等信息。M2M终端消息的单一队列里每条消息都按定长保存,每个队列可以包含1到N个内存块的内存缓存和无限制文件个数的文件缓存。在系统中缓存、队列、内存、内存块、和文件之间的关系如图1所示,M2M服务器中存在一个缓存模块,一个缓存模块中可以有多个缓存队列,每个缓存队列都以内存缓存方式+文件缓存方式存储M2M终端上报的消息,其中内存部分又以块方式管理。
其中,所述消息入缓存队列处理流程控制M2M服务器接口层将从M2M终端接收到的消息存入对应的M2M终端消息队列中,选取M2M终端上报消息对应的队列id,根据该缓存队列管理信息,将M2M终端上报的消息插入到对应队列的内存或者文件缓存的尾部,其中涉及内存块的申请和缓存文件的生成等操作。
其中,所述消息出缓存队列处理流程控制M2M服务器消息处理应用将消息从系统的M2M终端消息队列中取出,选取M2M终端上报消息对应的队列id,根据该缓存队列管理信息,从当前正在操作的M2M终端消息队列的内存块前端取出消息,返回给M2M服务器消息处理应用,消息出缓存队列处理流程涉及系统中M2M终端消息队列的缓存文件到缓存内存块的拷贝和内存块的释放等操作。
如图2所示,本发明的物联网系统中缓存的控制方法,包括以下步骤:
步骤100、物联网系统创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息;
如图3所示,具体包括以下步骤:
步骤301、所述系统通过接口层应用发起一创建M2M终端消息缓存队列请求,其中包含M2M终端消息缓存队列id;
步骤302、所述系统判断该M2M终端消息缓存队列id是否存在,如果是,则结束流程,否则,执行步骤303;
步骤303、扫描是否已经有该M2M终端消息缓存队列id的缓存文件,若有,则获取缓存文件的起始和结束编号,生成新建的该M2M终端消息缓存队列的信息,其中填入缓存文件的起始和结束编号;
步骤304、所述系统将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息。
所述系统是将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息中M2M终端消息缓存队列双向链表。
步骤200、系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,或者将M2M终端的消息从对应的M2M终端消息缓存队列中取出。
如图4所示,系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列的流程,具体包括以下步骤:
步骤400、所述系统收到M2M终端上报的消息,判断需要插入的M2M终端消息缓存队列如果合法,则判断该M2M终端消息缓存队列是否已经存在缓存文件,如果有,则执行步骤402;否则执行步骤401;
步骤401、所述系统判断所述M2M终端消息缓存队列中是否有空闲的内存块,如果有,则执行步骤403;否则执行步骤404;
步骤402、所述系统根据所述缓存队列管理信息,判断当前缓存文件是否需要创建新的缓存文件,如果是,则根据所述缓存队列管理信息生成一新的缓存文件,将所述M2M终端上报的消息写入生成的该新的缓存文件的空闲空间头部,退出流程;否则将所述M2M终端上报的消息写入所述缓存文件的空闲空间头部,退出流程;
步骤403、所述系统将所述M2M终端上报的消息拷贝到所述内存块队尾保存,退出流程;
步骤404、所述系统根据所述缓存队列管理信息,判断该M2M终端消息缓存队列是否新建内存块,如果是,则申请一内存块,将内存地址加入所述缓存队列管理信息中M2M终端消息缓存队列双向链表,并将该M2M终端上报的消息拷贝到该内存块保存,退出流程;否则执行步骤402。
如图5所示,系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出的流程,具体包括以下步骤:
步骤500、所述系统判断需要提取的M2M终端消息缓存队列如果合法,则执行步骤501;
步骤501、所述系统判断提取的当前M2M终端消息缓存队列是否存在有内存块的缓存,如果是,则执行步骤504,否则执行步骤502,;
步骤502、所述系统判断所述M2M终端消息缓存队列是否存在缓存文件,如果是,则执行步骤503,否则退出流程,;
步骤503、所述系统以二进制方式打开文件编号最小的一缓存文件,读取该缓存文件内容,并拷贝该缓存文件内容到所述M2M终端消息缓存队列的第一个内存块中;
步骤504、所述系统从内存块中提取M2M终端的消息,判断提取的M2M终端的消息是否达到预设的M2M终端消息的条数,如果是,则退出流程,否则执行步骤505;
步骤505、所述系统判断该M2M终端消息缓存队列中是否已经没有消息,如果是,则退出流程,否则执行步骤501。
如图6所示,一种物联网系统,包括:创建生成管理信息模块、消息储存模块和消息提取模块,其中,
所述创建生成管理信息模块,用于创建一物联网M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,并发送给所述消息储存模块和所述消息提取模块;
所述消息储存模块,用于根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列;
所述消息提取模块,用于根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出。
所述创建生成管理信息模块创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,具体是指:
所述创建生成管理信息模块发起一创建M2M终端消息缓存队列请求,其中包含M2M终端消息缓存队列id;判断该M2M终端消息缓存队列id若不存在,则扫描是否已经有该M2M终端消息缓存队列id的缓存文件,若有,则获取缓存文件的起始、结束编号,生成新建的该M2M终端消息缓存队列的信息,其中填入缓存文件的起始和结束编号;将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息。
所述消息储存模块根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,具体是指:
所述消息储存模块收到M2M终端上报的消息,判断需要插入的M2M终端消息缓存队列如果合法,则判断该M2M终端消息缓存队列若存在缓存文件,则根据所述缓存队列管理信息,判断当前缓存文件是否需要创建新的缓存文件,如果是,则根据所述缓存队列管理信息生成一新的缓存文件,将所述M2M终端上报的消息写入生成的该新的缓存文件的空闲空间头部,否则将所述M2M终端上报的消息写入所述缓存文件的空闲空间头部;
判断该M2M终端消息缓存队列若不存在缓存文件,则判断所述M2M终端消息缓存队列中是否有空闲的内存块,若有,则将所述M2M终端上报的消息拷贝到所述内存块队尾保存;否则根据所述缓存队列管理信息,判断该M2M终端消息缓存队列是否新建内存块,如果是,则申请一内存块,将内存地址加入所述缓存队列管理信息,并将该M2M终端上报的消息拷贝到该内存块保存。
所述消息提取模块根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出,具体是指:
所述消息提取模块判断需要提取的M2M终端消息缓存队列如果合法,则判断提取的当前M2M终端消息缓存队列若存在有内存块的缓存,则从内存块中提取M2M终端的消息,判断提取的M2M终端的消息若已达到预设的M2M终端的消息的条数,则退出,否则判断该M2M终端消息缓存队列中若已经没有消息,则退出;
判断提取的当前M2M终端消息缓存队列若没有存在内存块的缓存,则判断所述M2M终端消息缓存队列若存在缓存文件,则打开文件编号最小的一缓存文件,读取该缓存文件内容,并拷贝该缓存文件内容到所述M2M终端消息缓存队列的第一个内存块中;从内存块中提取M2M终端的消息,判断提取的M2M终端的消息若已达到预设的M2M终端的消息的条数,则退出,否则判断该M2M终端消息缓存队列中若已经没有消息,则退出。
所述创建生成管理信息模块中所述缓存队列管理信息,包括:M2M系统应用的M2M缓存配置信息、M2M系统中所有正使用的M2M终端消息缓存队列的信息以及所有M2M消息缓存队列链表首地址信息;其中,M2M缓存配置信息包括所有缓存队列最大允许使用内存量、每条队列最大记录条数、同一类型缓存允许的内存块个数、内存块释放规则和缓存文件保存路径信息。
本发明所述的在M2M服务器应用中处理海量消息的高速缓存方法,结合了内存与文件存储缓存的两种方式,使用内存块为基本单位进行内存的申请、释放,一方面即提供了内存这种高速存取的能力,又避免了频繁进行内存申请、释放所带来的系统消耗,另外使用文件作为扩展的存储方式,使该方法理论上可以保存无限的与M2M终端交互的消息,保存容量只与物理硬盘大小有关。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (8)

1.一种物联网系统中缓存的控制方法,其特征在于,包括:
所述系统创建一物联网M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,其中,所述M2M终端消息缓存队列里包含1到N个内存块的内存缓存和无限制文件个数的文件缓存,使用内存块为基本单位进行内存的申请、释放,使用文件作为扩展的存储方式;
所述系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,或者将M2M终端的消息从对应的M2M终端消息缓存队列中取出;
所述系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,包括以下步骤:
所述系统收到M2M终端上报的消息,判断需要插入的M2M终端消息缓存队列如果合法,则判断该M2M终端消息缓存队列是否已经存在缓存文件,如果有,则执行步骤a2;否则执行步骤a1;
步骤a1、所述系统判断所述M2M终端消息缓存队列中是否有空闲的内存块,如果有,则执行步骤a3;否则执行步骤a4;
步骤a2、所述系统根据所述缓存队列管理信息,判断当前缓存文件是否需要创建新的缓存文件,如果是,则根据所述缓存队列管理信息生成一新的缓存文件,将所述M2M终端上报的消息写入生成的该新的缓存文件的空闲空间头部,退出流程;否则将所述M2M终端上报的消息写入所述缓存文件的空闲空间头部,退出流程;
步骤a3、所述系统将所述M2M终端上报的消息拷贝到所述内存块队尾保存,退出流程;
步骤a4、所述系统根据所述缓存队列管理信息,判断该M2M终端消息缓存队列是否可以新建内存块,如果是,则申请一内存块,将内存地址加入所述缓存队列管理信息,并将该M2M终端上报的消息拷贝到该内存块保存,退出流程;否则执行步骤a2。
2.如权利要求1所述的控制方法,其特征在于,
所述系统创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,包括以下步骤:
所述系统发起一创建M2M终端消息缓存队列请求,其中包含M2M终端消息缓存队列id;
所述系统判断该M2M终端消息缓存队列id若不存在,则扫描是否已经有该M2M终端消息缓存队列id的缓存文件,若有,则获取缓存文件的起始、结束编号,生成新建的该M2M终端消息缓存队列的信息,其中填入缓存文件的起始和结束编号;
所述系统将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息。
3.如权利要求1所述的控制方法,其特征在于,
所述系统根据所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出,包括以下步骤:
所述系统判断需要提取的M2M终端消息缓存队列如果合法,则执行步骤b0;
步骤b0、所述系统判断提取的当前M2M终端消息缓存队列是否存在有内存块的缓存,如果是,则执行步骤b3,否则执行步骤b1;
步骤b1、所述系统判断所述M2M终端消息缓存队列是否存在缓存文件,如果是,则执行步骤b2,否则退出流程;
步骤b2、所述系统打开文件编号最小的一缓存文件,读取该缓存文件内容,并拷贝该缓存文件内容到所述M2M终端消息缓存队列的第一个内存块中;
步骤b3、所述系统从内存块中提取M2M终端的消息,判断提取的M2M终端的消息是否达到预设的M2M终端的消息的条数,如果是,则退出流程,否则判断该M2M终端消息缓存队列中是否已经没有消息,如果是,则退出流程,否则执行步骤b0。
4.如权利要求1至3任一所述的控制方法,其特征在于,
所述缓存队列管理信息,包括:M2M系统应用的M2M缓存配置信息、M2M系统中所有正使用的M2M终端消息缓存队列的信息以及所有M2M消息缓存队列链表首地址信息;其中,M2M缓存配置信息包括所有缓存队列最大允许使用内存量、每条队列最大记录条数、同一类型缓存允许的内存块个数、内存块释放规则和缓存文件保存路径信息。
5.一种物联网系统,其特征在于,
包括:创建生成管理信息模块、消息储存模块和消息提取模块,其中,
所述创建生成管理信息模块,用于创建一物联网M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,并发送给所述消息储存模块和所述消息提取模块,其中,所述M2M终端消息缓存队列里包含1到N个内存块的内存缓存和无限制文件个数的文件缓存,使用内存块为基本单位进行内存的申请、释放,使用文件作为扩展的存储方式;
所述消息储存模块,用于根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列;
所述消息提取模块,用于根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出;
所述消息储存模块根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端上报的消息存入对应的M2M终端消息缓存队列,具体是指:
所述消息储存模块收到M2M终端上报的消息,判断需要插入的M2M终端消息缓存队列如果合法,则判断该M2M终端消息缓存队列若存在缓存文件,则根据所述缓存队列管理信息,判断当前缓存文件是否需要创建新的缓存文件,如果是,则根据所述缓存队列管理信息生成一新的缓存文件,将所述M2M终端上报的消息写入生成的该新的缓存文件的空闲空间头部,否则将所述M2M终端上报的消息写入所述缓存文件的空闲空间头部;
判断该M2M终端消息缓存队列若不存在缓存文件,则判断所述M2M终端消息缓存队列中是否有空闲的内存块,若有,则将所述M2M终端上报的消息拷贝到所述内存块队尾保存;否则根据所述缓存队列管理信息,判断该M2M终端消息缓存队列是否可以新建内存块,如果是,则申请一内存块,将内存地址加入所述缓存队列管理信息,并将该M2M终端上报的消息拷贝到该内存块保存。
6.如权利要求5所述的物联网系统,其特征在于,
所述创建生成管理信息模块创建一M2M终端消息缓存队列,并将生成后的该M2M终端消息缓存队列的信息加入缓存队列管理信息,具体是指:
所述创建生成管理信息模块发起一创建M2M终端消息缓存队列请求,其中包含M2M终端消息缓存队列id;判断该M2M终端消息缓存队列id若不存在,则扫描是否已经有该M2M终端消息缓存队列id的缓存文件,若有,则获取缓存文件的起始、结束编号,生成新建的该M2M终端消息缓存队列的信息,其中填入缓存文件的起始和结束编号;将新建的该M2M终端消息缓存队列的信息加入缓存队列管理信息。
7.如权利要求6所述的物联网系统,其特征在于,
所述消息提取模块根据接收的所述缓存队列管理信息,通过内存缓存方式和文件缓存方式将M2M终端的消息从对应的M2M终端消息缓存队列中取出,具体是指:
所述消息提取模块判断需要提取的M2M终端消息缓存队列如果合法,则判断提取的当前M2M终端消息缓存队列若存在有内存块的缓存,则从内存块中提取M2M终端的消息,判断提取的M2M终端的消息若已达到预设的M2M终端的消息的条数,则退出,否则判断该M2M终端消息缓存队列中若已经没有消息,则退出;
判断提取的当前M2M终端消息缓存队列若没有存在内存块的缓存,则判断所述M2M终端消息缓存队列若存在缓存文件,则打开文件编号最小的一缓存文件,读取该缓存文件内容,并拷贝该缓存文件内容到所述M2M终端消息缓存队列的第一个内存块中;从内存块中提取M2M终端的消息,判断提取的M2M终端的消息若已达到预设的M2M终端的消息的条数,则退出,否则判断该M2M终端消息缓存队列中若已经没有消息,则退出。
8.如权利要求5至7任一所述的物联网系统,其特征在于,
所述创建生成管理信息模块中所述缓存队列管理信息,包括:M2M系统应用的M2M缓存配置信息、M2M系统中所有正使用的M2M终端消息缓存队列的信息以及所有M2M消息缓存队列链表首地址信息;其中,M2M缓存配置信息包括所有缓存队列最大允许使用内存量、每条队列最大记录条数、同一类型缓存允许的内存块个数、内存块释放规则和缓存文件保存路径信息。
CN201010151031.9A 2010-04-19 2010-04-19 一种物联网系统及其中缓存的控制方法 Expired - Fee Related CN102223681B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010151031.9A CN102223681B (zh) 2010-04-19 2010-04-19 一种物联网系统及其中缓存的控制方法
PCT/CN2011/071883 WO2011131066A1 (zh) 2010-04-19 2011-03-16 一种物联网系统及其中缓存的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010151031.9A CN102223681B (zh) 2010-04-19 2010-04-19 一种物联网系统及其中缓存的控制方法

Publications (2)

Publication Number Publication Date
CN102223681A CN102223681A (zh) 2011-10-19
CN102223681B true CN102223681B (zh) 2015-06-03

Family

ID=44780077

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010151031.9A Expired - Fee Related CN102223681B (zh) 2010-04-19 2010-04-19 一种物联网系统及其中缓存的控制方法

Country Status (2)

Country Link
CN (1) CN102223681B (zh)
WO (1) WO2011131066A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663096B (zh) * 2012-04-11 2015-12-16 北京像素软件科技股份有限公司 一种基于数据缓存技术读取数据的方法
CN103593307B (zh) * 2013-11-25 2016-04-20 湖南强军科技有限公司 一种电磁法勘探系统处理采集数据的方法和装置
CN105187293A (zh) * 2015-07-23 2015-12-23 柳州正高科技有限公司 一种物联网临时消息存储方法
CN105138410A (zh) * 2015-08-31 2015-12-09 北京锐安科技有限公司 一种基于磁盘缓存的消息队列的实现方法及装置
US9537914B1 (en) * 2015-12-01 2017-01-03 International Business Machines Corporation Vehicle domain multi-level parallel buffering and context-based streaming data pre-processing system
US10091100B1 (en) 2016-03-24 2018-10-02 EMC IP Holding Company LLC Network functions virtualization infrastructure comprising virtual switch for internet of things data
CN105791439A (zh) * 2016-04-29 2016-07-20 中国农业银行股份有限公司 一种数据处理方法、数据接收设备及数据处理系统
CN107193933A (zh) * 2017-05-18 2017-09-22 广东芬尼克兹节能设备有限公司 一种热泵机组移动服务器控制系统和方法
CN109688085B (zh) * 2017-10-19 2021-11-02 中兴通讯股份有限公司 传输控制协议代理方法、存储介质及服务器
CN110018969B (zh) * 2019-03-08 2023-06-02 平安科技(深圳)有限公司 数据缓存方法、装置、计算机设备和存储介质
CN110417629A (zh) * 2019-07-26 2019-11-05 深圳市浩科电子有限公司 一种多种不同类型的物联网设备接入物联网的方法及系统
CN110865887B (zh) * 2019-11-25 2024-04-16 中科数金(河南)科技有限公司 直接输出短消息保存输出方法
CN113312187B (zh) * 2021-06-02 2023-06-16 福建天晴数码有限公司 基于双向链表的消息多线程消费顺序确认的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127808A (zh) * 2006-08-18 2008-02-20 虹光精密工业(苏州)有限公司 具有队列管理功能的媒体处理装置
CN101459924A (zh) * 2007-12-10 2009-06-17 中兴通讯股份有限公司 一种gsm系统业务跟踪和异常管理的方法、装置及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8081647B2 (en) * 2006-02-27 2011-12-20 Oracle International Corporation Method and apparatus for buffering requests to web services using annotations
CN101286878B (zh) * 2008-04-22 2012-02-29 中兴通讯股份有限公司 一种终端的内存池的管理方法
CN101576855B (zh) * 2009-06-19 2011-05-04 深圳市科陆电子科技股份有限公司 一种基于缓存的数据存储系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127808A (zh) * 2006-08-18 2008-02-20 虹光精密工业(苏州)有限公司 具有队列管理功能的媒体处理装置
CN101459924A (zh) * 2007-12-10 2009-06-17 中兴通讯股份有限公司 一种gsm系统业务跟踪和异常管理的方法、装置及系统

Also Published As

Publication number Publication date
WO2011131066A1 (zh) 2011-10-27
CN102223681A (zh) 2011-10-19

Similar Documents

Publication Publication Date Title
CN102223681B (zh) 一种物联网系统及其中缓存的控制方法
CN108319654B (zh) 计算系统、冷热数据分离方法及装置、计算机可读存储介质
CN109614377A (zh) 分布式文件系统的文件删除方法、装置、设备及存储介质
CN101763437B (zh) 高速缓冲存储实现方法及装置
JP6691669B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
EP2733617A1 (en) Data buffer device, data storage system and method
US10649905B2 (en) Method and apparatus for storing data
CN104361030A (zh) 一种具有任务分发功能的分布式缓存架构及缓存方法
CN103345368B (zh) 一种在缓冲存储器中缓存数据的方法
US10496550B2 (en) Multi-port shared cache apparatus
CN102523258A (zh) 一种面向云操作系统的数据存储架构及其负载均衡方法
CN108089825B (zh) 一种基于分布式集群的存储系统
CN105117351A (zh) 向缓存写入数据的方法及装置
WO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
CN101673271A (zh) 分布式文件系统及其文件分片方法
CN105786997A (zh) 基于iOS系统的图片缓存与压缩方法
CN106951182A (zh) 一种块设备缓存方法和装置
CN111694765A (zh) 一种面向移动应用特征的非易失性内存文件系统多粒度空间管理方法
CN101853218B (zh) 用于磁盘阵列的读取方法和系统
CN103198021A (zh) 一种提高固态硬盘数据传输效率的方法
CN1963810A (zh) 在Flash存储介质上的关于文件分配表的缓存实现方法
CN105138277A (zh) 一种固态盘阵列的缓存管理方法
CN102917036A (zh) 一种基于Memcached的分布式缓存数据同步实现方法
CN102520879B (zh) 基于优先级的文件信息存储方法、装置及系统
CN106980475A (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
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
CB03 Change of inventor or designer information

Inventor after: Chen Jindi

Inventor after: Mo Jin

Inventor after: Wei Huaping

Inventor after: Wang Zhi

Inventor after: Deng Zhiyong

Inventor after: Mai Xiaoting

Inventor after: Xie Yanghui

Inventor after: Xie Guohui

Inventor before: Song Yaning

COR Change of bibliographic data
TR01 Transfer of patent right

Effective date of registration: 20160810

Address after: 510507 Guangdong city of Guangzhou province Tianhe District Yanling Road No. 95, room 1607B

Patentee after: Guangzhou seagull Supply Chain Management Co., Ltd.

Address before: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice

Patentee before: ZTE Corporation

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150603

Termination date: 20210419