System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及数据通信领域,特别是涉及一种消息发送与接收方法、相关装置和介质。
技术介绍
1、在数据中心网络中,服务器节点之间的连接方式可以分为独占连接方式和共享连接方式。每个服务器节点中有多个应用。在独占连接方式中,为源服务器节点和目的地服务器节点中的同一应用创建一条连接,该连接只传输该应用上的数据。在共享连接方式中,源服务器节点和目的地服务器节点中的所有应用共享一条连接,该连接传输源服务器节点和目的地服务器节点的各种应用之间需要传输的数据。
2、在共享连接方式中,经常出现较大的头阻问题。例如,假设源服务器节点和目的地服务器节点之间的总带宽为10gb,在源服务器节点和目的地服务器节点的应用1有一个1gb的消息需要传输,应用2有一个1mb的消息需要传输。正常来说,如果先发送1mb的消息,再发送1gb的消息,1mb消息的发送仅需0.8ms,1gb消息的发送需要800.8ms,既保证了小消息的时效性,又没有过多得拖慢大消息的传输进程,因为大消息的传输过程本来就很耗时,对于轻微的耗时增加不敏感。但如果1gb的消息排在1mb的消息的前面,则1mb的消息需要800.8ms才能发送完毕,该小消息的传输时效性几乎得不到保障,即产生头阻问题。
技术实现思路
1、本公开实施例提供了一种消息发送与接收方法、相关装置和介质,它能减少头阻问题,提高共享连接数据传输的公平性。
2、根据本公开的一方面,提供了一种消息发送方法,用于源节点,所述源节点具有多个应用,每个所述应用对应于一个消息队
3、基于所述应用对应的最大子消息大小,将所述应用对应的所述消息队列中的消息分成子消息,放入所述应用对应的所述子消息队列;
4、为每个所述子消息队列设置令牌桶,所述令牌桶以第一令牌放置速率放入令牌,直到所述令牌桶容量满;
5、轮询各个所述应用对应的所述子消息队列,如果所述子消息队列中的队首子消息的字节长度不大于第一令牌数,将所述队首子消息取出发送,并从所述子消息队列对应的所述令牌桶中取出所述字节长度数目的令牌,其中,所述第一令牌数为所述子消息队列对应的所述令牌桶中的令牌数。
6、根据本公开的一方面,提供了一种消息接收方法,用于目的地节点,所述目的地节点具有多个应用,所述消息接收方法包括:
7、从所述源节点接收报文,所述报文具有所述报文的报文标识、所述报文所属的子消息的子消息标识、所述子消息所属的消息的消息标识、所述子消息在所述消息中的偏移量、所述消息所属的所述应用的应用标识,其中,所述子消息在所述源节点中,基于所述应用对应的最大子消息大小从所述消息中分出,并放置在所述应用对应的子消息队列中,为每个所述子消息队列设置令牌桶,轮询各个所述应用对应的所述子消息队列,如果所述子消息队列中的队首子消息的字节长度不大于第一令牌数,将所述队首子消息取出发送,其中,所述第一令牌数为所述子消息队列对应的所述令牌桶中的令牌数;
8、基于所述报文标识和所述子消息标识,将所述报文还原到所述子消息标识对应的所述子消息中;
9、基于所述子消息标识、所述消息标识和所述偏移量,将所述子消息还原到所述消息标识对应的所述消息中。
10、根据本公开的一方面,提供了一种消息发送装置,用于源节点,源节点具有多个应用,每个应用对应于一个消息队列和一个子消息队列,消息发送装置包括:
11、消息分成单元,用于基于所述应用对应的最大子消息大小,将所述应用对应的所述消息队列中的消息分成子消息,放入所述应用对应的所述子消息队列;
12、第一设置单元,用于为每个所述子消息队列设置令牌桶,所述令牌桶以第一令牌放置速率放入令牌,直到所述令牌桶容量满;
13、轮询单元,用于轮询各个所述应用对应的所述子消息队列,如果所述子消息队列中的队首子消息的字节长度不大于第一令牌数,将所述队首子消息取出发送,并从所述子消息队列对应的所述令牌桶中取出所述字节长度数目的令牌,其中,所述第一令牌数为所述子消息队列对应的所述令牌桶中的令牌数。
14、可选地,不同的所述应用对应的所述最大子消息大小不同;
15、所述消息分成单元具体用于:
16、获取所述应用对应的所述最大子消息大小;
17、如果所述应用对应的所述消息队列中的所述消息不大于所述最大子消息大小,将所述消息作为一个所述子消息,放入所述应用对应的所述子消息队列;
18、如果所述应用对应的所述消息队列中的所述消息大于所述最大子消息大小,从所述消息中按照所述最大子消息大小分出所述子消息,放入所述应用对应的所述子消息队列。
19、可选地,所述子消息队列包括多个子消息分队列,各个所述子消息分队列具有不同的所述最大子消息大小,各个所述子消息分队列共享所述子消息队列对应的所述令牌桶;
20、所述轮询单元具体用于:
21、为各个所述子消息分队列设置分队列序号;
22、当轮询到一个所述子消息队列时,通过分队列序号指定器,指定一个所述分队列序号,其中,所述分队列序号指定器指定各个所述子消息分队列的所述分队列序号的概率比等于各个所述子消息分队列的所述最大子消息大小的比;
23、如果所述分队列序号指定器指定的所述分队列序号对应的所述子消息分队列中,所述队首子消息的所述字节长度不大于所述第一令牌数,则将所述队首子消息取出发送。
24、可选地,所述消息发送装置还包括:
25、第一获取单元,用于获取所述子消息队列对应的所述应用的优先级;
26、第一确定单元,用于确定所述子消息队列对应的所述令牌桶中的剩余容量大小;
27、第二确定单元,用于基于所述优先级和所述剩余容量大小,确定所述第一令牌放置速率。
28、可选地,所述消息分成单元具体还用于:
29、将所述应用对应的所述消息队列中的消息分成消息基本单元;
30、按照从前到后的顺序,逐一考察所述消息基本单元,将待考察的所述消息基本单元与前一个所述消息基本单元输入衔接顺畅度评估模型,得到衔接顺畅度分数,将待考察的所述消息基本单元之前的各个所述消息基本单元作为锚序列,将之前的各个所述消息基本单元与待考察的所述消息基本单元的连接序列作为待考察序列,并将所述锚序列和所述待考察序列输入相似度评估模型,得到相似度分数;
31、基于所述衔接顺畅度分数和所述相似度分数、和所述最大子消息大小,将所述应用对应的所述消息队列中的消息分成子消息,放入所述应用对应的所述子消息队列。
32、可选地,所述消息分成单元具体还用于:
33、如果所述衔接顺畅度分数大于第一阈值,所述相似度分数大于第二阈值,且所述待考察序列的大小不大于所述最大子消息大小,则继续考察待考察的所述消息基本单元的下一个消息基本单元,直到所述衔接顺畅度分数不大于第一阈值,或者所述相似度分数不大于第二本文档来自技高网...
【技术保护点】
1.一种消息发送方法,其特征在于,用于源节点,所述源节点具有多个应用,每个所述应用对应于一个消息队列和一个子消息队列,所述消息发送方法包括:
2.根据权利要求1所述的消息发送方法,其特征在于,不同的所述应用对应的所述最大子消息大小不同;
3.根据权利要求1所述的消息发送方法,其特征在于,所述子消息队列包括多个子消息分队列,各个所述子消息分队列具有不同的所述最大子消息大小,各个所述子消息分队列共享所述子消息队列对应的所述令牌桶;
4.根据权利要求1所述的消息发送方法,其特征在于,所述将所述队首子消息取出发送,包括:
5.根据权利要求4所述的消息发送方法,其特征在于,所述通过分配的所述候选路径,发送所述报文到目的地节点,包括:
6.根据权利要求5所述的消息发送方法,其特征在于,在轮询各个所述应用对应的所述子消息队列,如果所述子消息队列中的队首子消息的字节长度不大于第一令牌数,将所述队首子消息取出发送,并从所述子消息队列对应的所述令牌桶中取出所述字节长度数目的令牌之后,所述消息发送方法还包括:
7.根据权利要求6所
8.根据权利要求7所述的消息发送方法,其特征在于,在基于所述应用对应的最大子消息大小,将所述应用对应的所述消息队列中的消息分成子消息,放入所述应用对应的所述子消息队列之后,所述消息发送方法还包括:为分出的所述子消息分配所述子消息标识,并创建所述消息标识对应的第一消息位图,所述第一消息位图包括与各个子消息标识对应的位,其中,与各个所述子消息标识对应的所述位初始化为所述第一值;
9.一种消息接收方法,其特征在于,用于目的地节点,所述目的地节点具有多个应用,所述消息接收方法包括:
10.根据权利要求9所述的消息接收方法,其特征在于,所述基于所述报文标识和所述子消息标识,将所述报文还原到所述子消息标识对应的所述子消息中,包括:
11.根据权利要求10所述的消息接收方法,其特征在于,所述基于所述子消息标识、所述消息标识和所述偏移量,将所述子消息还原到所述消息标识对应的所述消息中,包括:
12.根据权利要求10所述的消息接收方法,其特征在于,在基于所述子消息标识、所述消息标识和所述偏移量,将所述子消息还原到所述消息标识对应的所述消息中之后,所述消息接收方法还包括:
13.根据权利要求9所述的消息接收方法,其特征在于,所述报文还具有报文发出序号、和传输所述报文的候选路径的候选路径标识;
14.根据权利要求9所述的消息接收方法,其特征在于,在基于所述子消息标识、所述消息标识和所述偏移量,将所述子消息还原到所述消息标识对应的所述消息中之后,所述消息接收方法还包括:
15.一种消息发送装置,其特征在于,用于源节点,所述源节点具有多个应用,每个所述应用对应于一个消息队列和一个子消息队列,所述消息发送装置包括:
16.一种消息接收装置,其特征在于,用于目的地节点,所述目的地节点具有多个应用,所述消息接收装置包括:
17.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现根据权利要求1至8任意一项所述的消息发送方法、或权利要求9至14任意一项所述的消息接收方法。
18.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求1至8任意一项所述的消息发送方法、或权利要求9至14任意一项所述的消息接收方法。
19.一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行根据权利要求1至8任意一项所述的消息发送方法、或权利要求9至14任意一项所述的消息接收方法。
...【技术特征摘要】
1.一种消息发送方法,其特征在于,用于源节点,所述源节点具有多个应用,每个所述应用对应于一个消息队列和一个子消息队列,所述消息发送方法包括:
2.根据权利要求1所述的消息发送方法,其特征在于,不同的所述应用对应的所述最大子消息大小不同;
3.根据权利要求1所述的消息发送方法,其特征在于,所述子消息队列包括多个子消息分队列,各个所述子消息分队列具有不同的所述最大子消息大小,各个所述子消息分队列共享所述子消息队列对应的所述令牌桶;
4.根据权利要求1所述的消息发送方法,其特征在于,所述将所述队首子消息取出发送,包括:
5.根据权利要求4所述的消息发送方法,其特征在于,所述通过分配的所述候选路径,发送所述报文到目的地节点,包括:
6.根据权利要求5所述的消息发送方法,其特征在于,在轮询各个所述应用对应的所述子消息队列,如果所述子消息队列中的队首子消息的字节长度不大于第一令牌数,将所述队首子消息取出发送,并从所述子消息队列对应的所述令牌桶中取出所述字节长度数目的令牌之后,所述消息发送方法还包括:
7.根据权利要求6所述的消息发送方法,其特征在于,在从所述发送队列中取出所述子消息,拆分成报文之后,所述消息发送方法还包括:为拆分出的所述报文分配所述报文标识,并创建所述子消息标识对应的第一子消息位图,所述第一子消息位图包括与各个报文标识对应的位,其中,与各个所述报文标识对应的所述位初始化为所述第一值;
8.根据权利要求7所述的消息发送方法,其特征在于,在基于所述应用对应的最大子消息大小,将所述应用对应的所述消息队列中的消息分成子消息,放入所述应用对应的所述子消息队列之后,所述消息发送方法还包括:为分出的所述子消息分配所述子消息标识,并创建所述消息标识对应的第一消息位图,所述第一消息位图包括与各个子消息标识对应的位,其中,与各个所述子消息标识对应的所述位初始化为所述第一值;
9.一种消息接收方法,其特征在于,用于目的地节点,所述目的地节点具有多个应用,所述消息接收方法包括:...
【专利技术属性】
技术研发人员:叶君宏,金峰,
申请(专利权)人:腾讯云计算北京有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。