消息处理方法及设备的制作方法

文档序号:6333017阅读:173来源:国知局
专利名称:消息处理方法及设备的制作方法
技术领域
本发明实施例涉及移动通信中的消息处理技术领域,尤其涉及一种消息处理方法 及设备。
背景技术
随着移动通信系统的迅猛发展,出现了各种各样的通信业务,其中消息业务是基 本的通信业务之一。现有的消息业务中,消息中心提供了消息接收、存储以及转发重复等功能。在消息 处理过程中,消息中心要能够并发支持大量移动终端的收发消息,如果被叫的移动终端关 机或不在服务区域,消息中心需要存储大量的消息,并为每条消息设定自己的重发时间。并 根据每条消息的重发时间对消息准确调度,以保证每条消息都能够按照自己的重发时间精 确下发。消息中心通常采用将所有定时重发的消息存储在磁盘中,并且在磁盘中采用数据 库的方式对需要定时重发的消息进行管理,每条消息都有一个自己的定时器,当定时器触 发时,就根据消息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可 以取大于O的任意时间长度,例如为2分钟,3分钟等等。
步骤101、在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同 一时间片的消息存储到同一文件中;具体地,在消息中心下发消息的过程中,如果等待下发的消息的下发时间与当前 时刻的时间差的差值较大等情况,为了防止消息丢失以及保证消息中心的调度效率,通常 需要将消息进行存储。本发明实施例中,由于预先设置了用于存储消息的N个文件,以及为每个文件设 置了对应的时间片,因此,本步骤中,可以将下发时间属于同一时间片的消息存储在同一文 件中。其中,在存储时,可以先确定需要存储的消息的下发时间与当前时间的时间差t,再根 据该时间差t、当前正在回读的文件位置以及每个文件对应的时间片长度T来确定存储该 消息的文件。需要说明的是,本实施例中,等待下发的消息可以是需要进行存储转发的消息,也 可以是存储转发失败后需要重发的消息。步骤102、当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行 批量回读;具体地,采用上述步骤101对消息进行存储之后,当需要对消息进行回读时,可以 按照这N个文件的读取顺序将各文件中存储的消息批量回读。其中,在按文件的读取顺序 对文件中存储的消息进行批量回读时,可以通过时间片来控制文件的切换,即每到达一个 时间片,则按文件的读取顺序切换至下一文件,并批量回读下一文件中的消息。需要说明的是,文件的读取顺序可以由预先设置的指向文件的指针的运动轨迹确 定。而该指针的运动轨迹为依次指向N个文件中的每一个文件,并在指向到第N个文件 后,重新指向第1个文件,形成环形运动轨迹。其中,该指针在每到达一个时间片时,切换到 下一个文件。假设每个文件对应的时间片的长度均为T,可以采用一个定时器来控制时间片 的切换,从而控制文件的切换。例如,每当定时器到达时间片长度T,指针由指向当前文件切 换为指向下一个文件。若当前文件为第N个文件时,下一个文件即为第1个文件。这样,就 好像N个文件排列成一个环状的存储结构。此时,指针每运动一圈即为一个存储周期,周期 的时间长度为NXT。如图2所示,为文件读取顺序的逻辑结构图,图2所示实施例中,N取 值为30,T取值为2分钟,该周期的时间长度为1个小时。步骤103、处理回读的消息。具体地,经过步骤102将文件中存储的消息进行批量回读之后,将回读的消息进 行处理。具体的,对于已回读的消息,可以进一步判断其是否属于超周期的消息,若是超周 期的消息,则将其重新存入该文件中;若未超周期,则对其进行调度下发。本实施例的消息处理方法,通过采用将下发时间属于同一时间片的消息存储到同 一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回 读;实现了消息的连续读和连续写,不用每条消息建立索引,也不用每条消息都进行一次查 询,改变了现有技术中对消息的读操作或写操作的性能较低的缺陷,能够有效地提高消息 的写操作或读操作的性能。需要说明的是,在步骤101中,根据回读策略的不同或者下发策略的不同,将下发 时间属于同一时间片的消息存储到同一文件中的实现过程也可以不同。比如,如果所有消 息的下发时间都在一个周期以内,即在时间NXT以内,不考虑超周期的情况,则可以根据公式j =|_t/T」来获得消息的存储位置j,其中j表示将消息存储在当前正在回读的文件后的 第j个文件。如果考虑超周期的情况,即需要下发的消息中,有下发时间超过NXT的,此时, 可通过公式j =Lt7xJ" KxN将消息存储在当前正在回读的文件后的第j个文件,其中K表 示超周期倍数,如,在一个周期内,K取值为0 ;超一个周期,K取值为1 ;超2个周期,K取值 为2 ;以此类推。需要说明的是,K的取值可以采用消息的下发时间与当前正在回读的文件 之间的时间差除以周期时长(即,一个周期的时间长度NXT)得到。另外,根据回读策略的 不同,上述公式还可以进行适当的变形,如在回读时,为了提高回读的及时性,可以比消息 的下发时间提前一个时间片进行消息回读,此时,在根据时间差t、当前正在回读的文件位 置以及每个文件对应的时间片长度T来确定存储该消息的文件时,需要进行减1的计算,即 可以通过公式j =LtZTj-I- K>N获得存储消息的位置,此时,由于提前了一个时间片进行 回读,因此,消息的下发时间与当前正在回读的文件之间的时间差应该为t-2T(t为消息下 发时间与当前时间的时间差),所以,K的取值为对(t-2T)/(NXT)向下取整的整数。在另一实施例中,为了更有效的进行消息存储,对于下发时间在当前正在回读的 文件所对应的时间片内的消息,可以直接存储在调度区,而不是按其下发所属的时间片存 储当前正在回读的文件中。此时,如果采用提前一个时间片进行回读的策略,则在确定消息 的下发时间与当前时刻的时间差t之后,还可以进一步判断消息的下发时间与当前时刻的 时间差t否大于2T,对t < 2T的消息,则直接存储在调度区中;对t彡2T的消息,则按照 下发时间属于同一时间片的消息存储到同一文件中的方式进行存储。下面以提前一个时间片进行回读,并对于下发时间在当前正在回读的文件所对应 的时间片内的消息直接存储在调度区为例,通过图3对步骤101的具体实现进行详细说明, 如图3所示,将下发时间属于同一时间片的消息存储到同一文件中可以包括如下过程步骤1011、确定消息的下发时间与当前时刻的时间差t ;具体地,在消息中心下发消息的过程中,如果需要对等待下发的消息进行存储,首 先确定该消息的下发时间与当时时刻的时间差t的差值。其中,本步骤中的当前时刻是指 对消息进行存储时的当前时刻。步骤1012、根据时间差t、时间片长度T以及当前正在回读的文件位置确定存放消 息的文件的位置;本实施例中,以提前一个时间片进行回读为例,在进行消息存储时,对与t < 2T的 消息,可以直接存储在调度区,当然,为了数据的安全,也可以将其存储在任意一个文件中 进行备份。对于t彡2T的消息,可以根据公式j =Lt77J-1- KxN来确定该消息存放的文件 的位置,即存放在当前正在回读的文件后的第j个文件;其中,[_t/T」表示对t/T向下取整,K 为对(t_2T)/(NXT)向下取整的整数。这里需要说明的是,由于每个文件对应的时间片长 度为T,那么N个文件所能存储的消息为下发时间在NXT内的消息,也就是说NXT即为一 个存储周期,因此|_t/T」-l的值大于N时,需要减去KXN,以找到对应的文件进行存储。其中, K即为超周期倍数,比如当K为0,即表示未超周期,K为1则表示超过1个周期。具体的, 是否超周期,是根据下发时间与当前正在回读的文件所对应的时间差来确定的。本实施例 中,由于提前了一个时间片进行消息回读,且下发时间在当前进行回读的时间片内的消息 直接存储在调度区,因此,下发时间与当前正在回读的文件所对应的时间差为t-2T,所以,K的取值为对(t_2T)/(NXT)向下取整的整数。下面举一例进行说明,假设时间片长度为2分钟,而且在回读时提前一个时间片 进行回读,那么,此时,正在回读的文件为下发时间与当前时间的时间差在2-4分钟之间的 消息所在的文件,假设现在需要存储的消息的下发时间与当前时间的时间差为7分钟,根 据对(7-2X2)/(30X2)取整,可以得知K = 0,根据公式j= |_7/2」小似30=2,那么,该消 息应该存储在当前正在回读的文件之后的第2个文件。需要说明的是,对本发明实施例提供的公式所进行的任何变形,如,将公式变形为 j=|_t-(KxNxT)/T」-l,均在本发明的保护范围内。而且,根据读取策略的不同,对公式进 行适当的改变,如,在采用提前两个时间片进行回读的方式时,将减1改为减2,均不影响本 发明的实质,此类变形均应在本发明的保护范围内。在确定位置j时,也可以不采用上述公式直接计算得到,而是根据时间差t、时间 片长度,以及当正在回读的文件位置,确定后续每个文件所存储的消息的时间范围,然后根 据时间差存储到对应的文件中。例如具体可以为根据指针指向的当前文件后的第j个文 件用于存储时间差t在(KXNXT+(j+l)XT)(KXNXT+(j+2)XT)范围内的消息,确 定存放该消息的应该存储的文件位置;其中1 < j < N,j为正整数;K为对(t-2T)/(NXT) 向下取整的整数;具体地K为0或者正整数。T时间片长度。例如,以图2为例,取N = 30,即共有30个文件;T取2分钟的时候,假设指针当 前指向的第1个文件,也就是此时正在回读时间差在{2,4}分钟的消息,消息中心此时正 在下发时间差在W,2]分钟的消息。若需要对t ^ 4的消息进行存储时,第2个文件用于 存储时间下发时间与当前时刻的时间差t在KX60+4彡t < KX60+6,K为对(t_4)/60向 下取整的整数。第3个文件用于存储时间下发时间与当前时刻的时间差t在KX60+6 ( t <KX60+8,K为对(t-4)/60向下取整的整数。依此类推,第30个文件为第1个文件后的 第四个文件用于存储时间下发时间与当前时刻的时间差t在KX60+60 ^ t < KX60+62, K为对(t-4)/60向下取整的整数。而第1个文件即为第1个文件后的第30个文件用于存 储时间下发时间与当前时刻的时间差t在KX60+62彡t < KX60+64,K为对(t_4)/60向 下取整的整数。假如确定下发时间与当前时刻的时间差t,且确定t > 4之后,首先判断K的值, K的值为对(t-4)/60向下取整的整数;然后根据指针指向的当前文件后的第j个文件用于 存储时间差t在(KXNXT+(j+l) XT) ^ t < (KXNXT+U+2) XT)范围内的消息、确定的 K的值以及确定的T的值,可以推断出该消息应该存储的文件的位置。例如,当消息的下发时间与当前时刻的时间差t = 13时,对(t_4)/60向下取 整,得到K的值为0。由于已经确定t = 13,再结合(j+l)X2<t< (j+2)X2,可得到 (j+1) X2彡13 < (j+2) X2,进一步得到4. 5彡j < 5. 5,由于j为正整数,从而确定j = 5。也就是说该下发时间与当前时刻的时间差t = 13的消息应该存储在当前指针指向的文 件后的第5个文件中,若当前指针向的文件是第1个文件,则该消息应该存储在第6个文件 中。当消息的下发时间与当前时刻的时间差t = 63时,对(t_4)/60向下取整,得到K 的值为0。由于已经确定t = 63,再结合(j+l)X2<t< (j+2) X 2,可得到(j+1) X2彡63 < (j+2) X2,进一步得到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+l)X2)) ( t < (60+(j+2)X2),可得 到(j+l)X2) ( 113 < ((j+2) X 2),进一步得到24.5彡j< 25.5,由于j为正整数,从而 确定j = 25。也就是说该下发时间与当前时刻的时间差t = 113的消息应该存储在当前指 针指向的文件后的第25个文件中,若当前指针向的文件是第1个文件,所以该消息应该存 储在第沈个文件中。步骤1013、将消息存储至位置对应的文件中。具体地,将该消息存储至步骤1012确定的文件位置对应的文件中。本实施例的消息处理方法,通过确定消息的下发时间与当前时刻的时间差t ;并 根据时间差t、时间片长度T以及当前正在回读的文件位置确定存放消息的文件位置,并对 文件进行存储,本实施例的技术方案,能够有效地提高消息的存储效率,从而能够保证后续 读取消息的效率。需要说明的是,在上述实施例中,当消息的下发时间与当前时刻的时间差t < 2T 时,可以将消息直接存储在调度区中。具体地,由于上述实施例采用的是提前一个时间片进 行消息回读的策略,因此,当消息中心目前正在下发时间差在
范围内的消息,正在回 读下发时间差在[T,2T]范围内的消息,所以当消息的下发时间与当前时刻的时间差t<2T 时,可以将该消息存储在调度区中即可,不用再存储到文件中,以提高存储效率。但是调度 区中存储并不稳定,容易造成消息丢失。为了进一步保证消息的安全性,在将下发时间与当 前时刻的时间差t < 2T的消息存储在调度区的同时,复制一份临时存储在N文件中任意一 个文件中进行备份。当该消息下发失败,消息中心为该消息重新分配下发时间之后,再按照 上述实施例的规则重新将该消息进行存储。但是存储之前需要将临时存储的消息删除,以 节省存储设备上不必要的冗余。上述过程对消息进行了有效地存储。下面继续介绍对文件中的消息进行回读和处理。其中,步骤102按照文件的读取顺序对文件中存储的消息进行批量回读具体可以 包括每当指针随时间片切换到下一个文件时,回读该指针所指向的文件中存储的所有消 息,或者回读改指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一 个周期时长TXN以内的消息。具体的,由于在存储时,可以对下发时间超周期的消息也进 行存储,因此,一个文件中可能存储有本周期的一个时间片内的消息,也可以存储有下一周 期或者后续其它周期内的一个时间片内的消息(即不在本周期内下发的消息)。因此,每当 指针随时间片切换到下一个文件时,可以仅回读指针所指向的文件中存储的下发时间与当 前正在回读的时刻的时间差在一个周期时长TXN以内的消息,以便于直接将回读的消息 按照各自下发时间进行调度下发。当然,也可以回读指针所指向的文件中的所有消息,在后 续处理回读消息时,将回读的该文件中存储的下发时间与当前正在回读的时刻的时间差在 一个周期时长TXN以内的消息按照各自下发时间进行调度下发,并将其他剩余的消息重 新存储到当前指针指向的文件中,以便到其所属周期再进行回读下发。
若步骤102中仅回读指针所指向的文件中存储的下发时间与当前正在回读的时 刻的时间差在一个周期时长TXN以内的消息,则步骤103中,处理回读的消息具体包括将 回读的消息进行调度下发。若步骤102中回读了指针所指向的文件中的所有消息,则步骤103中,处理回读的 消息具体包括将下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的 消息进行调度下发,并将剩余的消息重新存储到所述指针指向的文件中。需要说明的是,在消息回读的过程中,为了保证所有回读的消息都能够按照下发 时间准确下发,可以提前将消息回读至调度区中。通常可以提前一个时间片或者两个时间 片或者多个时间片将消息回读至调度区中。根据回读策略的不同,回读的下发时间与当前 正在回读的时刻的时间差在一个周期时长TXN以内的消息所在的时间片不同。比如,当提 前一个时间片回读消息时,回读的消息的下发时间与当前正在回读的时刻的时间差所在的 时间片为[T,2T)。当提前两个时间片回读消息时,回读的消息的下发时间与当前正在回读 的时刻的时间差所在的时间片为[2Τ,3Τ)。如,在图3所示实施例的基础上,回读指针所指向的文件中存储的下发时间与当 前正在回读的时刻的时间差在一个周期时长TXN以内的消息,具体实现可以为回读指针 所指向的文件中存储的下发时间与当前时刻的时间差在[Τ,2Τ)内的消息,[Τ,2Τ)表示大 于等于T小于2Τ。需要说明的是,此步骤中的当前时刻是指回读消息时的时刻。具体地,这里是以提前一个时间片回读文件中的消息。对于提前两个时间片或者 多个时间片的情况与上述实施例类似,详细在此不再赘述。为了不影响消息中心的存储和读取性能,读取某一个文件时,可以将该文件拿出 以便于读取该文件中的消息,同时在该文件的原来位置放置一个新的文件来替换该文件, 以存储消息。由于需要存储的消息包括下发失败需要重发的消息,而下发失败的原因可能包括 被叫关机、不在服务器等,因此,在这些原因消除之后,该被叫的所有消息都可以成功下发。 在这种情况下,为了提高下发效率,可以优先将目的号码相同的消息存储到一个文件中,使 得在能够成功下发的时候,将属于该被叫的消息全部下发,以节省存储空间。如图4为优先 将目的号码相同的消息存储在相同文件中的实施例流程图,包括步骤1014、判断N个文件中是否存储有与消息的目的号码相同的消息;具体地,当需要等待重发的消息进行存储的时候,首先判断N个文件中是否存储 有与该要存储的消息的目的号码相同的消息。步骤1015、若有文件中存储有与消息的目的号码相同的消息,将消息存储至与消 息的目的号码相同的消息所在文件中;具体地,当N个文件中的某个文件中存储有目的号码与该待存储的消息的目的号 码相同的消息,则将该消息存储到与该消息的目的号码相同的消息所在的文件中。步骤1016、若N个文件中未存储有与消息的目的号码相同的消息,执行将下发时 间属于同一时间片的消息存储到同一文件中的操作。具体地,若N个文件中任意一个文件中均不存在目的号码与该消息的目的号码相 同的消息,则按照上述实施例的规则,将下发时间属于同一时间片的消息存储到同一文件 中,详细可参考上述图3所示实施例,在此不再赘述。需要说明的是,在图4所示实施例的基础上,在步骤102中,在回读指针所指向的文件中存储的下发时间与当前正在回读的时 刻的时间差在一个周期时长TXN以内的消息时,还包括回读与下发时间与当前正在回读 的时刻的时间差在一个周期时长TXN以内的消息具有相同目的号码的消息。相应的,在处 理回读消息时,还包括将与下发时间与当前正在回读的时刻的时间差在一个周期时长TXN 以内的消息具有相同目的号码的消息进行下发。需要说明的是,这里的当前时刻同样是指 回读时的时刻。如果回读的是指针所指向的文件中的所有消息,此时对应的处理回读的消 息具体可以为将下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的 消息和与下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的消息具有 相同目的号码的消息进行下发,并将剩余的消息重新存储到指针指向的文件中。本实施例的消息处理方法,能够有规则的将消息存储在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通过公式 j=|_t/T」-l-KxN计算得到;其中,K为对(t-2T)/(NXT)向下取整的整数,|_t/T」表示对t/
T向下取整。位置确定单元111具体还可以根据指针指向的当前文件后的第j个文件用于 存储时间差t在(KXNXT+(j+l) XT) ^ t < (ΚΧΝΧΤ+α+2) XT)范围内的消息,确定存 放该消息的应该存储的文件位置;其中1彡j彡N,j为正整数;K为对(t-2T)/(NXT)向下 取整的整数;具体地K为0或者正整数。T为预先设置的时间片长度。本实施例是以回读模块12按照提前一个时间片对文件中的消息进行回读为例。 实际应用中回读模块12可以提前两个时间片或者多个时间片进行消息回读。例如,当提前 两个时间片回读消息时,位置确定单元111用于确定放消息的文件的位置为当前正在回读 的文件后的第j个文件,j通过公式j=|_t/T」-2-KXN计算得到。当提前两个时间片时,位 置确定单元ill具体还可以根据指针指向的当前文件后的第j个文件用于存储时间差t在 (KXNXT+(j+2)XT)(KXNXT+(j+3)XT)范围内的消息,确定存放该消息的应该存 储的文件的位置;对于提前多个时间片回读消息的情况类似,可以对公式作以简单更改,以 确定消息应该存储的文件的位置。详细可以参考上述相关方法实施例的记载,在此不再赘 述。本实施例的第一存储处理模块11通过各模块实现消息处理的过程,与上述相应 方法实施例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。本实施例的第一存储处理模块11,通过各模块实现确定消息的下发时间与当前时 刻的时间差t ;并根据时间差t、时间片长度T以及当前正在回读的文件位置确定存放消息 的文件位置,并对文件进行存储,本实施例的技术方案,能够有效地提高消息的存储效率, 从而能够保证后续读取消息的效率。需要说明的是,上述实施例中,回读模块12按照文件的读取顺序对文件中存储的 消息进行批量回读时,其中文件的读取顺序由预先设置的指向文件的指针的运动轨迹确 定;指针的运动轨迹为依次指向每一个文件,并在指向到第N个文件后,重新指向第1个 文件,形成环形运动轨迹,其中,指针在每到达一个时间片时,切换到下一个文件;指针每运 动一圈为一个周期,所述周期的时间长度为NXT。
需要说明的是,上述实施例中,回读模块12具体用于每当指针随时间片切换到下 一个文件时,回读指针所指向的文件中存储的所有消息,或者回读指针所指向的文件中存 储的下发时间与当前时刻的时间差在一个周期时长TXN以内的消息。这里的当前时刻为 当前正在回读消息的时刻。当回读的消息为指针所指向的文件中存储的下发时间与当前正 在回读的时刻的时间差在一个周期时长TXN以内的消息时,处理模块13,具体用于将回读 的消息进行调度下发。回读模块12的具体处理可以参考上述相关方法实施例的记载,在此 不再赘述。图7为本发明另一实施例提供的消息处理设备的结构示意图。如图7所示,在上 述图5所示实施例的基础上,本实施例的消息处理设备501中具体还可以包括判断模块 14和第二存储处理模块15。本实施例的判断模块14用于在对消息进行存储时,判断预先设置的N个文件中是 否存储有与消息的目的号码相同的消息;若有,则触发第二存储处理模块15 ;否则,触发第 一存储处理模块11。第二存储处理模块15与判断模块14连接。第二存储处理模块15用 于在判断模块14判断N个文件中存储有与消息的目的号码相同的消息时,将消息存储至与 消息的目的号码相同的消息所在文件中。本实施例中的第一存储处理模块11具体可以采 用上述图6所示实施例的结构。本实施例的消息处理设备通过各模块实现消息处理的过程,与上述相应方法实施 例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。本实施例的消息处理设备,通过各单元能够有效地避免消息发送的目的号码相同 的消息未一起存储,使得在能够成功下发的时候,将属于该被叫的消息全部下发,以节省存 储空间,有效地提高消息的存储性能。需要说明的是,本实施例中的回读模块12在回读指针所指向的文件中存储的下 发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的消息时,回读与下发 时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的消息具有相同目的号码 的消息。另外,如果本实施例中回读模块12回读的是指针所指向的文件中存储的所有消 息,此时处理模块13具体用于将下发时间与当前正在回读的时刻的时间差在一个周期时 长TXN以内的消息、与下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以 内的消息具有相同目的号码的消息按照各消息对应的下发时间一一进行下发,并将剩余的 消息通过第一存储处理模块11重新存储到指针指向的文件中。对于回读模块12提前两个 时间片或者多个时间片回读消息的情况,详细可以参考上述相关方法实施例的记载,在此 不再赘述。上述实施例的消息处理设备通过各模块实现消息处理的过程,与上述相应方法实 施例的实现机制相同,详细可参考上述相关方法实施例的描述,在此不再赘述。需要说明的是,上述消息处理设备可以是计算机,消息处理设备中的各模块可以 在处理器中运行。上述实施例的消息处理设备,通过上述各模块,能够有效地对各文件中的消息进 行回读和处理,在保证消息存储性能的基础上,有效地提高消息的读取性能。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到至少两个网络单元上。可以根据实际的需要选 择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创 造性的劳动的情况下,即可以理解并实施。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储 介质可以包括ROM、RAM、磁盘或光盘等。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
1.一种消息处理方法,其特征在于,包括预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的 整数,T为大于0的任意时间长度;在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消 息存储到同一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;处理回读的消息。
2.根据权利要求1所述的消息处理方法,其特征在于,将下发时间属于同一时间片的 消息存储到同一文件中包括确定所述消息的下发时间与当前时刻的时间差t ;根据所述时间差t、时间片长度T以及当前正在回读的文件位置确定存放所述消息的 文件的位置;将所述消息存储至所述位置对应的文件中。
3.根据权利要求2所述的消息处理方法,其特征在于,所述根据所述时间差t、时间片 长度T以及当前正在回读的文件位置确定存放所述消息的文件的位置,具体包括确定存放所述消息的文件的位置为当前正在回读的文件后的第j个文件,所述j通过 公式j =L17tJ-1" K χ N计算得到;其中,K为对(t-2T)/(NXT)向下取整的整数,|_t/T」表 示对t/T向下取整。
4.根据权利要求2所述的消息处理方法,其特征在于,确定所述消息的下发时间与当 前时刻的时间差t之后,还包括判断所述消息的下发时间与当前时刻的时间差t否大于2T ;若大于,执行所述根据所述时间差t、时间片长度T以及当前正在回读的文件位置确定 存放所述消息的文件的位置;否则将所述消息直接存储在调度区中。
5.根据权利要求1-4任意一项所述的消息处理方法,其特征在于,所述文件的读取顺 序由预先设置的指向文件的指针的运动轨迹确定;所述指针的运动轨迹为依次指向每一 个文件,并在指向到第N个文件后,重新指向第1个文件,形成环形运动轨迹,其中,所述指 针在每到达一个时间片T时,切换到下一个文件;所述指针每运动一圈为一个周期,所述周 期的时间长度为NXT。
6.根据权利要求5所述的消息处理方法,其特征在于,所述按照文件的读取顺序对文 件中存储的消息进行批量回读,具体包括每当指针随时间片切换到下一个文件时,回读所述指针所指向的文件中存储的所有消 息,或者回读所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在 一个周期时长TXN以内的消息。
7.根据权利要求6所述的消息处理方法,其特征在于,当回读的消息为所述指针所指 向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的 消息时,所述处理回读的消息包括将回读的消息进行调度下发。
8.根据权利要求6所述的消息处理方法,其特征在于,所述方法还包括在对消息进行存储时,判断预先设置的N个文件中是否存储有与所述消息的目的号码 相同的消息;若有,则将所述消息存储至与所述消息的目的号码相同的消息所在文件中;否则,执行 所述将下发时间属于同一时间片的消息存储到同一文件中的操作。
9.根据权利要求8所述的消息处理方法,其特征在于,在回读所述指针所指向的文件 中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的消息时, 还包括回读与所述下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内 的消息具有相同目的号码的消息。
10.根据权利要求8所述的消息处理方法,其特征在于,当回读的消息为所述指针所指 向的文件中存储的所有消息时,所述处理回读的消息包括将所述下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的消息或 者与所述下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内的消息具有 相同目的号码的消息进行调度下发,并将剩余的消息重新存储到所述指针指向的文件中。
11.一种消息处理设备,其特征在于,包括设置模块,用于预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其 中,N为大于1的整数,T为大于0的任意时间长度;第一存储处理模块,用于在下发消息的过程中,如果需要对消息进行存储,则将下发时 间属于同一时间片的消息存储到同一文件中;回读模块,用于当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进 行批量回读;处理模块,用于处理回读的消息。
12.根据权利要求11所述的消息处理设备,其特征在于,所述第一存储处理模块包括时间确定单元,用于确定所述消息的下发时间与当前时刻的时间差t ;位置确定单元,用于根据所述时间差t、时间片长度T以及当前正在回读的文件位置确 定存放所述消息的文件的位置;第一存储处理单元,用于将所述消息存储至所述位置对应的文件中。
13.根据权利要求12所述的消息处理设备,其特征在于,所述第一存储处理模块还包括判断单元,用于判断所述消息的下发时间与当前时刻的时间差t是否大于2T ;若大于, 则触发所述位置确定单元;否则,触发第二存储处理单元;所述第二存储处理单元,用于将所述消息直接存储在调度区中。
14.根据权利要求13所述的消息处理设备,其特征在于,所述位置确定单元,具体用于 确定存放所述消息的文件的位置为当前正在回读的文件后的第j个文件,所述j通过公式 j =[t/Tj-l- K x N计算得到;其中,K为对(t-2T)/(NXΤ)向下取整的整数,|_t/T」表示对 t/T向下取整。
15.根据权利要求11-14任意一项所述的消息处理设备,其特征在于,所述文件的读取 顺序由预先设置的指向文件的指针的运动轨迹确定;所述指针的运动轨迹为依次指向每 一个文件,并在指向到第N个文件后,重新指向第1个文件,形成环形运动轨迹,其中,所述 指针在每到达一个时间片T时,切换到下一个文件;所述指针每运动一圈为一个周期,所述 周期的时间长度为NXT。
16.根据权利要求15所述的消息处理设备,其特征在于,所述回读模块,具体用于每当指针随时间片切换到下一个文件时,回读所述指针所指向的文件中存储的所有消息,或者 回读所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周 期时长TXN以内的消息。
17.根据权利要求16所述的消息处理设备,其特征在于,当回读的消息为所述指针所 指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时长TXN以内 的消息时,所述处理模块,具体用于将回读的消息进行调度下发。
18.根据权利要求16所述的消息处理设备,其特征在于,所述消息处理设备还包括判 断模块和第二存储处理模块所述判断模块,用于在对消息进行存储时,判断预先设置的N个文件中是否存储有与 所述消息的目的号码相同的消息,若有,则触发第二存储处理模块;否则,触发第一存储处 理模块;所述第二存储处理模块,用于将所述消息存储至与所述消息的目的号码相同的消息所 在文件中。
19.根据权利要求18所述的消息处理设备,其特征在于,所述回读模块,还用于在回读 所述指针所指向的文件中存储的下发时间与当前正在回读的时刻的时间差在一个周期时 长TXN以内的消息时,回读与所述下发时间与当前正在回读的时刻的时间差在一个周期 时长T X N以内的消息具有相同目的号码的消息。
20.根据权利要求19所述的消息处理设备,其特征在于,当回读的消息为所述指针所 指向的文件中存储的所有消息时,所述处理模块,具体用于将所述下发时间与当前正在回 读的时刻的时间差在一个周期时长TXN以内的消息或者与所述下发时间与当前正在回读 的时刻的时间差在一个周期时长TXN以内的消息具有相同目的号码的消息进行调度下 发,并将剩余的消息通过所述第一存储处理模块重新存储到所述指针指向的文件中。
全文摘要
本发明提供一种消息处理方法和设备。其中消息处理方法,包括预先建立N个用于存储消息的文件,并设置时间长度为T的时间片,其中,N为大于1的整数,T为大于0的任意时间长度;在下发消息的过程中,如果需要对消息进行存储,则将下发时间属于同一时间片的消息存储到同一文件中;当需要进行消息回读时,按照文件的读取顺序对文件中存储的消息进行批量回读;处理回读的消息。通过采用本实施例的技术方案,在存储的过程中不用创建索引,在回读的过程中也不用针对每条消息进行查询,实现了对消息的连续读和连续写,有效地提高了消息写操作和读操作的性能。能够同时有效地提高消息的写操作和读操作的性能。
文档编号G06F17/30GK102143445SQ201010296680
公开日2011年8月3日 申请日期2010年9月28日 优先权日2010年9月28日
发明者李昕杰, 赵玉锡 申请人:华为软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1