CN102143445B - 消息处理方法及设备 - Google Patents
消息处理方法及设备 Download PDFInfo
- Publication number
- CN102143445B CN102143445B CN2010102966808A CN201010296680A CN102143445B CN 102143445 B CN102143445 B CN 102143445B CN 2010102966808 A CN2010102966808 A CN 2010102966808A CN 201010296680 A CN201010296680 A CN 201010296680A CN 102143445 B CN102143445 B CN 102143445B
- Authority
- CN
- China
- Prior art keywords
- message
- file
- year
- retaking
- grade
- 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
Links
Images
Abstract
本发明提供一种消息处理方法和设备。其中消息处理方法,包括:预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;处理回读的消息。通过采用本实施例的技术方案,在存储的过程中不用创建索引,在回读的过程中也不用针对每条消息进行查询,实现了对消息的连续读和连续写,有效地提高了消息写操作和读操作的性能。能够同时有效地提高消息的写操作和读操作的性能。
Description
技术领域
本发明实施例涉及移动通信中的消息处理技术领域,尤其涉及一种消息处理方法及设备。
背景技术
随着移动通信系统的迅猛发展,出现了各种各样的通信业务,其中消息业务是基本的通信业务之一。
现有的消息业务中,消息中心提供了消息接收、存储以及转发重复等功能。在消息处理过程中,消息中心要能够并发支持大量移动终端的收发消息,如果被叫的移动终端关机或不在服务区域,消息中心需要存储大量的消息,并为每条消息设定自己的重发时间。并根据每条消息的重发时间对消息准确调度,以保证每条消息都能够按照自己的重发时间精确下发。
消息中心通常采用将所有定时重发的消息存储在磁盘中,并且在磁盘中采用数据库的方式对需要定时重发的消息进行管理,每条消息都有一个自己的定时器,当定时器触发时,就根据消息ID去数据库中查询,然后调度下发。由于磁盘的容量可以无限扩大,采用此技术方案能够支持大量消息的存储。同时为了提高查询消息的性能,也可以通过在数据库中创建索引的方式,方便快捷的查询磁盘中的消息。
针对于现有的采用磁盘存储定时重发的消息,虽然容量可以无限扩大,但是创建索引之后,每存储一条新的消息都需要对索引进行更新,导致写入新消息的性能受到限制。但是如果不创建索引,从磁盘中去查询并读取每条消息的性能又较低。因此,现有消息中心无法同时兼顾对消息的读操作和写操作处理性能。
发明内容
本发明实施例提供一种消息处理方法及设备,用以有效地提高对消息的读操作和写操作的性能。
本发明实施例提供一种消息处理方法,包括:
预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;
在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;
当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;
处理回读的消息。
本发明实施例提供一种消息处理设备,包括:
设置模块,用于预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;
第一存储处理模块,用于在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;
回读模块,用于当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;
处理模块,用于处理回读的消息。
本发明实施例的消息处理方法及设备,通过采用将下发时间属于同一时间片的消息存储到同一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读。通过本发明实施例提供的方式,在存储的过程中不用创建索引,在回读的过程中也不用针对每条消息进行查询,实现了对消息的连续读和连续写,有效地提高了消息写操作和读操作的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的消息处理方法的流程图;
图2为本发明实施例中文件读取顺序的逻辑结构图;
图3为本发明另一实施例提供的消息处理方法的流程图;
图4为本发明另一实施例提供的消息处理方法的流程图;
图5为本发明实施例提供的消息处理设备的结构示意图;
图6为本发明实施例提供的第一存储处理模块的结构示意图;
图7为本发明另一实施例提供的消息处理设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的消息处理方法的流程图。如图1所示,本实施例的消息处理方法,具体可以包括如下内容:
步骤100、预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;
具体地,消息处理设备可以在存储消息的硬盘或磁盘上建立上述N个文件,各文件分别用于存储消息。其中,消息处理设备可以是短消息中心、多媒体消息中心等,存储消息的硬盘或磁盘可以位于消息处理设备内部或者外 部。这里的时间片T是为每个文件设置的,用以使消息可以按时间片存储至相应文件中,以便在后续回读过程中可以直接按文件的读取顺序进行回读,不用进行每条消息的查找,有效的提高了消息的读写效率。其中,T可以取大于0的任意时间长度,例如为2分钟,3分钟等等。
步骤101、在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;
具体地,在消息中心下发消息的过程中,如果等待下发的消息的下发时间与当前时刻的时间差的差值较大等情况,为了防止消息丢失以及保证消息中心的调度效率,通常需要将消息进行存储。
本发明实施例中,由于预先设置了用于存储消息的N个文件,以及为每个文件设置了对应的时间片,因此,本步骤中,可以将下发时间属于同一时间片的消息存储在同一文件中。其中,在存储时,可以先确定需要存储的消息的下发时间与当前时间的时间差t,再根据该时间差t、当前正在回读的文件位置以及每个文件对应的时间片长度T来确定存储该消息的文件。
需要说明的是,本实施例中,等待下发的消息可以是需要进行存储转发的消息,也可以是存储转发失败后需要重发的消息。
步骤102、当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;
具体地,采用上述步骤101对消息进行存储之后,当需要对消息进行回读时,可以按照这N个文件的读取顺序将各文件中存储的消息批量回读。其中,在按文件的读取顺序对文件中存储的消息进行批量回读时,可以通过时间片来控制文件的切换,即每到达一个时间片,则按文件的读取顺序切换至下一文件,并批量回读下一文件中的消息。
需要说明的是,文件的读取顺序可以由预先设置的指向文件的指针的运动轨迹确定。而该指针的运动轨迹为:依次指向N个文件中的每一个文件,并在指向到第N个文件后,重新指向第1个文件,形成环形运动轨迹。其中, 该指针在每到达一个时间片时,切换到下一个文件。假设每个文件对应的时间片的长度均为T,可以采用一个定时器来控制时间片的切换,从而控制文件的切换。例如,每当定时器到达时间片长度T,指针由指向当前文件切换为指向下一个文件。若当前文件为第N个文件时,下一个文件即为第1个文件。这样,就好像N个文件排列成一个环状的存储结构。此时,指针每运动一圈即为一个存储周期,周期的时间长度为N×T。如图2所示,为文件读取顺序的逻辑结构图,图2所示实施例中,N取值为30,T取值为2分钟,该周期的时间长度为1个小时。
步骤103、处理回读的消息。
具体地,经过步骤102将文件中存储的消息进行批量回读之后,将回读的消息进行处理。具体的,对于已回读的消息,可以进一步判断其是否属于超周期的消息,若是超周期的消息,则将其重新存入该文件中;若未超周期,则对其进行调度下发。
本实施例的消息处理方法,通过采用将下发时间属于同一时间片的消息存储到同一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;实现了消息的连续读和连续写,不用每条消息建立索引,也不用每条消息都进行一次查询,改变了现有技术中对消息的读操作或写操作的性能较低的缺陷,能够有效地提高消息的写操作或读操作的性能。
需要说明的是,在步骤101中,根据回读策略的不同或者下发策略的不同,将下发时间属于同一时间片的消息存储到同一文件中的实现过程也可以不同。比如,如果所有消息的下发时间都在一个周期以内,即在时间N×T以内,不考虑超周期的情况,则可以根据公式 来获得消息的存储位置j,其中j表示将消息存储在当前正在回读的文件后的第j个文件。如果考虑超周期的情况,即需要下发的消息中,有下发时间超过N×T的,此时,可通过公式 将消息存储在当前正在回读的文件后的第j个文件,其中K表示超周期倍数,如,在一个周期内,K取值为0;超一个周期,K取值为1;超2个周期,K取值为2;以此类推。需要说明的是,K的取值可以采用消息的下发时间与当前正在回读的文件之间的时间差除以周期时长(即,一个周期的时间长度N×T)得到。另外,根据回读策略的不同,上述公式还可以进行适当的变形,如:在回读时,为了提高回读的及时性,可以比消息的下发时间提前一个时间片进行消息回读,此时,在根据时间差t、当前正在回读的文件位置以及每个文件对应的时间片长度T来确定存储该消息的文件时,需要进行减1的计算,即可以通过公式获得存储消息的位置,此时,由于提前了一个时间片进行回读,因此,消息的下发时间与当前正在回读的文件之间的时间差应该为t-2T(t为消息下发时间与当前时间的时间差),所以,K的取值为对(t-2T)(N×T)向下取整的整数。
在另一实施例中,为了更有效的进行消息存储,对于下发时间在当前正在回读的文件所对应的时间片内的消息,可以直接存储在调度区,而不是按其下发所属的时间片存储当前正在回读的文件中。此时,如果采用提前一个时间片进行回读的策略,则在确定消息的下发时间与当前时刻的时间差t之后,还可以进一步判断消息的下发时间与当前时刻的时间差t是否大于2T,对t<2T的消息,则直接存储在调度区中;对t≥2T的消息,则按照下发时间属于同一时间片的消息存储到同一文件中的方式进行存储。
下面以提前一个时间片进行回读,并对于下发时间在当前正在回读的文件所对应的时间片内的消息直接存储在调度区为例,通过图3对步骤101的具体实现进行详细说明,如图3所示,将下发时间属于同一时间片的消息存储到同一文件中可以包括如下过程:
步骤1011、确定消息的下发时间与当前时刻的时间差t;
具体地,在消息中心下发消息的过程中,如果需要对等待下发的消息进行存储,首先确定该消息的下发时间与当时时刻的时间差t的差值。其中,本步骤中的当前时刻是指对消息进行存储时的当前时刻。
步骤1012、根据时间差t、时间片长度T以及当前正在回读的文件位置确定存放消息的文件的位置;
本实施例中,以提前一个时间片进行回读为例,在进行消息存储时,对与t<2T的消息,可以直接存储在调度区,当然,为了数据的安全,也可以将其存储在任意一个文件中进行备份。对于t≥2T的消息,可以根据公式 来确定该消息存放的文件的位置,即存放在当前正在回读的文件后的第j个文件;其中, 表示对t/T向下取整,K为对(t-2T)/(N×T)向下取整的整数。这里需要说明的是,由于每个文件对应的时间片长度为T,那么N个文件所能存储的消息为下发时间在N×T内的消息,也就是说N×T即为一个存储周期,因此 的值大于N时,需要减去K×N,以找到对应的文件进行存储。其中,K即为超周期倍数,比如:当K为0,即表示未超周期,K为1则表示超过1个周期。具体的,是否超周期,是根据下发时间与当前正在回读的文件所对应的时间差来确定的。本实施例中,由于提前了一个时间片进行消息回读,且下发时间在当前进行回读的时间片内的消息直接存储在调度区,因此,下发时间与当前正在回读的文件所对应的时间差为t-2T,所以,K的取值为对(t-2T)/(N×T)向下取整的整数。
下面举一例进行说明,假设时间片长度为2分钟,而且在回读时提前一个时间片进行回读,那么,此时,正在回读的文件为下发时间与当前时间的时间差在2-4分钟之间的消息所在的文件,假设现在需要存储的消息的下发时间与当前时间的时间差为7分钟,根据对(7-2×2)/(30×2)取整,可以得知K=0,根据公式 那么,该消息应该存储在当前正在回读的文件之后的第2个文件。
需要说明的是,对本发明实施例提供的公式所进行的任何变形,如,将公式变形为 均在本发明的保护范围内。而且,根据读取策略的不同,对公式进行适当的改变,如,在采用提前两个时间片进行回读 的方式时,将减1改为减2,均不影响本发明的实质,此类变形均应在本发明的保护范围内。
在确定位置j时,也可以不采用上述公式直接计算得到,而是根据时间差t、时间片长度,以及当正在回读的文件位置,确定后续每个文件所存储的消息的时间范围,然后根据时间差存储到对应的文件中。例如具体可以为:根据指针指向的当前文件后的第j个文件用于存储时间差t在(K×N×T+(j+1)×T)≤t<(K×N×T+(j+2)×T)范围内的消息,确定存放该消息的应该存储的文件位置;其中1≤j≤N,j为正整数;K为对(t-2T)/(N×T)向下取整的整数;具体地K为0或者正整数。T时间片长度。
例如,以图2为例,取N=30,即共有30个文件;T取2分钟的时候,假设指针当前指向的第1个文件,也就是此时正在回读时间差在{2,4}分钟的消息,消息中心此时正在下发时间差在[0,2]分钟的消息。若需要对t≥4的消息进行存储时,第2个文件用于存储时间下发时间与当前时刻的时间差t在K×60+4≤t<K×60+6,K为对(t-4)/60向下取整的整数。第3个文件用于存储时间下发时间与当前时刻的时间差t在K×60+6≤t<K×60+8,K为对(t-4)/60向下取整的整数。依此类推,第30个文件为第1个文件后的第29个文件用于存储时间下发时间与当前时刻的时间差t在K×60+60≤t<K×60+62,K为对(t-4)/60向下取整的整数。而第1个文件即为第1个文件后的第30个文件用于存储时间下发时间与当前时刻的时间差t在K×60+62≤t<K×60+64,K为对(t-4)/60向下取整的整数。
假如确定下发时间与当前时刻的时间差t,且确定t≥4之后,首先判断K的值,K的值为对(t-4)/60向下取整的整数;然后根据指针指向的当前文件后的第j个文件用于存储时间差t在(K×N×T+(j+1)×T)≤t<(K×N×T+(j+2)×T)范围内的消息、确定的K的值以及确定的T的值,可以推断出该消息应该存储的文件的位置。
例如,当消息的下发时间与当前时刻的时间差t=13时,对(t-4)/60向下 取整,得到K的值为0。由于已经确定t=13,再结合(j+1)×2≤t<(j+2)×2,可得到(j+1)×2≤13<(j+2)×2,进一步得到4.5≤j<5.5,由于j为正整数,从而确定j=5。也就是说该下发时间与当前时刻的时间差t=13的消息应该存储在当前指针指向的文件后的第5个文件中,若当前指针向的文件是第1个文件,则该消息应该存储在第6个文件中。
当消息的下发时间与当前时刻的时间差t=63时,对(t-4)/60向下取整,得到K的值为0。由于已经确定t=63,再结合(j+1)×2≤t<(j+2)×2,可得到(j+1)×2≤63<(j+2)×2,进一步得到29.5≤j<30.5,由于j为正整数,从而确定j=30。也就是说该下发时间与当前时刻的时间差t=63的消息应该存储在当前指针指向的文件后的第30个文件中,若当前指针向的文件是第1个文件,第1个文件后的第30个文件是指针转一圈之后的第一个文件,所以该消息应该存储在第1个文件中。
当消息的下发时间与当前时刻的时间差t=113时,对(t-4)/60向下取整,得到K的值为1。由于已经确定t=113,再结合(60+(j+1)×2))≤t<(60+(j+2)×2),可得到(j+1)×2)≤113<((j+2)×2),进一步得到24.5≤j<25.5,由于j为正整数,从而确定j=25。也就是说该下发时间与当前时刻的时间差t=113的消息应该存储在当前指针指向的文件后的第25个文件中,若当前指针向的文件是第1个文件,所以该消息应该存储在第26个文件中。
步骤1013、将消息存储至位置对应的文件中。
具体地,将该消息存储至步骤1012确定的文件位置对应的文件中。
本实施例的消息处理方法,通过确定消息的下发时间与当前时刻的时间差t;并根据时间差t、时间片长度T以及当前正在回读的文件位置确定存放消息的文件位置,并对文件进行存储,本实施例的技术方案,能够有效地提高消息的存储效率,从而能够保证后续读取消息的效率。
需要说明的是,在上述实施例中,当消息的下发时间与当前时刻的时间差t<2T时,可以将消息直接存储在调度区中。具体地,由于上述实施例采用的是提前一个时间片进行消息回读的策略,因此,当消息中心目前正在下发时间差在[0,T]范围内的消息,正在回读下发时间差在[T,2T]范围内的消息,所以当消息的下发时间与当前时刻的时间差t<2T时,可以将该消息存储在调度区中即可,不用再存储到文件中,以提高存储效率。但是调度区中存储并不稳定,容易造成消息丢失。为了进一步保证消息的安全性,在将下发时间与当前时刻的时间差t<2T的消息存储在调度区的同时,复制一份临时存储在N文件中任意一个文件中进行备份。当该消息下发失败,消息中心为该消息重新分配下发时间之后,再按照上述实施例的规则重新将该消息进行存储。但是存储之前需要将临时存储的消息删除,以节省存储设备上不必要的冗余。
上述过程对消息进行了有效地存储。下面继续介绍对文件中的消息进行回读和处理。
其中,步骤102按照文件的读取顺序对文件中存储的消息进行批量回读具体可以包括:每当指针随时间片切换到下一个文件时,回读该指针所指向的文件中存储的所有消息,或者回读改指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息。具体的,由于在存储时,可以对下发时间超周期的消息也进行存储,因此,一个文件中可能存储有本周期的一个时间片内的消息,也可以存储有下一周期或者后续其它周期内的一个时间片内的消息(即不在本周期内下发的消息)。因此,每当指针随时间片切换到下一个文件时,可以仅回读指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息,以便于直接将回读的消息按照各自下发时间进行调度下发。当然,也可以回读指针所指向的文件中的所有消息,在后续处理回读消息时,将回读的该文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息按照各自下发时间进行调度下发,并将其他剩余的消息重新存储到当前指针指向的文件中,以便到其所属周期再进行回读下发。
若步骤102中仅回读指针所指向的文件中存储的下发时间与当前正在回 读的时刻的时间差在一个周期时长N×T以内的消息,则步骤103中,处理回读的消息具体包括:将回读的消息进行调度下发。
若步骤102中回读了指针所指向的文件中的所有消息,则步骤103中,处理回读的消息具体包括:将下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息进行调度下发,并将剩余的消息重新存储到所述指针指向的文件中。
需要说明的是,在消息回读的过程中,为了保证所有回读的消息都能够按照下发时间准确下发,可以提前将消息回读至调度区中。通常可以提前一个时间片或者两个时间片或者多个时间片将消息回读至调度区中。根据回读策略的不同,回读的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息所在的时间片不同。比如,当提前一个时间片回读消息时,回读的消息的下发时间与当前正在回读的时刻的时间差所在的时间片为[T,2T)。当提前两个时间片回读消息时,回读的消息的下发时间与当前正在回读的时刻的时间差所在的时间片为[2T,3T)。
如,在图3所示实施例的基础上,回读指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息,具体实现可以为:回读指针所指向的文件中存储的下发时间与当前时刻的时间差在[T,2T)内的消息,[T,2T)表示大于等于T小于2T。需要说明的是,此步骤中的当前时刻是指回读消息时的时刻。
具体地,这里是以提前一个时间片回读文件中的消息。对于提前两个时间片或者多个时间片的情况与上述实施例类似,详细在此不再赘述。
为了不影响消息中心的存储和读取性能,读取某一个文件时,可以将该文件拿出以便于读取该文件中的消息,同时在该文件的原来位置放置一个新的文件来替换该文件,以存储消息。
由于需要存储的消息包括下发失败需要重发的消息,而下发失败的原因可能包括被叫关机、不在服务器等,因此,在这些原因消除之后,该被叫的 所有消息都可以成功下发。在这种情况下,为了提高下发效率,可以优先将目的号码相同的消息存储到一个文件中,使得在能够成功下发的时候,将属于该被叫的消息全部下发,以节省存储空间。如图4为优先将目的号码相同的消息存储在相同文件中的实施例流程图,包括:
步骤1014、判断N个文件中是否存储有与消息的目的号码相同的消息;
具体地,当需要等待重发的消息进行存储的时候,首先判断N个文件中是否存储有与该要存储的消息的目的号码相同的消息。
步骤1015、若有文件中存储有与消息的目的号码相同的消息,将消息存储至与消息的目的号码相同的消息所在文件中;
具体地,当N个文件中的某个文件中存储有目的号码与该待存储的消息的目的号码相同的消息,则将该消息存储到与该消息的目的号码相同的消息所在的文件中。
步骤1016、若N个文件中未存储有与消息的目的号码相同的消息,执行将下发时间属于同一时间片的消息存储到同一文件中的操作。
具体地,若N个文件中任意一个文件中均不存在目的号码与该消息的目的号码相同的消息,则按照上述实施例的规则,将下发时间属于同一时间片的消息存储到同一文件中,详细可参考上述图3所示实施例,在此不再赘述。需要说明的是,在图4所示实施例的基础上,在步骤102中,在回读指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,还包括:回读与下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息。相应的,在处理回读消息时,还包括将与下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息进行下发。需要说明的是,这里的当前时刻同样是指回读时的时刻。如果回读的是指针所指向的文件中的所有消息,此时对应的处理回读的消息具体可以为:将下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息和与下发时间与 当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息进行下发,并将剩余的消息重新存储到指针指向的文件中。
本实施例的消息处理方法,能够有规则的将消息存储在N个文件中,当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;并处理回读的消息,改变了现有技术中对消息的读操作和写操作的性能不能同时提高较低的缺陷,能够同时有效地提高了消息的写操作和读操作的性能。
如图5所示,501为本发明实施例提供的消息处理设备的结构示意图。具体可以包括:设置模块10、第一存储处理模块11、回读模块12和处理模块13。
其中,设置模块10用于预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度。具体地,该设置模块10用于在存储区(如,磁盘、硬盘等)设置N个用于存储消息的文件,并设置时间长度为T的时间片。这里的存储区可以位于消息处理设备内部。如图5所示存储区也可以位于消息处理设备外部。
第一存储处理模块11用于在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到的同一文件中。
回读模块12用于当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读。
处理模块13用于处理回读模块12回读的消息。
需要说明的是,第一存储处理模块11将下发时间属于同一时间片的消息存储到设置模块10设置的N个文件中的同一文件中,需要根据回读模块12回读策略的不同或者消息下发策略的不同,将下发时间属于同一时间片的消息存储到同一文件中的实现过程也可以不同。详细可以参考上述图1所示实施例的详细描述。
本实施例的消息处理设备通过各模块实现消息处理的过程,与上述相应 方法实施例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。
本实施例的消息处理设备,通过各模块实现采用将下发时间属于同一时间片的消息存储到同一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;并处理回读的消息,改变了现有技术中对消息的读操作或写操作的性能较低的缺陷,能够同时有效地提高了消息的写操作或读操作的性能。
图6为本发明实施例提供的第一存储处理模块11的结构示意图。如图6所示,本实施例的消息处理设备中的第一存储处理模块11具体可以包括:时间确定单元110、位置确定单元111和第一存储处理单元112。
其中第一存储处理模块11中的时间确定单元110用于确定消息的下发时间与当前时刻的时间差t。这里的当前时刻为当前正在存储消息的时刻。
位置确定单元111用于根据时间确定单元110确定的时间差t、时间片长度T以及当前正在回读的文件位置确定存放消息的文件的位置。
第一存储处理单元112与位置确定单元111连接,第一存储处理单元112用于将消息存储至位置确定单元111确定的位置对应的文件中。
在另一实施例中,为了更有效的进行消息存储,对于下发时间在当前正在回读的文件所对应的时间片内的消息,可以直接存储在调度区,而不是按其下发所属的时间片存储当前正在回读的文件中。此时,如果采用提前一个时间片进行回读的策略,第一存储处理模块11还可以进一步包括判断单元113和第二存储处理单元114:
其中,判断单元113,用于判断消息的下发时间与当前时刻的时间差t是否大于2T;若大于,则触发位置确定单元111;否则,触发第二存储处理单元114;
第二存储处理单元114,用于将消息直接存储在调度区中。
其中,位置确定单元111具体用于当时间确定单元110确定的时间差t≥2T 时,确定存放所述消息的文件的位置为当前正在回读的文件后的第j个文件,j通过公式 计算得到;其中,K为对(t-2T)/(N×T)向下取整的整数, 表示对t/T向下取整。位置确定单元111具体还可以根据指针指向的当前文件后的第j个文件用于存储时间差t在(K×N×T+(j+1)×T)≤t<(K×N×T+(j+2)×T)范围内的消息,确定存放该消息的应该存储的文件位置;其中1≤j≤N,j为正整数;K为对(t-2T)/(N×T)向下取整的整数;具体地K为0或者正整数。T为预先设置的时间片长度。
本实施例是以回读模块12按照提前一个时间片对文件中的消息进行回读为例。实际应用中回读模块12可以提前两个时间片或者多个时间片进行消息回读。例如,当提前两个时间片回读消息时,位置确定单元111用于确定放消息的文件的位置为当前正在回读的文件后的第j个文件,j通过公式 计算得到。当提前两个时间片时,位置确定单元111具体还可以根据指针指向的当前文件后的第j个文件用于存储时间差t在(K×N×T+(j+2)×T)≤t<(K×N×T+(j+3)×T)范围内的消息,确定存放该消息的应该存储的文件的位置;对于提前多个时间片回读消息的情况类似,可以对公式作以简单更改,以确定消息应该存储的文件的位置。详细可以参考上述相关方法实施例的记载,在此不再赘述。
本实施例的第一存储处理模块11通过各模块实现消息处理的过程,与上述相应方法实施例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。
本实施例的第一存储处理模块11,通过各模块实现确定消息的下发时间与当前时刻的时间差t;并根据时间差t、时间片长度T以及当前正在回读的文件位置确定存放消息的文件位置,并对文件进行存储,本实施例的技术方案,能够有效地提高消息的存储效率,从而能够保证后续读取消息的效率。
需要说明的是,上述实施例中,回读模块12按照文件的读取顺序对文件中存储的消息进行批量回读时,其中文件的读取顺序由预先设置的指向文件的指针的运动轨迹确定;指针的运动轨迹为:依次指向每一个文件,并在指向到第N个文件后,重新指向第1个文件,形成环形运动轨迹,其中,指针在每到达一个时间片时,切换到下一个文件;指针每运动一圈为一个周期,所述周期的时间长度为N×T。
需要说明的是,上述实施例中,回读模块12具体用于每当指针随时间片切换到下一个文件时,回读指针所指向的文件中存储的所有消息,或者回读指针所指向的文件中存储的下发时间与当前时刻的时间差在一个周期时长N×T以内的消息。这里的当前时刻为当前正在回读消息的时刻。当回读的消息为指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,处理模块13,具体用于将回读的消息进行调度下发。回读模块12的具体处理可以参考上述相关方法实施例的记载,在此不再赘述。
图7为本发明另一实施例提供的消息处理设备的结构示意图。如图7所示,在上述图5所示实施例的基础上,本实施例的消息处理设备501中具体还可以包括:判断模块14和第二存储处理模块15。
本实施例的判断模块14用于在对消息进行存储时,判断预先设置的N个文件中是否存储有与消息的目的号码相同的消息;若有,则触发第二存储处理模块15;否则,触发第一存储处理模块11。第二存储处理模块15与判断模块14连接。第二存储处理模块15用于在判断模块14判断N个文件中存储有与消息的目的号码相同的消息时,将消息存储至与消息的目的号码相同的消息所在文件中。本实施例中的第一存储处理模块11具体可以采用上述图6所示实施例的结构。
本实施例的消息处理设备通过各模块实现消息处理的过程,与上述相应方法实施例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。
本实施例的消息处理设备,通过各单元能够有效地避免消息发送的目的 号码相同的消息未一起存储,使得在能够成功下发的时候,将属于该被叫的消息全部下发,以节省存储空间,有效地提高消息的存储性能。
需要说明的是,本实施例中的回读模块12在回读指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,回读与下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息。另外,如果本实施例中回读模块12回读的是指针所指向的文件中存储的所有消息,此时处理模块13具体用于将下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息、与下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息按照各消息对应的下发时间一一进行下发,并将剩余的消息通过第一存储处理模块11重新存储到指针指向的文件中。对于回读模块12提前两个时间片或者多个时间片回读消息的情况,详细可以参考上述相关方法实施例的记载,在此不再赘述。
上述实施例的消息处理设备通过各模块实现消息处理的过程,与上述相应方法实施例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。
需要说明的是,上述消息处理设备可以是计算机,消息处理设备中的各模块可以在处理器中运行。
上述实施例的消息处理设备,通过上述各模块,能够有效地对各文件中的消息进行回读和处理,在保证消息存储性能的基础上,有效地提高消息的读取性能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到至少两个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
1.一种消息处理方法,其特征在于,包括:
预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;
在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;
当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;
处理回读的消息;
所述将下发时间属于同一时间片的消息存储到同一文件中包括:
确定所述消息的下发时间与当前时刻的时间差t;
根据所述时间差t、时间片长度T以及当前正在回读的文件位置确定存放所述消息的文件的位置;
将所述消息存储至所述位置对应的文件中;
其中,所述根据所述时间差t、时间片长度T以及当前正在回读的文件位置确定存放所述消息的文件的位置,具体包括:
2.根据权利要求1所述的消息处理方法,其特征在于,确定所述消息的下发时间与当前时刻的时间差t之后,还包括:
判断所述消息的下发时间与当前时刻的时间差t是否大于2T;
若大于,执行所述根据所述时间差t、时间片长度T以及当前正在回读的文件位置确定存放所述消息的文件的位置;否则将所述消息直接存储在调度区中。
3.根据权利要求1或2所述的消息处理方法,其特征在于,所述文件的读取顺序由预先设置的指向文件的指针的运动轨迹确定;所述指针的运动轨迹为:依次指向每一个文件,并在指向到第N个文件后,重新指向第1个文件,形成环形运动轨迹,其中,所述指针在每到达一个时间片T时,切换到下一个文件;所述指针每运动一圈为一个周期,所述周期的时间长度为N×T。
4.根据权利要求3所述的消息处理方法,其特征在于,所述按照文件的读取顺序对文件中存储的消息进行批量回读,具体包括:
每当指针随时间片切换到下一个文件时,回读所述指针所指向的文件中存储的所有消息,或者回读所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息。
5.根据权利要求4所述的消息处理方法,其特征在于,当回读的消息为所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,所述处理回读的消息包括:将回读的消息进行调度下发。
6.根据权利要求4所述的消息处理方法,其特征在于,所述方法还包括:
在对消息进行存储时,判断预先设置的N个文件中是否存储有与所述消息的目的号码相同的消息;
若有,则将所述消息存储至与所述消息的目的号码相同的消息所在文件中;否则,执行所述将下发时间属于同一时间片的消息存储到同一文件中的操作。
7.根据权利要求6所述的消息处理方法,其特征在于,在回读所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,还包括:回读与所述下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息。
8.根据权利要求6所述的消息处理方法,其特征在于,当回读的消息为所述指针所指向的文件中存储的所有消息时,所述处理回读的消息包括:
将所述下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息或者与所述下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息进行调度下发,并将剩余的消息重新存储到所述指针指向的文件中。
9.一种消息处理设备,其特征在于,包括:
设置模块,用于预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;
第一存储处理模块,用于在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;
回读模块,用于当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;
处理模块,用于处理回读的消息;
其中,所述第一存储处理模块包括:
时间确定单元,用于确定所述消息的下发时间与当前时刻的时间差t;
位置确定单元,用于根据所述时间差t、时间片长度T以及当前正在回读的文件位置确定存放所述消息的文件的位置;
第一存储处理单元,用于将所述消息存储至所述位置对应的文件中;
其中,所述第一存储处理模块还包括:
判断单元,用于判断所述消息的下发时间与当前时刻的时间差t是否大于2T;若大于,则触发所述位置确定单元;否则,触发第二存储处理单元;
所述第二存储处理单元,用于将所述消息直接存储在调度区中。
11.根据权利要求9或10所述的消息处理设备,其特征在于,所述文件的读取顺序由预先设置的指向文件的指针的运动轨迹确定;所述指针的运动轨迹为:依次指向每一个文件,并在指向到第N个文件后,重新指向第1个文件,形成环形运动轨迹,其中,所述指针在每到达一个时间片T时,切换到下一个文件;所述指针每运动一圈为一个周期,所述周期的时间长度为N×T。
12.根据权利要求11所述的消息处理设备,其特征在于,所述回读模块,具体用于每当指针随时间片切换到下一个文件时,回读所述指针所指向的文件中存储的所有消息,或者回读所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息。
13.根据权利要求12所述的消息处理设备,其特征在于,当回读的消息为所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,所述处理模块,具体用于将回读的消息进行调度下发。
14.根据权利要求12所述的消息处理设备,其特征在于,所述消息处理设备还包括判断模块和第二存储处理模块:
所述判断模块,用于在对消息进行存储时,判断预先设置的N个文件中是否存储有与所述消息的目的号码相同的消息,若有,则触发第二存储处理模块;否则,触发第一存储处理模块;
所述第二存储处理模块,用于将所述消息存储至与所述消息的目的号码相同的消息所在文件中。
15.根据权利要求14所述的消息处理设备,其特征在于,所述回读模块,还用于在回读所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息时,回读与所述下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息。
16.根据权利要求15所述的消息处理设备,其特征在于,当回读的消息为所述指针所指向的文件中存储的所有消息时,所述处理模块,具体用于将所述下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息或者与所述下发时间与当前正在回读的时刻的时间差在一个周期时长N×T以内的消息具有相同目的号码的消息进行调度下发,并将剩余的消息通过所述第一存储处理模块重新存储到所述指针指向的文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102966808A CN102143445B (zh) | 2010-09-28 | 2010-09-28 | 消息处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102966808A CN102143445B (zh) | 2010-09-28 | 2010-09-28 | 消息处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102143445A CN102143445A (zh) | 2011-08-03 |
CN102143445B true CN102143445B (zh) | 2013-12-04 |
Family
ID=44410614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102966808A Expired - Fee Related CN102143445B (zh) | 2010-09-28 | 2010-09-28 | 消息处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102143445B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526925A (zh) * | 2009-04-15 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种缓存数据的处理方法及数据存储系统 |
CN101699443A (zh) * | 2009-11-04 | 2010-04-28 | 北京东方广视科技有限责任公司 | 一种管理网络文件的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877539B2 (en) * | 2005-02-16 | 2011-01-25 | Sandisk Corporation | Direct data file storage in flash memories |
-
2010
- 2010-09-28 CN CN2010102966808A patent/CN102143445B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526925A (zh) * | 2009-04-15 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种缓存数据的处理方法及数据存储系统 |
CN101699443A (zh) * | 2009-11-04 | 2010-04-28 | 北京东方广视科技有限责任公司 | 一种管理网络文件的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102143445A (zh) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104881333B (zh) | 一种存储系统及其使用的方法 | |
CN109493076A (zh) | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 | |
CN102629268B (zh) | 数据同步方法、系统及数据访问装置 | |
CN105786405A (zh) | 一种在线升级方法、装置及系统 | |
CN102945278A (zh) | 一种数据库记录重做日志的方法和装置 | |
CN103678536A (zh) | 一种实现页面返回操作的方法及装置 | |
CN105468302B (zh) | 一种处理数据的方法、装置及系统 | |
CN103780638A (zh) | 数据同步方法及系统 | |
CN101819543A (zh) | 快照数据处理方法和系统以及存储设备 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN103761141A (zh) | 一种实现消息队列的方法及装置 | |
CN102436395A (zh) | 一种内容选择复制方法和移动终端 | |
CN105446893A (zh) | 数据存储方法及设备 | |
CN110968586A (zh) | 分布式事务处理方法及装置 | |
CN106844108A (zh) | 一种数据存储方法、服务器以及存储系统 | |
CN106155943B (zh) | 一种双控存储设备的掉电保护的方法及装置 | |
CN105094841A (zh) | 一种页面评论方法及装置 | |
CN106570093A (zh) | 一种基于独立元数据组织结构的海量数据迁移方法和装置 | |
CN105094550A (zh) | 一种桌面图标的移动操作方法及装置 | |
CN107704155A (zh) | 应用程序图标的展示方法、装置、终端和存储介质 | |
CN104520802A (zh) | 数据发送方法、数据接收方法和存储设备 | |
CN106815080A (zh) | 分布式图数据处理方法和装置 | |
CN104461526A (zh) | 一种终端应用程序的控件遍历方法及装置 | |
CN113515317A (zh) | 数据恢复的方法、装置 | |
CN102143445B (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 | ||
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: 20131204 Termination date: 20170928 |