消息传输系统、方法和装置与流程

文档序号:13909933阅读:231来源:国知局
消息传输系统、方法和装置与流程

本申请涉及计算机技术,尤其涉及一种消息传输系统、方法和装置。



背景技术:

在实时计算系统中,一个进程单元可以包含一个或者多个线程单元,进程单元之间、进程单元内的线程单元之间会涉及到大量的消息传输。

现有技术中,为了提高消息传输的性能,通常将同一个进程单元内的线程单元产生的消息发送到该进程单元的发送队列,该进程单元根据进程封装包的固定的尺度(尺度指进程封装包中包含的消息的数量)对发送队列中的消息进行封装(batch)处理,通过网络通道将封装处理后生成的进程封装包从一个进程单元传输到另一个进程单元,接收到进程封装包的进程单元再进行相应的消息解封装处理,将解封装处理后得到的消息发送到对应的线程单元。例如:进程单元a包含线程单元a1、线程单元a2和线程单元a3,进程单元b包含线程单元b1、线程单元b2和线程单元b3,进程单元a的线程单元和进程单元b的线程单元之间存在消息传输,则将线程单元a1、线程单元a2和线程单元a3产生的消息发送到进程单元a的发送队列,根据进程封装包的固定的尺度对进程单元a的发送队列中的消息进行封装处理,将封装处理后生成的封装包通过进程单元a和进程单元b之间的网络通道发送给进程单元b,进程单元b接收到进程封装包再进行相应的消息解封装处理,将解封装处理后得到的消息发送到对应的线程单元。

然而,采用现有技术的方法,进行消息传输时,网络资源的利用率不高。



技术实现要素:

本申请提供一种消息传输系统、方法和装置,以解决现有技术中网络资源的利用率不高的问题。

一个方面,本申请提供一种消息传输系统,包括:

源进程单元和目的进程单元,所述源进程单元包含至少一个线程单元,所述源进程单元和所述目的进程单元连接;

其中,所述源进程单元,用于根据第一历史时间段所述至少一个线程单元向所述源进程单元的发送队列发送消息单元的频率,确定所述源进程单元的第一当前时间段对应的进程封装包的尺度,所述消息单元中包含至少一个消息;

所述源进程单元,还用于根据所述第一当前时间段对应的进程封装包的尺度,对所述源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;

所述源进程单元,还用于向所述目的进程单元发送所述进程封装包。

作为一种可实现方式,所述源进程单元具体用于若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于所述第一当前时间段对应的进程封装包的尺度,则按照所述第一当前时间段对应的进程封装包的尺度,对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包,其中,所述第一进程封装包中包含的消息单元的数量与所述第一当前时间段对应的进程封装包的尺度相同。

作为一种可实现方式,所述源进程单元还具体用于若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于所述第一当前时间段对应的进程封装包的尺度,则确定所述目的进程单元为同一进程单元的消息单元中最早进入所述发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若所述第一等待时间大于等于所述第一预设定时时间,则对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包,所述第二进程封装包中包含所述发送队列中目的进程单元为同一进程单元的所有消息单元。

作为一种可实现方式,所述源进程单元具体用于获取所述第一历史时间段内,通过所述第一进程封装包和所述第二进程封装包发送的消息单元的第一数量;以及,获取所述第一历史时间段内,通过所述第二进程封装包发送的消息单元的第二数量;根据所述第二数量和所述第一数量的比值以及所述第一历史时间段对应的进程封装包的尺度,确定所述第一当前时间段对应的进程封装包的尺度。

另一方面,本申请提供一种消息传输方法,包括:

根据第一历史时间段源进程单元的线程单元向所述源进程单元的发送队列发送消息单元的频率,确定所述源进程单元的第一当前时间段对应的进程封装包的尺度,所述消息单元中包含至少一个消息;

根据所述第一当前时间段对应的进程封装包的尺度,对所述源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;

发送所述进程封装包。

作为一种可实现方式,所述进程封装包包括:第一进程封装包;

所述根据所述第一当前时间段对应的进程封装包的尺度,对所述源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包,包括:

若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于所述第一当前时间段对应的进程封装包的尺度,则按照所述第一当前时间段对应的进程封装包的尺度,对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包,其中,所述第一进程封装包中包含的消息单元的数量与所述第一当前时间段对应的进程封装包的尺度相同。

作为一种可实现方式,所述进程封装包还包括:第二进程封装包;

所述方法还包括:

若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于所述第一当前时间段对应的进程封装包的尺度,则确定所述目的进程单元为同一进程单元的消息单元中最早进入所述发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若所述第一等待时间大于等于所述第一预设定时时间,则对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包,所述第二进程封装包中包含所述发送队列中目的进程单元为同一进程单元的所有消息单元。

作为一种可实现方式,所述根据第一历史时间段源进程单元的线程单元向所述源进程单元的发送队列发送消息单元的频率,确定所述源进程单元的第一当前时间段对应的进程封装包的尺度,包括:

获取所述第一历史时间段内,通过所述第一进程封装包和所述第二进程封装包发送的消息单元的第一数量;以及,

获取所述第一历史时间段内,通过所述第二进程封装包发送的消息单元的第二数量;

根据所述第二数量和所述第一数量的比值以及所述第一历史时间段对应的进程封装包的尺度,确定所述第一当前时间段对应的进程封装包的尺度。

作为一种可实现方式,所述根据所述第二数量和所述第一数量的比值以及所述第一历史时间段对应的进程封装包的尺度,确定所述第一当前时间段对应的进程封装包的尺度,包括:

若所述比值大于第一预设阈值,则确定所述第一当前时间段对应的进程封装包的尺度为所述第一历史时间段对应的进程封装包的尺度与第一系数的乘积,其中,所述第一系数小于1。

作为一种可实现方式,还包括:

若所述比值小于等于所述第一预设阈值,则确定所述第一当前时间段对应的进程封装包的尺度为所述第一历史时间段对应的进程封装包的尺度与第二系数的乘积,其中,所述第二系数大于1。

作为一种可实现方式,还包括:

确定所述第一数量与第三数量的比值为所述第二系数,其中,所述第三数量为所述第一历史时间段的前一时间段通过所述第一进程封装包和所述第二进程封装包发送的消息单元的数量。

作为一种可实现方式,所述第一预设阈值为0.5。

再一方面,本申请提供一种消息传输装置,包括:

处理模块,用于根据第一历史时间段源进程单元的线程单元向所述源进程单元的发送队列发送消息单元的频率,确定所述源进程单元的第一当前时间段对应的进程封装包的尺度,所述消息单元中包含至少一个消息;

封装模块,用于根据所述第一当前时间段对应的进程封装包的尺度,对所述源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;

发送模块,用于发送所述进程封装包。

作为一种可实现方式,所述进程封装包包括:第一进程封装包;

所述封装模块具体用于若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于所述第一当前时间段对应的进程封装包的尺度,则按照所述第一当前时间段对应的进程封装包的尺度,对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包,其中,所述第一进程封装包中包含的消息单元的数量与所述第一当前时间段对应的进程封装包的尺度相同。

作为一种可实现方式,所述进程封装包还包括:第二进程封装包;

所述封装模块还具体用于若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于所述第一当前时间段对应的进程封装包的尺度,则确定所述目的进程单元为同一进程单元的消息单元中最早进入所述发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若所述第一等待时间大于等于所述第一预设定时时间,则对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包,所述第二进程封装包中包含所述发送队列中目的进程单元为同一进程单元的所有消息单元。

作为一种可实现方式,所述处理模块具体用于获取所述第一历史时间段内,通过所述第一进程封装包和所述第二进程封装包发送的消息单元的第一数量;以及,获取所述第一历史时间段内,通过所述第二进程封装包发送的消息单元的第二数量;根据所述第二数量和所述第一数量的比值以及所述第一历史时间段对应的进程封装包的尺度,确定所述第一当前时间段对应的进程封装包的尺度。

作为一种可实现方式,所述处理模块具体用于若所述比值大于第一预设阈值,则确定所述第一当前时间段对应的进程封装包的尺度为所述第一历史时间段对应的进程封装包的尺度与第一系数的乘积,其中,所述第一系数小于1。

作为一种可实现方式,所述处理模块还具体用于若所述比值小于等于所述第一预设阈值,则确定所述第一当前时间段对应的进程封装包的尺度为所述第一历史时间段对应的进程封装包的尺度与第二系数的乘积,其中,所述第二系数大于1。

作为一种可实现方式,所述处理模块还用于确定所述第一数量与第三数量的比值为所述第二系数,其中,所述第三数量为所述第一历史时间段的前一时间段通过所述第一进程封装包和所述第二进程封装包发送的消息单元的数量。

作为一种可实现方式,所述第一预设阈值为0.5。

又一方面,本申请提供一种消息传输装置,包括:

处理器,用于根据第一历史时间段源进程单元的线程单元向所述源进程单元的发送队列发送消息单元的频率,确定所述源进程单元的第一当前时间段对应的进程封装包的尺度,所述消息单元中包含至少一个消息;

所述处理器还用于根据所述第一当前时间段对应的进程封装包的尺度,对所述源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;

发送器,所述发送器耦合至所述处理器,所述发送器用于发送所述进程封装包。

作为一种可实现方式,所述进程封装包包括:第一进程封装包;

所述处理器具体用于若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于所述第一当前时间段对应的进程封装包的尺度,则按照所述第一当前时间段对应的进程封装包的尺度,对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包,其中,所述第一进程封装包中包含的消息单元的数量与所述第一当前时间段对应的进程封装包的尺度相同。

作为一种可实现方式,所述进程封装包还包括:第二进程封装包;

所述处理器还具体用于若所述源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于所述第一当前时间段对应的进程封装包的尺度,则确定所述目的进程单元为同一进程单元的消息单元中最早进入所述发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若所述第一等待时间大于等于所述第一预设定时时间,则对所述目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包,所述第二进程封装包中包含所述发送队列中目的进程单元为同一进程单元的所有消息单元。

作为一种可实现方式,所述处理器具体用于获取所述第一历史时间段内,通过所述第一进程封装包和所述第二进程封装包发送的消息单元的第一数量;以及,获取所述第一历史时间段内,通过所述第二进程封装包发送的消息单元的第二数量;根据所述第二数量和所述第一数量的比值以及所述第一历史时间段对应的进程封装包的尺度,确定所述第一当前时间段对应的进程封装包的尺度。

作为一种可实现方式,所述处理器具体用于若所述比值大于第一预设阈值,则确定所述第一当前时间段对应的进程封装包的尺度为所述第一历史时间段对应的进程封装包的尺度与第一系数的乘积,其中,所述第一系数小于1。

作为一种可实现方式,所述处理器还具体用于若所述比值小于等于所述第一预设阈值,则确定所述第一当前时间段对应的进程封装包的尺度为所述第一历史时间段对应的进程封装包的尺度与第二系数的乘积,其中,所述第二系数大于1。

作为一种可实现方式,所述处理器还用于确定所述第一数量与第三数量的比值为所述第二系数,其中,所述第三数量为所述第一历史时间段的前一时间段通过所述第一进程封装包和所述第二进程封装包发送的消息单元的数量。

作为一种可实现方式,所述第一预设阈值为0.5。

又一方面,本申请提供一种消息传输系统,包括:

源进程单元,所述源进程单元包括至少一个线程单元;

所述线程单元,用于对所述线程单元产生的消息进行封装处理,生成消息单元,所述消息单元中包含至少两个消息;

所述线程单元,还用于向所述源进程单元的发送队列发送所述消息单元。

作为一种可实现方式,所述线程单元具体用于根据第二当前时间段对应的线程封装包的尺度,对所述线程单元产生的消息进行封装处理,生成所述消息单元;

作为一种可实现方式,所述线程单元还用于根据第二历史时间段内所述线程单元产生的消息的数量,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述线程单元具体用于若所述线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于所述第二当前时间段对应的线程封装包的尺度,则按照所述线程封装包的尺度,对所述目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,所述第一消息单元中包含的消息的数量与所述线程封装包的尺度相同。

作为一种可实现方式,所述线程单元还具体用于若所述线程单元产生的目的线程单元为同一线程单元的消息的数量小于所述第二当前时间段对应的线程封装包的尺度,则确定所述目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若所述第二等待时间大于等于所述第二预设定时时间,则对所述目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,所述第二消息单元中包含所述线程单元产生的目的线程单元为同一线程单元的所有消息。

作为一种可实现方式,所述线程单元具体用于获取所述第二历史时间段内,通过所述第一消息单元和所述第二消息单元发送的消息的第三数量;以及,获取所述第二历史时间段内,通过所述第二消息单元发送的消息的第四数量;根据所述第四数量和所述第三数量的比值以及所述第二历史时间段对应的线程封装包的尺度,确定所述第二当前时间段对应的线程封装包的尺度。

又一方面,本申请提供一种消息传输方法,包括:

对线程单元产生的消息进行封装处理,生成消息单元,所述消息单元包含至少两个消息;

向所述源进程单元的发送队列发送所述消息单元。

作为一种可实现方式,所述对线程单元产生的消息进行封装处理包括:

根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成所述消息单元。

作为一种可实现方式,所述根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成所述消息单元之前,还包括:

根据第二历史时间段内所述线程单元产生的消息的数量,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述消息单元包括第一消息单元;

所述根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成所述消息单元,包括:

若所述线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于所述第二当前时间段对应的线程封装包的尺度,则按照所述线程封装包的尺度,对所述目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,所述第一消息单元中包含的消息的数量与所述线程封装包的尺度相同。

作为一种可实现方式,所述消息单元还包括第二消息单元;

所述方法还包括:

若所述线程单元产生的目的线程单元为同一线程单元的消息的数量小于所述第二当前时间段对应的线程封装包的尺度,则确定所述目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若所述第二等待时间大于等于所述第二预设定时时间,则对所述目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,所述第二消息单元中包含所述线程单元产生的目的线程单元为同一线程单元的所有消息。

作为一种可实现方式,所述根据第二历史时间段内所述线程单元产生的消息的数量,确定所述第二当前时间段对应的线程封装包的尺度,包括:

获取所述第二历史时间段内,通过所述第一消息单元和所述第二消息单元发送的消息的第三数量;以及,

获取所述第二历史时间段内,通过所述第二消息单元发送的消息的第四数量;

根据所述第四数量和所述第三数量的比值以及所述第二历史时间段对应的线程封装包的尺度,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述根据所述第四数量和所述第三数量的比值以及所述第二历史时间段对应的线程封装包的尺度,确定所述第二当前时间段对应的线程封装包的尺度,包括:

若所述比值大于第二预设阈值,则确定所述第二当前时间段对应的线程封装包的尺度为所述第二历史时间段对应的线程封装包的尺度与第三系数的乘积,其中,所述第三系数小于1。

作为一种可实现方式,还包括:

若所述比值小于等于所述第二预设阈值,则确定所述第二当前时间段对应的线程封装包的尺度为所述第二历史时间段对应的线程封装包的尺度与第四系数的乘积,其中,所述第四系数大于1。

作为一种可实现方式,所述第二预设阈值为0.5。

作为一种可实现方式,所述根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成所述消息单元之前,还包括:

确定所述线程单元产生的消息的目的线程单元不属于所述源进程单元。

又一方面,本申请提供一种消息传输装置,包括:

封装模块,用于对线程单元产生的消息进行封装处理,生成消息单元,所述消息单元包含至少两个消息;

发送模块,用于向所述源进程单元的发送队列发送所述消息单元。

作为一种可实现方式,所述封装模块具体用于根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成所述消息单元。

作为一种可实现方式,还包括:

处理模块,用于根据第二历史时间段内所述线程单元产生的消息的数量,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述消息单元包括第一消息单元;

所述封装模块具体用于若所述线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于所述第二当前时间段对应的线程封装包的尺度,则按照所述线程封装包的尺度,对所述目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,所述第一消息单元中包含的消息的数量与所述线程封装包的尺度相同。

作为一种可实现方式,所述消息单元还包括第二消息单元;

所述封装模块还具体用于若所述线程单元产生的目的线程单元为同一线程单元的消息的数量小于所述第二当前时间段对应的线程封装包的尺度,则确定所述目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若所述第二等待时间大于等于所述第二预设定时时间,则对所述目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,所述第二消息单元中包含所述线程单元产生的目的线程单元为同一线程单元的所有消息。

作为一种可实现方式,所述处理模块具体用于获取所述第二历史时间段内,通过所述第一消息单元和所述第二消息单元发送的消息的第三数量;以及,获取所述第二历史时间段内,通过所述第二消息单元发送的消息的第四数量;根据所述第四数量和所述第三数量的比值以及所述第二历史时间段对应的线程封装包的尺度,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述处理模块具体用于若所述比值大于第二预设阈值,则确定所述第二当前时间段对应的线程封装包的尺度为所述第二历史时间段对应的线程封装包的尺度与第三系数的乘积,其中,所述第三系数小于1。

作为一种可实现方式,所述处理模块还具体用于若所述比值小于等于所述第二预设阈值,则确定所述第二当前时间段对应的线程封装包的尺度为所述第二历史时间段对应的线程封装包的尺度与第四系数的乘积,其中,所述第四系数大于1。

作为一种可实现方式,所述第二预设阈值为0.5。

作为一种可实现方式,所述处理模块还具体用于确定所述线程单元产生的消息的目的线程单元不属于所述源进程单元。

又一方面,本申请提供一种消息传输装置,包括:

处理器,用于对线程单元产生的消息进行封装处理,生成消息单元,所述消息单元包含至少两个消息;

发送器,所述发送器耦合至所述处理器,所述发送器用于向所述源进程单元的发送队列发送所述消息单元。

作为一种可实现方式,所述处理器具体用于根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成所述消息单元。

作为一种可实现方式,所述处理器还用于根据第二历史时间段内所述线程单元产生的消息的数量,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述消息单元包括第一消息单元;

所述处理器具体用于若所述线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于所述第二当前时间段对应的线程封装包的尺度,则按照所述线程封装包的尺度,对所述目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,所述第一消息单元中包含的消息的数量与所述线程封装包的尺度相同。

作为一种可实现方式,所述消息单元还包括第二消息单元;

所述处理器还具体用于若所述线程单元产生的目的线程单元为同一线程单元的消息的数量小于所述第二当前时间段对应的线程封装包的尺度,则确定所述目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若所述第二等待时间大于等于所述第二预设定时时间,则对所述目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,所述第二消息单元中包含所述线程单元产生的目的线程单元为同一线程单元的所有消息。

作为一种可实现方式,所述处理器具体用于获取所述第二历史时间段内,通过所述第一消息单元和所述第二消息单元发送的消息的第三数量;以及,获取所述第二历史时间段内,通过所述第二消息单元发送的消息的第四数量;根据所述第四数量和所述第三数量的比值以及所述第二历史时间段对应的线程封装包的尺度,确定所述第二当前时间段对应的线程封装包的尺度。

作为一种可实现方式,所述处理器具体用于若所述比值大于第二预设阈值,则确定所述第二当前时间段对应的线程封装包的尺度为所述第二历史时间段对应的线程封装包的尺度与第三系数的乘积,其中,所述第三系数小于1。

作为一种可实现方式,所述处理器还具体用于若所述比值小于等于所述第二预设阈值,则确定所述第二当前时间段对应的线程封装包的尺度为所述第二历史时间段对应的线程封装包的尺度与第四系数的乘积,其中,所述第四系数大于1。

作为一种可实现方式,所述第二预设阈值为0.5。

作为一种可实现方式,所述处理器还具体用于确定所述线程单元产生的消息的目的线程单元不属于所述源进程单元。

又一方面,本申请提供一种消息传输系统,包括:

进程单元,所述进程单元包括源线程单元和目的线程单元;

所述源线程单元,用于确定所述源线程单元产生的消息的目的线程单元是否属于同一进程单元;

所述源线程单元,还用于若所述消息的目的线程单元属于同一进程单元,则向所述目的线程单元的接收队列发送所述消息。

又一方面,本申请提供一种消息传输方法,包括:

确定产生的消息的目的线程单元是否与源线程单元属于同一进程单元;

若所述消息的目的线程单元与源线程单元属于同一进程单元,则向所述目的线程单元的接收队列发送所述消息。

又一方面,本申请提供一种消息传输装置,包括:

处理模块,用于确定产生的消息的目的线程单元是否与源线程单元属于同一进程单元;

发送模块,用于若所述消息的目的线程单元与源线程单元属于同一进程单元,则向所述目的线程单元的接收队列发送所述消息。

又一方面,本申请提供一种消息传输装置,包括:

处理器和发送器,所述处理器用于确定产生的消息的目的线程单元是否与源线程单元属于同一进程单元;

所述发送器耦合至所述处理器,所述发送器用于若所述消息的目的线程单元与源线程单元属于同一进程单元,则向所述目的线程单元的接收队列发送所述消息。

本申请提供的消息传输系统、方法和装置,通过根据第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度,根据第一当前时间段对应的进程封装包的尺度,对源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包,发送进程封装包,实现消息传输,提高网络资源的利用率,以及提高传输效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请的一种应用场景示意图;

图2为本申请消息传输系统实施例一的结构示意图;

图3为本申请消息传输方法实施例一的流程示意图;

图4为本申请消息传输方法实施例二的流程示意图;

图5为本申请消息传输方法实施例三的流程示意图;

图6为本申请消息传输装置实施例一的结构示意图;

图7为本申请消息传输装置实施例二的结构示意图;

图8为本申请消息传输系统实施例二的结构示意图;

图9为本申请消息传输方法实施例四的流程示意图;

图10为本申请消息传输方法实施例五的流程示意图;

图11为本申请消息传输方法实施例六的流程示意图;

图12为本申请消息传输方法实施例七的流程示意图;

图13为本申请消息传输装置实施例三的结构示意图;

图14为本申请消息传输装置实施例四的结构示意图;

图15为本申请消息传输系统实施例三的结构示意图;

图16为本申请消息传输方法实施例八的流程示意图;

图17为本申请消息传输装置实施例五的结构示意图;

图18为本申请消息传输装置实施例六的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

本申请应用于不同的线程单元之间进行消息传输的场景,其中,包括同一进程单元的不同线程单元之间进行消息传输,以及不同进程单元的线程单元之间进行消息传输,图1为本申请的一种应用场景示意图,该应用场景中包含进程单元a和进程单元b,其中,进程单元a包含线程单元a1、线程单元a2和线程单元a3,进程单元b包含线程单元b1、线程单元b2和线程单元b3,各线程单元之间可以进行消息传输,例如:一种情况为:进程单元a的线程单元a1和进程单元b的线程单元b2之间进行消息传输,另一种情况为进程单元a的线程单元a1和进程单元a的线程单元a2之间进行消息传输。

本申请所描述的消息单元中可以包含一条消息或者多条消息,取决于线程单元在向源进程单元发送消息之前,是否对消息进行了封装处理,若线程单元在发送消息之前,对消息进行了封装处理,则消息单元中通常包含两条或两条以上的消息,若线程单元在发送消息之前,未对消息进行封装处理,则消息单元指一条消息。

本申请所描述的进程封装包是指进程单元进行封装处理之后产生的封装包。

为了便于描述,本申请将发送端的源进程单元进行封装处理过程中所用的参数,与源进程单元的线程单元进行封装处理过程中所用的参数通过在第一、第二进行区分。

例如:源进程单元进行封装处理过程中所用的参数包括:

第一历史时间段、第一当前时间段、第一等待时间和/或第一预预设定时时间等。

线程单元进行封装处理过程中所用的参数包括:

第二历史时间段、第二当前时间段、第二等待时间和/或第二预预设定时时间等。

本申请包括但不限于以下主要的改进点:

1、源进程单元对发送队列中消息进行封装处理时,所采用的进程封装包的尺度不是固定的,而是根据第一历史时间段内源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率确定,从而,使得进程封装包的尺度的设置更加合理,避免因进程封装包的尺度设置过大时,网络通道空闲时间长,以及避免因进程封装包的尺寸设置过小时,造成网络通道的带宽浪费,并且,进行封装处理的次数较多,造成一定的延时,因此,本申请根据历史时间段内源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率确定进程封装包的尺度更加合理,可以提高网络资源的利用率,以及提高传输效率。

2、源进程单元对发送队列中消息进行封装处理时,除了依据进程封装包的尺度进行封装处理外,还设置第一预设定时时间,若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间大于等于第一预设定时时间,则对目的进程单元为同一进程单元的消息单元进行封装处理,从而,避免因源进程单元的线程单元发送消息单元的频率不稳定时,因消息单元数量较长时间不能满足进程封装包的尺度而无法进行封装处理,导致消息发送时延较长的问题。

3、源进程单元的线程单元向源进程单元的发送队列发送消息单元前,也可以对消息进行封装处理。进行封装处理时,线程封装包的尺度可以是固定的,也可以是根据第二历史时间段内产生的消息的数量确定的,对此,本发明不做限制。

4、源进程单元的线程单元对产生的消息进行封装处理时,除了依据线程封装包的尺度进行封装处理外,还设置第二预设定时时间,当目的线程单元为同一线程单元的消息中最早产生的消息的等待时间大于等于第二预设定时时间,则对目的线程单元为同一线程单元的消息进行封装处理。

5、源进程单元的线程单元对产生的消息进行封装处理之前,确定消息的目的线程单元是否属于源进程单元,若消息的目的进程单元不属于源进程单元,则对消息进行封装处理,生成消息单元发送到源进程单元的发送队列,若消息的目的进程单元属于源进程单元,则直接发送到目的线程单元的接收队列,即,无需先将消息发送到进程单元的发送队列,再通过网络通道发送到该进程单元的接收队列,再发送到目的线程单元,从而,缩短消息发送的时延,提高消息传输效率。

下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图2为本申请消息传输系统实施例一的结构示意图,如图2所示,本实施例的系统包括元进程单元和目的进程单元,其中,源进程单元包含至少一个线程单元,源进程单元和目的进程单元连接;在图2中,源进程单元以进程a为例示出,目的进程单元以进程b示出,源进程单元包含至少一个线程单元以3个线程单元为例示出,分别为线程单元a1、线程单元a2和线程单元a3;线程b中也可以包含至少一个线程单元,以线程单元b1、线程单元b2和线程单元b3示出。

其中,源进程单元根据第一历史时间段至少一个线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度,消息单元中包含至少一个消息;并根据第一当前时间段对应的进程封装包的尺度,对源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;生成进程封装包之后向目的进程单元发送进程封装包。

在上述实施例中,源进程单元根据第一历史时间段至少一个线程单元向源进程单元的发送队列发送消息单元的频率时,具体为:若源进程单元的发送队列中目的进程单元为目的进程单元的消息单元的数量大于等于第一当前时间段对应的进程封装包的尺度,源进程单元则按照第一当前时间段对应的进程封装包的尺度,对目的进程单元为目的进程单元的消息单元进行封装处理,生成第一进程封装包,其中,第一进程封装包中包含的消息单元的数量与第一当前时间段对应的进程封装包的尺度相同。

在上述实施例中,源进程单元根据第一历史时间段至少一个线程单元向源进程单元的发送队列发送消息单元的频率时,还包括:若源进程单元的发送队列中目的进程单元为目的进程单元的消息单元的数量小于第一当前时间段对应的进程封装包的尺度,源进程单元则确定目的进程单元为目的进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若第一等待时间大于等于第一预设定时时间,则对目的进程单元为目的进程单元的消息单元进行封装处理,生成第二进程封装包,第二进程封装包中包含发送队列中目的进程单元为目的进程单元的所有消息单元。

在上述实施例中,源进程单元根据第一历史时间段至少一个线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度时,具体为:源进程单元获取第一历史时间段内,通过第一进程封装包和第二进程封装包发送的消息单元的第一数量;以及,获取第一历史时间段内,通过第二进程封装包发送的消息单元的第二数量;根据第二数量和第一数量的比值以及第一历史时间段对应的进程封装包的尺度,确定第一当前时间段对应的进程封装包的尺度。

图2所示消息传输系统实施例中源进程单元具体可用于执行图3-图5所示方法实施例的技术方案,其实现原理和技术效果,参见图3-图5所示方法实施例中的详细描述,此处不再赘述。

图3为本申请消息传输方法实施例一的流程示意图,如图2所示,本实施例由发送端执行,具体地,s301-303由发送端的源进程单元执行,本实施例的方法如下:

s301:根据第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度。

其中,消息单元中包含至少一个消息。

第一当前时间段是指要对源进程单元的发送队列中的消息单元进行封装处理;第一历史时间段是指第一当前时间段之前的时间段。

即:根据之前时间段的源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,可以更加合理的预估当前时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,因此,基于第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度,所确定的进程封装包的尺度更加合理。当第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率发送变化后,第一当前时间段对应的进程封装包的尺度也会相应的发生变化,即,第一当前时间段对应的进程封装包的尺度会随时第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率的变化而变化,从而,使得进程封装包的尺度设置更加合理。

s302:根据第一当前时间段对应的进程封装包的尺度,对源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包。

例如:第一当前时间段对应的进程封装包的尺度为3个消息单元,则获取对源进程单元的发送队列中目的进程单元为同一进程单元的3个消息单元,进行封装处理,生成进程单元包。

s303:发送进程封装包。

将进行封装包通过进程单元之间的网络通道发送到目的进程单元,以使目的进程单元进行相应地解封装处理,发送到对应的目的线程单元,完成消息传输。

本实施例,通过根据第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度,根据第一当前时间段对应的进程封装包的尺度,对源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包,发送进程封装包,实现消息传输,由于进程封装包的尺度是根据第一历史时间段内源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率确定,从而,使得进程封装包的尺度的设置更加合理,避免因进程封装包的尺度设置过大时,网络通道空闲时间长,以及避免因进程封装包的尺寸设置过小时,造成网络通道的带宽浪费,并且,进行封装处理的次数较多,造成一定的延时,因此,本申请根据历史时间段内源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率确定进程封装包的尺度更加合理,可以提高网络资源的利用率,以及提高传输效率。

图4为本申请消息传输方法实施例二的流程示意图,本实施例是在图3所示实施例的基础上,进一步地,对s302的可能的实现方式的描述,其中,可以通过两种方式触发进程单元进行封装处理,其中,第一种方式为:源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于第一当前时间段对应的进程封装包的尺度,则触发进程单元进行封装处理。第二种方式为:源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于第一当前时间段对应的进程封装包的尺度,但目的进程单元为同一进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间大于等于第一预设定时时间,则触发进程单元进行消息封装处理。为了便于描述,将通过第一种方式触发进行封装处理产生的进程封装包描述为“第一进程封装包”,将通过第二种方式触发进行封装处理产生的进程封装包描述为“第二进程封装包”,如图4所示,本实施例如下:

s401:判断源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量是否大于等于第一当前时间段对应的进程封装包的尺度。

若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于第一当前时间段对应的进程封装包的尺度,则执行s402。

若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于第一当前时间段对应的进程封装包的尺度,则执行s403。

s402:按照第一当前时间段对应的进程封装包的尺度,对目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包。

其中,第一进程封装包中包含的消息单元的数量与第一当前时间段对应的进程封装包的尺度相同。

即:通过第一种方式触发进程单元进行封装处理。

s403:确定目的进程单元为同一进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间。

若第一等待时间大于等于第一预设定时时间,则执行s404。

若第一等待时间小于第一预设定时时间,则返回执行s401。

其中,第一预设定时时间可以根据经验值进行设置。第一等待时间由专门的线程单元(描述为定时线程单元)进行监控,当第一等待时间大于等于第一预设定时时间时,该定时线程单元向源进程单元发送指示消息,触发源进程单元进行封装处理。

s404:对目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包。

其中,第二进程封装包中包含发送队列中目的进程单元为同一进程单元的所有消息单元。

即:通过第二种方式触发进行封装处理。

本实施例,通过两种方式触发进程单元进行封装处理,当源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于第一当前时间段对应的进程封装包的尺度,则触发按照第一当前时间段对应的进程封装包的尺度,对目的进程单元为同一进程单元的消息单元进行封装处理;当源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于第一当前时间段对应的进程封装包的尺度了,但目的进程单元为同一进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间大于等于第一预设定时时间,则触发进行消息封装处理。从而,避免因源进程单元的线程单元发送消息单元的频率不稳定时,因消息单元数量较长时间不能满足进程封装包的尺度而无法进行封装处理,导致消息发送时延较长的问题。

图5为本申请消息传输方法实施例三的流程示意图,本实施例是在实施例二所示实施例的基础上,对s301的一种可能的实现的方式的描述,如图5所示:

s501:获取第一历史时间段内,通过第一进程封装包和第二进程封装包发送的消息单元的第一数量。

s502:获取第一历史时间段内,通过第二进程封装包发送的消息单元的第二数量。

其中,s501和s502的执行顺序不做限制。

s503:根据第二数量和第一数量的比值以及第一历史时间段对应的进程封装包的尺度,确定第一当前时间段对应的进程封装包的尺度。

通过第二数量和第一数量的比值,可以获知第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率的变化趋势,第一预设阈值通常设置为0.5,若比值大于第一预设阈值,说明线程单元向源进程单元的发送队列发送消息单元的频率变慢,大多数的消息是通过第二种方式触发进行封装处理的,因此,要减小进程封装包的尺度。若比值大于0.5,说明线程单元向源进程单元的发送队列发送消息单元的频率变快,大多数的消息是通过第一种方式触发进行封装处理的,因此,要增大进程封装包的尺度。

当要缩小进程封装包的尺度时,要确保第一历史时间段对应的进程封装包的尺度大于1。

具体地,包括但不限于以下两种可能的实现方式:

一种可能的实现方式:

若比值大于第一预设阈值,则确定第一当前时间段对应的进程封装包的尺度为第一历史时间段对应的进程封装包的尺度与第一系数的乘积,其中,第一系数小于1。即使第一当前时间段对应的进程封装包的尺度小于第一历史时间段对应的进程封装包的尺度。

另一种可能的实现方式:

若比值小于等于第一预设阈值,则确定第一当前时间段对应的进程封装包的尺度为第一历史时间段对应的进程封装包的尺度与第二系数的乘积,其中,第二系数大于1。即使第一当前时间段对应的进程封装包的尺度小大于第一历史时间段对应的进程封装包的尺度。

其中,第二系数的一种可能的获取方式为:

确定第一数量与第三数量的比值为第二系数,其中,第三数量为第一历史时间段的前一时间段通过第一进程封装包和第二进程封装包发送的消息单元的数量。

本实施例,通过获取第一历史时间段内,通过第一进程封装包和第二进程封装包发送的消息单元的第一数量,以及获取第一历史时间段内,通过第二进程封装包发送的消息单元的第二数量,根据第二数量和第一数量的比值以及第一历史时间段对应的进程封装包的尺度,确定第一当前时间段对应的进程封装包的尺度。从而,使得进程封装包的尺度设置的更加合理。

图6为本申请消息传输装置实施例一的结构示意图,本实施例的装置包括处理模块601、封装模块602和发送模块603,其中,处理模块601用于根据第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度,消息单元中包含至少一个消息;封装模块602用于根据第一当前时间段对应的进程封装包的尺度,对源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;发送模块603用于发送进程封装包。

本实施例的装置,对应的可用于执行消息传输方法实施例一所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图6中,进程封装包包括:第一进程封装包;

封装模块602具体用于若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于第一当前时间段对应的进程封装包的尺度,则按照第一当前时间段对应的进程封装包的尺度,对目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包,其中,第一进程封装包中包含的消息单元的数量与第一当前时间段对应的进程封装包的尺度相同。

在图6中,进程封装包还包括:第二进程封装包;

封装模块602还具体用于若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于第一当前时间段对应的进程封装包的尺度,则确定目的进程单元为同一进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若第一等待时间大于等于第一预设定时时间,则对目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包,第二进程封装包中包含发送队列中目的进程单元为同一进程单元的所有消息单元。

本实施例的装置,对应的可用于执行消息传输方法实施例二所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图6中处理模块601具体用于获取第一历史时间段内,通过第一进程封装包和第二进程封装包发送的消息单元的第一数量;以及,获取第一历史时间段内,通过第二进程封装包发送的消息单元的第二数量;根据第二数量和第一数量的比值以及第一历史时间段对应的进程封装包的尺度,确定第一当前时间段对应的进程封装包的尺度。

其中,处理模块601具体用于若比值大于第一预设阈值,则确定第一当前时间段对应的进程封装包的尺度为第一历史时间段对应的进程封装包的尺度与第一系数的乘积,其中,第一系数小于1。

其中,处理模块601还具体用于若比值小于等于第一预设阈值,则确定第一当前时间段对应的进程封装包的尺度为第一历史时间段对应的进程封装包的尺度与第二系数的乘积,其中,第二系数大于1。

其中,处理模块601还用于确定第一数量与第三数量的比值为第二系数,其中,第三数量为第一历史时间段的前一时间段通过第一进程封装包和第二进程封装包发送的消息单元的数量。

本实施例的装置,对应的可用于执行消息传输方法实施例三所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本申请消息传输装置实施例二的结构示意图,本实施例的装置包括处理器701和发送器702,其中,处理器701用于根据第一历史时间段源进程单元的线程单元向源进程单元的发送队列发送消息单元的频率,确定源进程单元的第一当前时间段对应的进程封装包的尺度,消息单元中包含至少一个消息;处理器701还用于根据第一当前时间段对应的进程封装包的尺度,对源进程单元的发送队列中的消息单元进行封装处理,生成进程封装包;发送器702发送器耦合至处理器,发送器用于发送进程封装包。

本实施例的装置,对应的可用于执行消息传输方法实施例一所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图7中,进程封装包包括:第一进程封装包;

处理器701具体用于若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量大于等于第一当前时间段对应的进程封装包的尺度,则按照第一当前时间段对应的进程封装包的尺度,对目的进程单元为同一进程单元的消息单元进行封装处理,生成第一进程封装包,其中,第一进程封装包中包含的消息单元的数量与第一当前时间段对应的进程封装包的尺度相同。

在图7中,进程封装包还包括:第二进程封装包;

处理器701还具体用于若源进程单元的发送队列中目的进程单元为同一进程单元的消息单元的数量小于第一当前时间段对应的进程封装包的尺度,则确定目的进程单元为同一进程单元的消息单元中最早进入发送队列的消息单元的第一等待时间是否大于等于第一预设定时时间,若第一等待时间大于等于第一预设定时时间,则对目的进程单元为同一进程单元的消息单元进行封装处理,生成第二进程封装包,第二进程封装包中包含发送队列中目的进程单元为同一进程单元的所有消息单元。

本实施例的装置,对应的可用于执行消息传输方法实施例二所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图7中,处理器701具体用于获取第一历史时间段内,通过第一进程封装包和第二进程封装包发送的消息单元的第一数量;以及,获取第一历史时间段内,通过第二进程封装包发送的消息单元的第二数量;根据第二数量和第一数量的比值以及第一历史时间段对应的进程封装包的尺度,确定第一当前时间段对应的进程封装包的尺度。

其中,处理器701具体用于若比值大于第一预设阈值,则确定第一当前时间段对应的进程封装包的尺度为第一历史时间段对应的进程封装包的尺度与第一系数的乘积,其中,第一系数小于1。

其中,处理器701还具体用于若比值小于等于第一预设阈值,则确定第一当前时间段对应的进程封装包的尺度为第一历史时间段对应的进程封装包的尺度与第二系数的乘积,其中,第二系数大于1。

其中,处理器701还用于确定第一数量与第三数量的比值为第二系数,其中,第三数量为第一历史时间段的前一时间段通过第一进程封装包和第二进程封装包发送的消息单元的数量。

本实施例的装置,对应的可用于执行消息传输方法实施例三所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

图8为本申请消息传输系统实施例二的结构示意图,该系统包括源进程单元,源进程单元包括至少一个线程单元,如图8所示,图8中源进程单元以进程单元a示出,至少一个线程单元以线程单元a1、线程单元a2和线程单元a3示出,其中,线程单元对线程单元产生的消息进行封装处理,生成消息单元,消息单元中包含至少两个消息;线程单元向源进程单元的发送队列发送消息单元。

在上述实施例中,线程单元对线程单元产生的消息进行封装处理,生成消息单元,具体为:线程单元根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成消息单元;

在上述实施例中,线程单元对线程单元产生的消息进行封装处理,生成消息单元之前,线程单元根据第二历史时间段内线程单元产生的消息的数量,确定第二当前时间段对应的线程封装包的尺度。

在上述实施例中,线程单元根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成消息单元时,具体为:

线程单元具体用于若线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于第二当前时间段对应的线程封装包的尺度,则按照线程封装包的尺度,对目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,第一消息单元中包含的消息的数量与线程封装包的尺度相同。

在上述实施例中,线程单元根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成消息单元时,具体为:

线程单元还具体用于若线程单元产生的目的线程单元为同一线程单元的消息的数量小于第二当前时间段对应的线程封装包的尺度,则确定目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若第二等待时间大于等于第二预设定时时间,则对目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,第二消息单元中包含线程单元产生的目的线程单元为同一线程单元的所有消息。

在上述实施例中,线程单元根据第二历史时间段内线程单元产生的消息的数量,确定第二当前时间段对应的线程封装包的尺度时,具体为:

线程单元具体用于获取第二历史时间段内,通过第一消息单元和第二消息单元发送的消息的第三数量;以及,获取第二历史时间段内,通过第二消息单元发送的消息的第四数量;根据第四数量和第三数量的比值以及第二历史时间段对应的线程封装包的尺度,确定第二当前时间段对应的线程封装包的尺度。

图8所示消息传输系统实施例中源进程单元具体可用于执行图9-图12所示方法实施例的技术方案,其实现原理和技术效果,参见图9-图12所示方法实施例中的详细描述,此处不再赘述。

图9为本申请消息传输方法实施例四的流程示意图,本实施例由发送端的线程单元执行,本实施例所对应的技术方案可以在独立执行,也可以结合上述各实施例,在上述各实施例的基础执行:如下所示:

s901:对线程单元产生的消息进行封装处理,生成消息单元。

其中,消息单元包含至少两个消息。

其中,对线程单元产生的消息进行封装处理所采用的线程封装包的尺度,可以是固定不变的,也可以是根据第二历史时间段内线程单元产生的消息的数量,动态确定的,对此,本申请不做限制。

s902:向源进程单元的发送队列发送上述消息单元。

本实施例,通过线程单元对线程单元产生的消息进行封装处理,生成消息单元,向源进程单元的发送队列发送消息单元,由于在线程单元处进行封装处理,进一步地,提高消息传输的性能。

实施例五

图10为本申请消息传输方法实施例五的流程示意图,本实施例是在图9所示实施例的基础上,进一步地,在执行s901之前,还包括:

s1000:根据第二历史时间段内线程单元产生的消息的数量,确定第二当前时间段对应的线程封装包的尺度。

本实施例,通过根据第二历史时间段内线程单元产生的消息的数量,确定第二当前时间段对应的线程封装包的尺度,线程封装包的尺度设置更加合理。

实施例六

图11为本申请消息传输方法实施例六的流程示意图,本实施例是在实施例五或实施例六所示实施例的基础上,进一步地,s901的可能的实现的方式的描述,其中,

其中,可以通过两种方式触发线程单元进行封装处理,其中,第一种方式为:线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于第二当前时间段对应的线程封装包的尺度,则触发线程单元进行封装处理。第二种方式为:线程单元产生的目的线程单元为同一线程单元的消息的数量小于第二当前时间段对应的线程封装包的尺度,但目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间大于等于第二预设定时时间,则触发线程单元进行消息封装处理。为了便于描述,将通过第一种方式触发线程单元进行封装处理产生的消息单元描述为“第一消息单元”,将通过第二种方式触发线程单元进行封装处理产生的消息单元描述为“第二消息单元”,如图11所示,本实施例如下:

s1101:判断线程单元产生的目的线程单元为同一线程单元的消息的数量是否大于等于第二当前时间段对应的线程封装包的尺度。

若线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于第二当前时间段对应的线程封装包的尺度,则执行s1102。

若线程单元产生的目的线程单元为同一线程单元的消息的数量小于第二当前时间段对应的线程封装包的尺度,则执行s1103。

s1102:按照线程封装包的尺度,对目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元。

其中,第一消息单元中包含的消息的数量与线程封装包的尺度相同。

即:通过第一种方式触发线程单元进行封装处理。

s1103:确定目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间。

若第二等待时间大于等于第二预设定时时间,则执行s1104。

若第二等待时间小于第二预设定时时间,则返回执行s1101。

其中,第二预设定时时间可以根据经验值进行设置。第二等待时间由专门的线程单元(描述为定时线程单元)进行监控,当第二等待时间大于等于第二预设定时时间时,该定时线程单元向产生消息的线程单元发送指示消息,触发产生消息的线程单元进行封装处理。

s1104:对目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元。

其中,第二消息单元中包含线程单元产生的目的线程单元为同一线程单元的所有消息。

即:通过第二种方式触发线程单元进行封装处理。

本实施例:通过两种方式触发线程单元进行封装处理,当线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于第二当前时间段对应的线程封装包的尺度,则触发按照线程封装包的尺度,对目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元;当线程单元产生的目的线程单元为同一线程单元的消息的数量小于第二当前时间段对应的线程封装包的尺度,但目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,则触发线程单元对目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,从而,避免因线程单元产生消息的频率不稳定时,消息数量较长时间不能满足线程封装包的尺度而无法进行封装处理,导致消息发送时延较长的问题。

实施例七

图12为本申请消息传输方法实施例七的流程示意图,本实施例是在实施例六所示实施例的基础上,进一步地,s1000的一种可能的实现的方式的描述,如图12所示:

s1201:获取第二历史时间段内,通过第一消息单元和第二消息单元发送的消息的第三数量。

s1202:获取第二历史时间段内,通过第二消息单元发送的消息的第四数量。

其中,s1201和s1202的执行顺序不做限制。

s1203:根据第四数量和第三数量的比值以及第二历史时间段对应的线程封装包的尺度,确定第二当前时间段对应的线程封装包的尺度。

通过第四数量和第三数量的比值,可以获知第二历史时间段线程单元产生消息的频率的变化趋势,第二预设阈值通常设置为0.5,若比值大于第二预设阈值,说明线程单元产生消息的频率变慢,大多数的消息是通过第二种方式触发线程单元进行封装处理的,因此,要减小线程封装包的尺度。若比值大于0.5,说明线程单元产生消息的频率变快,大多数的消息是通过第一种方式触发线程单元进行封装处理的,因此,要增大线程封装包的尺度。

当要缩小线程封装包的尺度时,要确保第二历史时间段对应的线程封装包的尺度大于1。

具体地,包括但不限于以下两种可能的实现方式:

一种可能的实现方式:

若比值大于第二预设阈值,则确定第二当前时间段对应的线程封装包的尺度为第二历史时间段对应的线程封装包的尺度与第三系数的乘积,其中,第三系数小于1。即使第二当前时间段对应的线程封装包的尺度小于第二历史时间段对应的进程封装包的尺度。

另一种可能的实现方式:

若比值小于等于第二预设阈值,则确定第二当前时间段对应的线程封装包的尺度为第二历史时间段对应的线程封装包的尺度与第四系数的乘积,其中,第四系数大于1。即使第二当前时间段对应的进程封装包的尺度小大于第二历史时间段对应的进程封装包的尺度。

本实施例,通过获取第二历史时间段内,通过第一消息单元和第二消息单元发送的消息的第三数量,以及,获取第二历史时间段内,通过第二消息单元发送的消息的第四数量,根据第四数量和第三数量的比值以及第二历史时间段对应的线程封装包的尺度,确定第二当前时间段对应的线程封装包的尺度,从而,使得线程封装包的尺度设置更加合理。

图13为本申请消息传输装置实施例三的结构示意图,本实施例的装置包括封装模块1301、发送模块1302,其中,封装模块1301用于对线程单元产生的消息进行封装处理,生成消息单元,消息单元包含至少两个消息;发送模块1302用于向源进程单元的发送队列发送消息单元。

本实施例的装置,对应的可用于执行消息传输方法实施例四所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图13中,封装模块1301具体用于根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成消息单元。还包括:处理模块1303用于根据第二历史时间段内线程单元产生的消息的数量,确定第二当前时间段对应的线程封装包的尺度。

本实施例的装置,对应的可用于执行消息传输方法实施例五所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图13中,消息单元包括第一消息单元;

封装模块1301具体用于若线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于第二当前时间段对应的线程封装包的尺度,则按照线程封装包的尺度,对目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,第一消息单元中包含的消息的数量与线程封装包的尺度相同。

在图13中,消息单元还包括第二消息单元;

封装模块1301还具体用于若线程单元产生的目的线程单元为同一线程单元的消息的数量小于第二当前时间段对应的线程封装包的尺度,则确定目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若第二等待时间大于等于第二预设定时时间,则对目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,第二消息单元中包含线程单元产生的目的线程单元为同一线程单元的所有消息。

本实施例的装置,对应的可用于执行消息传输方法实施例六所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图13中,处理模块1303具体用于获取第二历史时间段内,通过第一消息单元和第二消息单元发送的消息的第三数量;以及,获取第二历史时间段内,通过第二消息单元发送的消息的第四数量;根据第四数量和第三数量的比值以及第二历史时间段对应的线程封装包的尺度,确定第二当前时间段对应的线程封装包的尺度。

其中,处理模块1303具体用于若比值大于第二预设阈值,则确定第二当前时间段对应的线程封装包的尺度为第二历史时间段对应的线程封装包的尺度与第三系数的乘积,其中,第三系数小于1。

其中,处理模块1303还具体用于若比值小于等于第二预设阈值,则确定第二当前时间段对应的线程封装包的尺度为第二历史时间段对应的线程封装包的尺度与第四系数的乘积,其中,第四系数大于1。

本实施例的装置,对应的可用于执行消息传输方法实施例七所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

图14为本申请消息传输装置实施例四的结构示意图,本实施例的装置包括处理器1401和发送器1402,其中,处理器1401用于对线程单元产生的消息进行封装处理,生成消息单元,消息单元包含至少两个消息;发送器1402发送器耦合至处理器,发送器用于向源进程单元的发送队列发送消息单元。

本实施例的装置,对应的可用于执行消息传输方法实施例四所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图14中,处理器1401具体用于根据第二当前时间段对应的线程封装包的尺度,对线程单元产生的消息进行封装处理,生成消息单元。

在图14中,处理器1401还用于根据第二历史时间段内线程单元产生的消息的数量,确定第二当前时间段对应的线程封装包的尺度。

本实施例的装置,对应的可用于执行消息传输方法实施例五所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图14中,消息单元包括第一消息单元;

处理器1401具体用于若线程单元产生的目的线程单元为同一线程单元的消息的数量大于等于第二当前时间段对应的线程封装包的尺度,则按照线程封装包的尺度,对目的线程单元为同一线程单元的消息进行封装处理,生成第一消息单元,其中,第一消息单元中包含的消息的数量与线程封装包的尺度相同。

在图14中,消息单元还包括第二消息单元;

处理器1401还具体用于若线程单元产生的目的线程单元为同一线程单元的消息的数量小于第二当前时间段对应的线程封装包的尺度,则确定目的线程单元为同一线程单元的消息中最早产生的消息的第二等待时间是否大于等于第二预设定时时间,若第二等待时间大于等于第二预设定时时间,则对目的线程单元为同一线程单元的消息进行封装处理,生成第二消息单元,其中,第二消息单元中包含线程单元产生的目的线程单元为同一线程单元的所有消息。

本实施例的装置,对应的可用于执行消息传输方法实施例六所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

在图14中,处理器1401具体用于获取第二历史时间段内,通过第一消息单元和第二消息单元发送的消息的第三数量;以及,获取第二历史时间段内,通过第二消息单元发送的消息的第四数量;根据第四数量和第三数量的比值以及第二历史时间段对应的线程封装包的尺度,确定第二当前时间段对应的线程封装包的尺度。

在图14中,处理器1401具体用于若比值大于第二预设阈值,则确定第二当前时间段对应的线程封装包的尺度为第二历史时间段对应的线程封装包的尺度与第三系数的乘积,其中,第三系数小于1。

在图14中,处理器1401还具体用于若比值小于等于第二预设阈值,则确定第二当前时间段对应的线程封装包的尺度为第二历史时间段对应的线程封装包的尺度与第四系数的乘积,其中,第四系数大于1。

本实施例的装置,对应的可用于执行消息传输方法实施例七所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

图15为本申请消息传输系统实施例三的结构示意图,如图15所示,该系统包括,进程单元,进程单元包括源线程单元和目的线程单元;在图15中,进程单元以进程单元a示出,源线程单元以线程单元a1示出,目的线程单元以线程单元a2示出;源线程单元确定源线程单元产生的消息的目的线程单元是否属于同一进程单元;源线程单元若消息的目的线程单元属于同一进程单元,则向目的线程单元的接收队列发送消息。

图15所示消息传输系统实施例中源进程单元具体可用于执行图16所示方法实施例的技术方案,其实现原理和技术效果,参见图16所示方法实施例中的详细描述,此处不再赘述。

图16为本申请消息传输方法实施例八的流程示意图,本实施例所对应的技术方案可以独立执行,也可以结合上述各实施例,在上述各实施例的基础上执行,具体如下:

s1601:源线程单元确定产生的消息的目的线程单元是否与源线程单元属于同一进程单元。

结合图1,例如:源线程单元为线程单元a1,产生的消息的目的线程单元为线程单元a2或者线程单元a3,则认为产生的消息的目的线程单元与源线程单元属于同一进程单元。

再例如:源线程单元为线程单元a1,产生的消息的目的线程单元为线程单元b1、线程单元b2或者线程单元b3,则认为产生的消息的目的线程单元与源线程单元不属于同一进程单元。

若线程单元产生的消息的目的线程单元属于源线程单元,则执行s1602。

s1602:源线程单元发送消息到目的线程单元的接收队列。

即:无需先将消息发送到进程单元的发送队列,再通过网络通道发送到该进程单元的接收队列,再发送到目的线程单元,而是直接在进程单元内部,将消息从一个线程单元传输到另一个线程单元,从而,缩短消息发送的时延。

例如:图1中的线程单元a1产生的消息的目的线程单元为线程单元a2,则直接在进程单元a内,将消息从线程单元a1发送到线程单元a2的接收队列。

本实施例,通过确定线程单元产生的消息的目的线程单元是否属于源线程单元,当线程单元产生的消息的目的线程单元属于源线程单元,则直接发送消息到目的线程单元的接收队列,从而,缩短消息发送的时延,提高消息传输效率。

图17为本申请消息传输装置实施例五的结构示意图,本实施例的装置包括处理模块1701和发送模块1702,其中,处理模块1701用于确定产生的消息的目的线程单元是否与源线程单元属于同一进程单元;发送模块1702用于若消息的目的线程单元与源线程单元属于同一进程单元,则向目的线程单元的接收队列发送消息。

本实施例的装置,对应的可用于执行消息传输方法实施例八所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

图18为本申请消息传输装置实施例六的结构示意图,本实施例的装置包括处理器1801和发送器1802,其中,处理器1801用于确定产生的消息的目的线程单元是否与源线程单元属于同一进程单元;发送器1802耦合至处理器1801,发送器1802用于若消息的目的线程单元与源线程单元属于同一进程单元,则向目的线程单元的接收队列发送所述消息。

本实施例的装置,对应的可用于执行消息传输方法实施例八所示的技术方案,其实现原理和技术效果类似,此处不再赘述。

本申请还可提供一种处理器可读存储介质,该可读存储介质中存储有程序指令,该程序指令用于使处理器执行上述消息传输方法实施例一至实施例八中所有步骤或部分步骤。上述可读存储存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1