一种节点间传输数据的方法和系统
技术领域
本发明涉及通信领域,尤其涉及一种节点间传输数据的方法和系统。
背景技术
节点控制器用于将多个中央处理器,即多个CPU连接以形成一个系统。一般来讲,由8个CPU构成的系统称为8P系统,通常需要两片节点控制器芯片实现,连接方式如图1所示。16P系统如图2所示,由两个8P系统通过图2中上下两条链路连接并传输信息,两个8P系统相当于16P系统中的两个节点。以同样的方法,通过32个CPU形成的32P系统如图3所示。在具体实现过程中,32P系统通常被当作一个服务器来使用。
每两个节点之间的两条链路独立传输数据。管理员在服务器首次运行之前,会根据报文的发送端CPU和接收端CPU确定出传输数据的唯一链路。然而,同一时段同一节点内的不同CPU访问其它节点的业务量大小不一,这就可能会造成节点之间的两个链路一个堵塞,而另一个却空闲。
在现有技术中,发送端CPU和接收端CPU之间传输数据的链路是固定不变的,无论这条链路是否拥塞,都只能通过这条链路来传输,所以,这样就会造成负载严重不均衡,信息传输效率降低的技术问题。
发明内容
本发明实施例提供了一种节点间传输数据的方法和系统,实现了合理选择节点间链路来传输数据,从而均衡负载的技术效果。
本申请第一方面提供了一种节点间传输数据的方法,包括:
NI信用证监控模块向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;
所述发送端CPU根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;
所述第一节点和所述第二节点通过不同于所述第一链路的第二链路传输数据。
结合第一方面,在第一方面的第一种可能的实现方式中,所述发送端CPU根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态之后,所述方法还包括:
所述发送端CPU根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态;
当所述第二链路处于非拥塞状态时,所述第一节点和所述第二节点通过所述第二链路传输数据。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述发送端CPU根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态之后,所述方法还包括:
当所述第二链路处于所述拥塞状态时,所述第一节点和所述第二节点通过所述第一链路传输数据。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第二种可能的实现方式中的任意一种,在向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态之前,所述方法还包括:
所述NI信用证监控模块获得所述第一链路包括的第一端口的已使用信用证数量;
在所述已使用信用证数量等于所述第一端口的可使用阈值时,确定所述第一端口的所述信用证状态具体为用尽状态;
其中,当所述第一端口的所述信用证状态具体为所述用尽状态时,表明所述第一链路处于所述拥塞状态;
所述第一端口为所述第一节点的端口,第一链路还包括所述第二节点的第二端口。
本申请第二方面提供了一种节点间传输数据的系统,包括:
NI信用证监控模块,用于向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;
确定模块,用于根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;
传输模块,用于通过不同于所述第一链路的第二链路在所述第一节点和所述第二节点之间传输数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述系统还包括:
判断模块,用于所述确定模块根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态之后,根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态;
所述传输模块用于当所述第二链路处于非拥塞状态时,通过所述第二链路在所述第一节点和所述第二节点之间传输数据。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述传输模块还用于:
在所述判断模块根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态之后,当所述第二链路处于所述拥塞状态时,通过所述第一链路在所述第一节点和所述第二节点之间传输数据。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第二种可能的实现方式中的任意一种,所述NI信用证监控模块还用于:
在向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态之前,获得所述第一链路包括的第一端口的已使用信用证数量;
在所述已使用信用证数量等于所述第一端口的可使用阈值时,确定所述第一端口的所述信用证状态具体为用尽状态;
其中,当所述第一端口的所述信用证状态具体为所述用尽状态时,表明所述第一链路处于所述拥塞状态;
所述第一端口为所述第一节点的端口,第一链路还包括所述第二节点的第二端口。
本申请第三方面提供了一种电子设备,包括:
发送端CPU;
接收端CPU;
NI信用证监控模块,用于向所述发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;
所述发送端CPU根据所述信用证使用状态,确定所述接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;
所述发送端CPU通过不同于所述第一链路的第二链路在所述第一节点和所述第二节点之间传输数据。
结合第三方面,在第三方面的第一种可能的实现方式中,所述发送端CPU还用于:
在根据所述信用证使用状态,确定所述接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态之后,根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态;
当所述第二链路处于非拥塞状态时,通过所述第二链路在所述第一节点和所述第二节点之间传输数据。
结合第三方面,在第三方面的第二种可能的实现方式中,所述发送端CPU还用于:
在根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态之后,当所述第二链路处于所述拥塞状态时,通过所述第一链路在所述第一节点和所述第二节点之间传输数据。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第二种可能的实现方式中的任意一种,所述NI信用证监控模块还用于:
在向所述发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态之前,获得所述第一链路包括的第一端口的已使用信用证数量;
在所述已使用信用证数量等于所述第一端口的可使用阈值时,确定所述第一端口的所述信用证状态具体为用尽状态;
其中,当所述第一端口的所述信用证状态具体为所述用尽状态时,表明所述第一链路处于所述拥塞状态;
所述第一端口为所述第一节点的端口,第一链路还包括所述第二节点的第二端口。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
首先,NI信用证监控模块向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;然后,所述发送端CPU根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;最后,所述第一节点和所述第二节点通过不同于所述第一链路的第二链路传输数据。所以,在第一节点和第二节点间第一链路拥塞时,节点间数据不再需要拥堵在第一链路上,排队等待传输,而是通过第二链路将第一节点的数据传输到第二节点。因此,实现了合理选择节点间链路来传输数据的技术效果,减轻了传输链路的压力,提高数据传输效率,从而保持业务平稳运行。
附图说明
图1为现有技术中的8P系统示意图;
图2为现有技术中的16P系统示意图;
图3为现有技术中的32P系统示意图;
图4为本发明实施例中节点间传输数据的方法流程图;
图5为本发明实施例中的32P系统示意图;
图6为本发明实施例中的节点间传输数据的系统结构示意图;
图7为本发明实施例中的电子设备结构示意图;
图8为本发明实施例中的发送端CPU(接收端CPU)结构示意图。
具体实施方式
本发明实施例提供了一种节点间传输数据的方法和系统,通过解决发送端CPU和接收端CPU之间传输数据的链路是固定的技术问题,实现了合理选择节点间链路来传输数据,从而均衡负载的技术效果。
本发明实施例中的技术方案为解决上述的技术问题,本发明中的节点间传输数据的方法包括如下内容:
首先,NI信用证监控模块向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;然后,所述发送端CPU根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;最后,所述第一节点和所述第二节点通过不同于所述第一链路的第二链路传输数据。所以,在第一节点和第二节点间第一链路拥塞时,节点间数据不再需要拥堵在第一链路上,排队等待传输,而是通过第二链路将第一节点的数据传输到第二节点。因此,实现了合理选择节点间链路来传输数据的技术效果,减轻了传输链路的压力,提高数据传输效率,从而保持业务平稳运行。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图对本发明的实施方式进行详细说明。
本申请第一方面提供了一种节点间传输数据的方法,请参考图4,所述方法包括:
S101:NI信用证监控模块向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态。
S102:所述发送端CPU根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态。
S103:所述第一节点和所述第二节点通过不同于所述第一链路的第二链路传输数据。
在本申请实施中,第一节点和第二节点处于同一个32P系统中,即两个节点为同一服务器中的两个不同的节点。本申请实施例中的32P系统,如图5所示,由4个8P系统连接组成,每个8P系统作为32P中的一个节点。具体来讲,每个8P系统中包括8个CPU,通过两个节点控制器,如Hi1503V100连接而成。每个8P系统与其他3个8P系统均连接,因此可以相互传输数据。
在本申请实施例中,32P系统包括一个节点接口(英文:Node Interface;简称:NI)信用监控模块,设置在系统内部,用于监控32P系统的4个节点的各个端口的信用证使用状态。
具体来讲,报文或数据需要通过节点的NI发送,在发送时,待发送的数据或报文需请求获取NI的一个信用证,获得信用证后,才可以发送。并且,每一个NI可以使用的信用证数量是有限的,即信用证数量具有一阈值,如30、523等,而对于阈值的具体取值,取决于NI的硬件参数以及软件配置等,因此本申请所属领域的普通技术人员可以根据实际进行选择,本申请对此不做具体限制。
NI信用证监控模块在监控过程中,实时监控每一个端口的信用证使用状态。在本申请实施例中,NI信用证监控模块会始终处于监控状态,不断监控NI端口的信用证使用数量,并根据监控情况实时更新NI的信用证状态。换言之,无论是数据传输前、传输中还是传输完成后,NI信用证监控模块都处于监控状态。为了方便说明,下面将以监控发生在本申请实施例中的S101之前为例进行介绍。
在S101之前,32P系统中,包括第一节点和第二节点的每一个节点,都会实时地将自己每一个端口的已使用的信用证数量发送至NI信用证监控模块。其中,第一节点和第二节点间传输数据有一条固定链路,即第一链路。在系统运行之前,系统管理员会根据发送端CPU和接收端CPU,配置出传输数据的第一链路,并且将第一链路保存在每个CPU均存储有的路由表中,每个CPU存储的路由表不完全相同。举例来说,如图5所示,假设CPU0中的路由表中配置为:当接收端为CPU29时,第一链路为依次经过CPU0,NC0,NC6,CPU29的链路;当接收端为CPU16时,第一链路为依次经过CPU0,CPU3,NC1,NC4,CPU16的链路等等。
第一链路连接第一节点和第二节点,第一节点通过第一端口向第二节点的第二端口传输数据。在S101之前,第一端口会将已使用信用证数量输入NI信用证监控模块。NI信用证监控模块中记录有每个端口信用证的可使用阈值。当NI信用证监控模块获得了第一端口的已使用信用证数量后,获取自身存储的第一端口的可使用阈值,当第一端口的信用证状态等于可使用阈值时,表明第一端口的信用证已经全部使用完毕,新来的数据无法申请到信用证,进而也表明第一端口所在的第一链路此时处于拥塞状态;当第一端口的信用证状态小于可使用阈值时,表明第一端口的信用证未使用完毕,新来的数据仍然可以继续申请并获得信用证,进而也表明第一端口所在的第一链路此时处于非拥塞状态。
接下来,在S101中,当第一节点中发送端CPU需要向第二节点的接收端CPU传输数据时,发送端CPU从NI信用证监控模块获得第一节点的每一个端口的信用证使用状态。发送端CPU可以为32P系统中的任一CPU,接收端CPU可以为32P系统中,除发送端CPU之外的任一CPU。因此,在本申请实施例中,对发送端CPU和接收端CPU不作具体限制。
具体地,信用证使用状态有两种,一种为NI信用证未用尽,另一种为NI信用证已用尽。
接下来,执行S102。
在S102中,发送端CPU根据路由表中记录的第一链路所包括的第一端口的信用证使用状态,确定发送端CPU到接收端CPU的第一链路是否拥塞。具体判断过程为:当第一端口的信用证使用状态为NI信用证未用尽时,判断第一链路处于非拥塞状态;当第一端口的信用证使用状态为NI信用证用尽时,判断第一链路处于拥塞状态。
当第一链路处于非拥塞状态时,第一节点和第二节点通过第一链路传输数据。
当第一链路处于非拥塞状态时,为了减轻了第一链路的压力,尽快将数据传输到第二节点,第一节点和第二节点通过第二链路传输数据。
具体来讲,第二链路是不同于第一链路的另一条链路,通过第二链路,发送端CPU的数据同样可以达到接收端CPU。第二链路和第一链路一样,都是由系统管理员在系统运行之前完成配置,并和第一链路一起存储在每一个CPU的路由表中。发送端CPU根据第一节点的信用证使用状态,在链路层进行选择,即选择路由表中的第一链路或第二链路来传输数据。
最后,当第一链路拥塞时,执行S103,两个节点间通过第二链路传输数据。
可选的,为了提高数据传输效率,在本申请实施例中,发送端CPU还可以进一步判断第二链路是否处于拥塞状态。
具体来讲,假设第二链路包括第一节点的第三端口和第二节点的第四端口,那么NI信用证监控模块获取第三端口的已使用信用证数量,并且查询存储的第三端口的可使用阈值来判断第二链路是否拥塞。当第三端口的信用证状态等于可使用阈值时,表明第三端口的信用证已经全部使用完毕,新来的数据无法申请到信用证,进而也表明第三端口所在的第二链路此时处于拥塞状态;当第三端口的信用证状态小于可使用阈值时,表明第三端口的信用证未使用完毕,新来的数据仍然可以继续申请并获得信用证,进而也表明第三端口所在的第二链路此时处于非拥塞状态。
当第二链路处于非拥塞状态时,第一节点和第二节点正好可以利用第二链路来传输数据,这样就提高了数据传输的效率,并且鉴权了第一链路的压力,进而均衡了负载,使得系统运行平稳。
而当第二链路也处于拥塞状态时,为了保证数据正常传输,发送端CPU仍然选择路由表中的第一链路来传输数据,即当路由表中的两条链路均处于拥塞状态时,仍然选择通过原来固定链路,即第一链路传输数据。
为了说明上述技术方案,下面将通过一个具体的例子来说明,在具体实现过程中,包括但不限于以下例子。
请参考图5,假设发送端CPU为CPU0,接收端CPU为CPU29。在CPU0的路由表中存储有接收端为CPU29时的第一链路和第二链路,其中第一链路如图3中实线所示,依次经过CPU0,NC0,NC6,CPU29的链路,第二链路如图3中虚线所示,依次经过CPU0,NC1,NC7,CPU29的链路。CPU0首先从NI信用证监控模块中获取第一节点每一个端口的信用证使用状态,假设第一端口的信用证状态为用尽状态,则表明第一链路此时处于拥塞状态,那么CPU0根据路由表,选择通过第二链路传输数据。那么,CPU0中的数据经过NC0和NC7传输到CPU29。
进一步,根据第三端口的信用证状态,假设为未用尽状态,则表明第二链路此时处于非拥塞状态,那么CPU0即可通过第二链路开始向CPU29传输数据。由于第二链路非拥塞,因此CPU0中的数据可以迅速到达CPU29中。
再假设第三端口的信用证为用尽状态,则表明此时第二链路也处于拥塞状态,那么CPU0则将待传输的数据在第一链路中排队,等待第一链路传输。
本申请第二方面,提供了一种节点间传输数据的系统,如图6所示,包括:
NI信用证监控模块101,用于向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;
确定模块102,用于根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;
传输模块103,用于通过不同于所述第一链路的第二链路在所述第一节点和所述第二节点之间传输数据。
可选的,所述系统还包括:
判断模块,用于所述确定模块根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态之后,根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态;
传输模块103用于当所述第二链路处于非拥塞状态时,通过所述第二链路在所述第一节点和所述第二节点之间传输数据。
进一步,传输模块103还用于:
在所述判断模块根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态之后,当所述第二链路处于所述拥塞状态时,通过所述第一链路在所述第一节点和所述第二节点之间传输数据。
其中,NI信用证监控模块101还用于在向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态之前,获得所述第一链路包括的第一端口的已使用信用证数量;
在所述已使用信用证数量等于所述第一端口的可使用阈值时,确定所述第一端口的所述信用证状态具体为用尽状态;
其中,当所述第一端口的所述信用证状态具体为所述用尽状态时,表明所述第一链路处于所述拥塞状态;
所述第一端口为所述第一节点的端口,第一链路还包括所述第二节点的第二端口。
本申请第三方面提供了一种电子设备。图7所示的电子设备涉及到的术语的含义以及具体实现,可以参考前述图1至图6以及实施例的相关描述。
请参考图7所示,该电子设备包括:
发送端CPU201;
接收端CPU202;
NI信用证监控模块203,用于向所述发送端CPU201发送所述发送端CPU201所在的第一节点的每一个端口的信用证使用状态;
所述发送端CPU201根据所述信用证使用状态,确定所述接收端CPU202所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;
所述发送端CPU201通过不同于所述第一链路的第二链路在所述第一节点和所述第二节点之间传输数据。
可选的,发送端CPU201还用于:
在根据所述信用证使用状态,确定所述接收端CPU202所在的第二节点与所述第一节点之间的第一链路处于拥塞状态之后,根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态;
当所述第二链路处于非拥塞状态时,通过所述第二链路在所述第一节点和所述第二节点之间传输数据。
进一步,发送端CPU201还用于:
在根据所述信用证使用状态,判断所述第二链路是否处于所述拥塞状态之后,当所述第二链路处于所述拥塞状态时,通过所述第一链路在所述第一节点和所述第二节点之间传输数据。
其中,NI信用证监控模块203还用于:
在向所述发送端CPU201发送所述发送端CPU201所在的第一节点的每一个端口的信用证使用状态之前,获得所述第一链路包括的第一端口的已使用信用证数量;
在所述已使用信用证数量等于所述第一端口的可使用阈值时,确定所述第一端口的所述信用证状态具体为用尽状态;
其中,当所述第一端口的所述信用证状态具体为所述用尽状态时,表明所述第一链路处于所述拥塞状态;
所述第一端口为所述第一节点的端口,第一链路还包括所述第二节点的第二端口。
其中,发送端CPU可以为32P系统中的任一CPU,接收端CPU可以为32P系统中,除发送端CPU之外的任一CPU。因此,在本申请实施例中,对发送端CPU和接收端CPU不作具体限制。
下面,请参考图8,本申请实施例中的发送端CPU(接收端CPU)包括:
处理器302,用于控制发送端CPU(接收端CPU)。
其中,在图8中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口306在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
前述实施例中描述的节点间数据传输过程的各种变化方式和具体实例同样适用于本实施例的电子设备,通过前述对节点间数据传输方法和节点间数据传输系统执行过程的详细描述,本领域技术人员可以清楚的知道本实施例中电子设备的实施方法,所以为了说明书的简洁,在此不再详述。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
首先,NI信用证监控模块向发送端CPU发送所述发送端CPU所在的第一节点的每一个端口的信用证使用状态;然后,所述发送端CPU根据所述信用证使用状态,确定接收端CPU所在的第二节点与所述第一节点之间的第一链路处于拥塞状态;最后,所述第一节点和所述第二节点通过不同于所述第一链路的第二链路传输数据。所以,在第一节点和第二节点间第一链路拥塞时,节点间数据不再需要拥堵在第一链路上,排队等待传输,而是通过第二链路将第一节点的数据传输到第二节点。因此,实现了合理选择节点间链路来传输数据的技术效果,减轻了传输链路的压力,提高数据传输效率,从而保持业务平稳运行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。