CN112953835A - 数据传输方法、装置及系统 - Google Patents
数据传输方法、装置及系统 Download PDFInfo
- Publication number
- CN112953835A CN112953835A CN202110066737.3A CN202110066737A CN112953835A CN 112953835 A CN112953835 A CN 112953835A CN 202110066737 A CN202110066737 A CN 202110066737A CN 112953835 A CN112953835 A CN 112953835A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- online state
- routing table
- user request
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/14—Routing performance; Theoretical aspects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种数据传输方法、装置及系统,所述方法包括:获取用户请求;根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,其中,所述路由表根据多个状态节点生成,所述路由表在生成后被发送至所述路由集群和所述在线状态节点;检测所述在线状态节点返回的操作信息,其中,所述操作信息在所述在线状态节点接收的所述用户请求中的数据与所述路由表的信息不一致时生成;当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种数据传输方法、装置及系统。
背景技术
在应用于游戏架构的分布式系统中,当接收到用户请求时,为提高处理效率,会将用户请求通过路由集群转发至对应的节点中进行处理。但是这种处理方式由于传输路径较长或节点状态变动,会出现当数据发送到对应节点以外的节点时,节点无法识别接收到的数据是否为与该节点对应的数据就进行处理,进而导致数据与节点匹配出错,数据处理出现混乱。因此这种方式大大降低了对用户请求的执行效率。
发明内容
本申请的目的在于至少解决现有技术中存在的技术问题之一,提供一种数据传输方法、装置以及电子设备,在节点宕机情况下,保证用户请求的执行效率和高可靠性。
本申请实施例提供一种数据传输方法,包括:
获取用户请求;
根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,其中,所述路由表根据多个状态节点生成,所述路由表在生成后被发送至所述路由集群和所述在线状态节点;
检测所述在线状态节点返回的操作信息,其中,所述操作信息在所述在线状态节点接收的所述用户请求中的数据与所述路由表的信息不一致时生成;
当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点。
进一步的,所述根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点之前,还包括:
检测多个状态节点的运行数据,根据所述运行数据确定所述多个状态节点中的在线状态节点;
根据多个所述在线状态节点构建路由表。
进一步的,所述根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,包括:
对所述用户请求中的数据进行分片处理,获取多个分片数据;
根据各所述分片数据的哈希值,确定各所述分片数据在所述路由表中对应的所述在线状态节点;
根据路由表将各所述分片数据通过路由集群发送至对应的所述在线状态节点。
进一步的,所述根据各所述分片数据的哈希值,确定各所述分片数据在所述路由表中对应的所述在线状态节点,包括:
根据各所述分片数据的哈希值,采用哈希槽算法确定对应的所述在线状态节点。
进一步的,所述检测多个状态节点的运行数据,根据所述运行数据确定所述多个状态节点中的在线状态节点,包括:
定时向多个状态节点发送数据包,根据所述数据包的响应情况确定所述在线状态节点。
进一步的,在所述当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点之后,包括:
检测所述在线状态节点发送的确认信息,根据所述路由表向未发送所述确认信息的所述在线状态节点重新传输对应的所述用户请求中的数据。
进一步的,所述根据所述路由表向未发送所述确认信息的所述在线状态节点重新传输对应的所述用户请求中的数据,包括:
检测未发送所述确认信息的所述在线状态节点丢失的数据;
根据所述路由表将所述丢失的数据重新传输到对应的未发送所述确认信息的所述在线状态节点中。
进一步的,所述检测未发送所述确认信息的所述在线状态节点丢失的数据,包括:
根据数据库中存储的未发送所述确认信息的所述在线状态节点接收到的用户请求中的数据和所述路由表确认丢失的数据。
进一步的,在本申请实施例中,还提供了一种数据传输装置,包括:
请求获取模块,用于获取用户请求;
数据调度模块,用于根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,其中,所述路由表根据多个状态节点生成,所述路由表在生成后被发送至所述路由集群和所述在线状态节点;
数据传输模块,用于检测所述在线状态节点返回的操作信息,其中,所述操作信息在所述在线状态节点接收的所述用户请求中的数据与所述路由表的信息不一致时生成;
当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点。
进一步的,在本申请实施例中,还提供了一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的数据传输方法。
进一步的,在本申请实施例中,还提供了一种数据传输系统,包括路由集群,由多个节点组成的节点集群,以及如上述实施例所述的服务器,所述路由集群以及各所述节点与所述服务器连接。
进一步的,本申请实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的数据传输方法。
进一步的,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上述实施例所述的数据传输方法。
相比于现有技术,上述实施例生成路由表将路由表发送至路由集群和在线状态节点,并且根据路由表将用户请求的数据发送到在线状态节点中,检测在线状态节点接收的用户请求的数据与路由表的信息是否一致,不一致时状态节点返回操作信息,服务器根据操作信息重新发送用户请求的数据到对应在线状态节点中,使得当数据发送到对应节点以外的节点时,节点能够根据路由表和数据的对应关系来识别接收到的数据是否为与该节点对应的数据,能够避免数据与节点匹配出错导致数据处理出现混乱,大大提升了对用户请求的执行效率。
上述实施例通过检测多个状态节点的运行数据来确定在线状态节点,并根据在线状态节点来构建路由表,使得路由表中能够只包含在线状态节点,不包含非在线状态的节点,能够减少路由表的数据量并且降低路由表中用户请求的数据与在线状态节点对应出错的风险。
上述实施例对用户请求的数据进行分片处理得到分片数据,能够减小转发数据的数据量,提高传输效率,并且通过分片数据的哈希值确定该分片数据对应的在线状态节点,能够快速确定在线状态节点和对应的分片数据。
上述实施例通过哈希槽算法来确定各分片数据对应的在线状态节点,能够更加方便地对在线状态节点进行添加或移除。
上述实施例通过定时发送向状态节点发送数据包来感知状态节点是否在线,能够准确地确定在线状态节点。
上述实施例通过检测在线状态节点是否发送确认信息来判断在线状态节点是否出现丢包,能够有效地避免丢包情况导致在线状态节点的数据无法被正常及时地处理,大大提升了对分片数据的执行效率。
上述实施例通过检测丢包的在线状态节点中所丢失的数据,并重新传输丢失的数据到对应的在线状态节点中,能够避免对分片数据进行全部重新传输,实时性更强。
上述实施例通过数据库的记录的在线状态节点接收到的分片数据和路由表中完整的分片数据信息进行比较来确认丢失的数据,能够快速准确地确认丢失的数据,从而更好地对丢失的数据进行重新传输。
附图说明
下面结合附图和实施例对本申请进一步地说明;
图1为一个实施例中数据传输方法的应用环境图;
图2为一个实施例中数据传输方法的流程示意图;
图3为一个实施例中数据传输装置的结构框图;
图4为一个实施例中服务器的结构框图;
图5为一个实施例中计算机设备的结构框图;
图6为一个实施例中数据传输系统的结构框图。
具体实施方式
本部分将详细描述本申请的具体实施例,本申请之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本申请的每个技术特征和整体技术方案,但其不能理解为对本申请保护范围的限制。
在应用于游戏架构的分布式系统中,当接收到用户请求时,为提高处理效率,会将用户请求通过路由集群转发至对应的节点中进行处理。但是这种处理方式由于传输路径较长或节点状态变动,会出现当数据发送到对应节点以外的节点时,节点无法识别接收到的数据是否为与该节点对应的数据就进行处理,进而导致数据与节点匹配出错,数据处理出现混乱。因此这种方式大大降低了对用户请求的执行效率。基于游戏架构的分布式系统,包括多个进程,各个进程分布在不同的物理服务器上。路由集群为多台普通核心路由器通过某种方式连接,共同组成的一个多级多平面的交换矩阵系统,并且路由集群对外只表现为一个逻辑路由器。节点为能够对用户请求进行接收并且对用户请求中的数据进行处理的服务器或者服务器集群。节点状态变动,可以为节点由上线状态变为断线状态,或者由断线状态变为上线状态。当节点处于断线状态时,无法接收用户请求也无法对用户请求中的数据进行处理。因此,当节点状态变动时,用户请求被发送到的节点可能无法接收导致用户请求被发送到其他节点,使得数据处理混乱。或者当路由集群到节点的路径较长时,更新后的数据未发送到节点,节点便对更新前的数据进行处理,也使得数据处理混乱。
为了解决上述技术问题,如图1所示,是一个实施例中数据传输方法的应用环境图。参照图1,该数据传输系统包括状态管理服务器110和状态节点服务器120。状态管理服务器110和状态节点服务器120通过网络连接。状态管理服务器110和状态节点服务器120均可以用独立的服务器120或者是多个服务器120组成的服务器120集群来实现。状态管理服务器110在确定处于在线状态的状态节点服务器120以及构建路由表之后,将路由表发送至路由集群和处于在线状态的状态节点服务器120,并且根据路由表将用户请求的数据发送到处于在线状态的状态节点服务器120,检测处于在线状态的状态节点服务器120接收的用户请求的数据与路由表的信息是否一致,不一致时处于在线状态的状态节点服务器120返回操作信息,状态管理服务器110根据操作信息重新发送用户请求的数据到对应的处于在线状态的状态节点服务器120。
下面,将通过几个具体的实施例对本申请实施例提供的数据传输方法进行详细介绍和说明。
如图2所示,在一个实施例中,提供了一种数据传输方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的状态管理服务器110。
参照图2,该数据传输方法具体包括如下步骤:
S11、获取用户请求。
在本实施例中,状态管理服务器接收用户输入的用户请求,用户请求数量可以为一个或者多个,各个用户请求中均携带有原始数据集,其中,对于原始数据集的格式及内容不作具体限定。用户请求可以为一个数据包或者文件,其中包含了所要进行处理的原始数据集。
S12、根据路由表将用户请求中的数据通过路由集群发送至在线状态节点,其中,路由表根据多个状态节点生成,路由表在生成后被发送至路由集群和在线状态节点。
在本实施例中,状态管理服务器根据多个状态节点来构建路由表。其中,路由表可以为文件或者数据包的形式,路由表中记录有状态节点,具体可以通过记录状态节点的地址、编号或者标识等来进行记录。
在本实施例中,路由表将多个状态节点记录到路由表中,并且确定路由表中记录的多个状态节点中的在线节点,具体通过检测多个状态节点的运行数据来确定状态节点是否处于在线状态。其中,状态节点的运行数据可以为特定的数据段或者特定的数据或者特定的参数。状态节点的运行数据的获取可以通过其他服务器对状态节点的运行数据进行监控,将显示状态节点处于在线或断线状态的运行数据发送到状态管理服务器中,或者,状态管理服务器自行对状态节点的运行数据进行监控并进行获取。例如,状态节点处于在线状态时,运行数据为111,状态节点处于断线状态时,运行数据为000。状态管理服务器或者其他服务器可以对状态节点1的运行数据进行实时监控或者每个时间段的监控,根据当前时刻或者当前时间段中该运行数据为111或者000来确定状态节点1处于在线状态或者处于断线状态。确定多个在线状态节点中的在线节点后,状态管理服务器可以通过标识方式对路由表中对在线状态节点进行标记。
路由表中标记的在线状态节点与用户请求中的数据之间存在的一一对应的关系,即不处于在线状态的节点与用户请求中的数据无对应关系。其中,该对应关系随着在线状态节点数量的变化可以随之变化,例如,采用在线状态节点有5个,编号分别为0、1、2、3、4,对用户请求中的数据[0,50]划定数据5个或以上的数据范围,如[0,10)、[10,20)、[20,30)、[30,40)、[40,50],可以将不同数据范围对应不同编号的在线状态节点。在路由表中标记的在线状态节点中,将范围[0,10)的数据对应编号0的在线状态节点、将范围[10,20)的数据对应编号1的在线状态节点、将范围[20,30)的数据对应编号2的在线状态节点、将范围[30,40)的数据对应编号3的在线状态节点、将范围[40,50]的数据对应编号4的在线状态节点。并且,当在线状态节点数量发生变化时,路由表中标记的在线状态节点与用户请求中的数据的对应关系也发生变化,例如,在线状态节点数量从5个变为了4个,编号分别为0、1、2、3,在路由表之前标记的在线状态节点中,范围[0,10)的数据对应编号0的在线状态节点、范围[10,20)的数据对应编号1的在线状态节点、范围[20,30)的数据对应编号2的在线状态节点、范围[30,40)的数据对应编号3的在线状态节点、范围[40,50]的数据对应编号4的在线状态节点。此时,由于在线状态节点数量发生了变化,因此在路由表中,对在线状态节点的标记情况也需要进行更新。在路由表中更新标记后的标记的在线状态节点中,可以将范围[40,50]的数据对应编号4的在线状态节点的对应关系,变为将范围[40,50]的数据对应编号3的在线状态节点。在本实施例中构建的路由表中,包含有在线状态节点,在线状态节点可以以编号或者标识或者地址的形式记录在路由表中。
状态管理服务器根据路由表中标记的在线状态节点与用户请求中的数据的对应关系,将用户请求中的数据通过路由集群发送至在线状态节点。
在本实施例中,状态管理服务器可以将路由表分别直接发送到路由集群和在线状态节点中,还可以将路由表分别通过其他路由集群或者服务器发送到路由集群和在线状态节点中。状态管理服务器根据路由表中用户请求中的数据和在线状态节点的对应关系,将用户请求中的数据通过路由集群发送到对应的在线状态节点中。
在一个实施例中,根据路由表将用户请求中的数据通过路由集群发送至在线状态节点之前,还包括:
检测多个状态节点的运行数据,根据运行数据确定多个状态节点中的在线状态节点;
根据多个在线状态节点构建路由表。
在本实施例中,状态管理服务器先根据运行数据确定状态节点中的在线状态节点,并根据在线状态节点来构建路由表。其中,在线状态节点为处于在线状态的状态节点,在线状态为状态节点能够对数据进行处理的状态,反之,可以认为状态节点不能对数据进行处理时,处于断线状态。其中,状态管理服务器110为用于感知状态节点上下线,为状态节点提供路由表和数据,并发送到路由集群和状态节点的服务器或者服务器集群。状态节点即为状态节点服务器120,与状态管理服务器和路由集群进行交互的,对用户请求中的数据进行接收和处理的服务器或者服务器集群。
在本实施例中,状态节点的运行数据可以为特定的数据段或者特定的数据或者特定的参数。状态节点的运行数据的获取可以通过其他服务器对状态节点的运行数据进行监控,将显示状态节点处于在线或断线状态的运行数据发送到状态管理服务器中,或者,状态管理服务器自行对状态节点的运行数据进行监控并进行获取。例如,状态节点处于在线状态时,运行数据为111,状态节点处于断线状态时,运行数据为000。状态管理服务器或者其他服务器可以对状态节点1的运行数据进行实时监控或者每个时间段的监控,根据当前时刻或者当前时间段中该运行数据为111或者000来确定状态节点1处于在线状态或者处于断线状态。
在本实施例中,状态管理服务器根据确定的在线状态节点来构建路由表,其中,路由表可以为文件或者数据包的形式,路由表中记录有处于在线状态的节点,具体可以通过记录在线状态节点的地址、编号或者标识等来进行记录。
在本实施例中,通过检测多个状态节点的运行数据来确定在线状态节点,并根据在线状态节点来构建路由表,使得路由表中能够只包含在线状态节点,不包含非在线状态的节点,能够减少路由表的数据量并且降低路由表中用户请求的数据与在线状态节点对应出错的风险。
在一个实施例中,根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,包括:
对用户请求中的数据进行分片处理,获取多个分片数据;
根据各分片数据的哈希值,确定各分片数据在路由表中对应的在线状态节点;
根据路由表将各分片数据通过路由集群发送至对应的在线状态节点。
在本实施例中,状态管理服务器对接收用户请求后,对用户请求中的原始数据集进行分片处理,得到多个分片数据。其中,分片处理即对用户请求中的原始数据集进行拆分,用户请求后的原始数据集拆分后的各组数据即为分片数据,例如1-100这一百个数,可以将其分片处理为十组,每组包含10个数,每组即为一个分片数据。
状态服务器根据各分片数据的哈希值,确定对应的在线状态节点。在本实施例中,对于多个分片数据的哈希值,可以通过哈希算法进行计算得到,其中,哈希算法可以为MD4、MD5、SHA-1等。哈希值计算方式以及哈希算法的选择较为常见,在本实施例中不再赘述。
计算得到哈希值后,可以采用hash方式、一致性hash等方式确定对应的在线状态节点。例如,采用hash方式,节点集群中共有三个在线状态节点,分别为node0、node1、node2,分片数据共有五个,分别计算得到的哈希值为247、760、903、533、302,对计算得到的哈希值对在线状态节点个数N=3进行取余,余数表示该哈希值对应的分片数据在三个在线状态节点中的位置。因此,可见node0中有哈希值903对应的分片数据,node1中有247、760对应的分片数据,node2中有533、302对应的分片数据。
在本实施例中,路由表中记录的在线状态节点与分片数据之间存在的一一对应的关系,该对应关系随着在线状态节点数量的变化可以随之变化,例如,采用在线状态节点有5个,编号分别为0、1、2、3、4,对用户请求中的数据[0,50]划定数据5个或以上的数据范围,如[0,10)、[10,20)、[20,30)、[30,40)、[40,50],可以将不同数据范围对应不同编号的在线状态节点。在构建的路由表中记录的在线状态节点中,将范围[0,10)的数据对应编号0的在线状态节点、将范围[10,20)的数据对应编号1的在线状态节点、将范围[20,30)的数据对应编号2的在线状态节点、将范围[30,40)的数据对应编号3的在线状态节点、将范围[40,50]的数据对应编号4的在线状态节点。并且,当在线状态节点数量发生变化时,构建的路由表中记录的在线状态节点与分片数据的对应关系也发生变化,例如,在线状态节点数量从5个变为了4个,编号分别为0、1、2、3,在之前构建的路由表记录的在线状态节点中,范围[0,10)的数据对应编号0的在线状态节点、范围[10,20)的数据对应编号1的在线状态节点、范围[20,30)的数据对应编号2的在线状态节点、范围[30,40)的数据对应编号3的在线状态节点、范围[40,50]的数据对应编号4的在线状态节点。此时,由于在线状态节点数量发生了变化,因此根据新的在线状态节点构建新的路由表,具体可以通过记录新的在线状态节点的地址、编号或者标识等来进行记录。在构建的新的路由表中记录的在线状态节点中,可以将范围[40,50]的数据对应编号4的在线状态节点的对应关系,变为将范围[40,50]的数据对应编号3的在线状态节点。在本实施例中构建的路由表中,包含有在线状态节点,在线状态节点可以以编号或者标识或者地址的形式记录在路由表中。
在本实施例中,对用户请求的数据进行分片处理得到分片数据,能够减小转发数据的数据量,提高传输效率,并且通过分片数据的哈希值确定该分片数据对应的在线状态节点,能够快速确定在线状态节点和对应的分片数据。
在一个实施例中,根据各分片数据的哈希值,确定对应的在线状态节点,包括:
根据各分片数据的哈希值,采用哈希槽算法确定对应的在线状态节点。
在本实施例中,状态管理服务器将虚拟出的槽位分别映射到各个在线状态节点上,其中,槽位数量不做具体限定,并且槽位可以平均分配到各个在线状态节点上,也可以按照用户自己的规则手动去分配槽位。例如,共有16384个槽位和3个在线状态节点,按照平均分配规则对槽位进行分配,其中,在线状态节点1的槽位区间范围为0-5460,在线状态节点2的槽位区间范围为5461-10922,在线状态节点3的槽位区间范围为10923-16383。确定分片数据与在线状态节点的对应关系时,通过获取各分片数据的哈希值,可以通过对分片数据进行现有哈希运算得到,然后取模槽位数量,判断哈希值在哪个在线状态节点的范围区间。例如,数据哈希值为19729,取模16384的结果为3345,而3345在区间0-5460之间,所以哈希值为19729的数据对应在线状态节点1。
在本实施例中,通过哈希槽算法来确定各分片数据对应的在线状态节点,能够更加方便地对在线状态节点进行添加或移除。
在一个实施例中,检测多个状态节点的运行数据,根据运行数据确定多个状态节点中的在线状态节点,包括:
定时向多个状态节点发送数据包,根据数据包的响应情况确定在线状态节点。
在本实施例中,状态管理服务器与状态节点和路由集群之间的通讯协议为基于tcp的长连接协议。状态管理服务器检测状态节点的运行数据,可以通过定时向状态节点发送keepalive数据包,用于感知状态节点处于上线还是断线。
其中,keepalive数据包为tcp协议中的探测包,用于探测连接的对端是否在线。
在本实施例中,通过定时发送向状态节点发送数据包来感知状态节点是否在线,能够准确地确定在线状态节点。
S13、检测在线状态节点返回的操作信息,其中,操作信息在在线状态节点接收的用户请求中的数据与路由表的信息不一致时生成。
在本实施例中,状态管理服务器对被发送了用户请求中的数据的在线状态节点进行检测,检测被发送了用户请求中的数据的在线状态节点是否有返回操作信息。其中,当上述在线节点接收的用户请求中的数据与路由表的信息不一致时,可能是由于用户请求中的数据传输较快而新的路由表传输较慢导致不一致,还可能是由于用户请求中的数据传输较慢而新的路由表传输较快导致不一致,此时,接收的用户请求中的数据与路由表的信息不一致的在线状态节点发送操作信息到状态管理服务器中,接收的用户请求中的数据与路由表的信息一致的在线状态节点则不发送操作信息到状态管理服务器中。操作信息可以为数据包或者数据串或者指令形式,操作信息中可以包含在线状态节点的地址或者标识,例如,操作信息具体为“notmatch-n1”,表示n1在线状态节点接收的用户请求中的数据和路由表的信息不一致。
S14、当接收到操作信息时,根据路由表将用户请求中的数据重新传输到发送操作信息的在线状态节点。
在本实施例中,状态管理服务器检测到操作信息后,确定发送操作信息的在线状态节点,其中,状态管理服务器可以根据操作信息中的包含的在线状态节点的地址或者标识确定发送该操作信息的在线状态节点,还可以直接检测在线状态节点,当一个或多个在线状态节点发送操作信息时,即可直接确定发送操作信息的在线状态节点。
状态管理服务器确定发送操作信息的在线状态节点后,根据路由表中在线状态节点对应的用户请求中的数据,状态管理服务器将对应的用户请求中的数据重新传输到对应的在线状态节点中。其中,重新传输的方式可以为通过路由集群发送到在线状态节点中,还可以为直接发送到在线状态节点中。
在一个实施例中,在当接收到操作信息时,根据路由表将用户请求中的数据重新传输到发送操作信息的在线状态节点之后,包括:
检测在线状态节点发送的确认信息,根据路由表向未发送确认信息的在线状态节点重新传输对应的用户请求中的数据。
在本实施例中,状态管理服务器检测各个在线状态节点发送的确认信息,其中,确认信息为在线状态节点将接收到的用户请求中的数据与状态管理服务器要发送到在线状态节点对应的用户请求中的数据相比,是否完整,是否出现丢包情况。当数据完整时,对应的在线状态节点则发送确认信息到状态管理服务器中;当数据不完整时,对应的在线状态节点则不发送确认信息到状态管理服务器中。确认信息可以为数据包或者数据串或者指令形式,确认信息中可以包含在线状态节点的地址或者标识,例如,确认信息具体为“confirm-n1”,表示n1在线状态节点接收的用户请求中的数据完整,未出现丢包情况。
状态管理服务器检测到确认信息后,确定发送确认信息的在线状态节点,其中,状态管理服务器可以根据确认信息中的包含的在线状态节点的地址或者标识确定发送该确认信息的在线状态节点,还可以直接检测在线状态节点,当一个或多个在线状态节点发送确认信息时,即可直接确定发送确认信息的在线状态节点。根据路由表中记录的在线状态节点以及确定的发送确认信息的在线状态节点,状态管理服务器即可确定未发送确认信息的在线状态节点。状态管理服务器确定好未发送的在线状态节点后,根据路由表中记录的未发送确认信息的在线状态节点和对应的用户请求中的数据,重新传输对应的用户请求中的数据到未发送确认信息的在线状态节点中。例如,三个在线状态节点0、1、2中,状态管理服务器检测到在线状态节点0和1均发送了确认信息,在线状态节点2仅接收到数据abc,而路由表中在线状态节点2对应的用户请求中的数据为abcd,因此在线状态节点2并未发送确认信息,此时状态管理服务器将数据abcd通过路由集群重新传输到在线状态节点2中。
在本实施例中,当状态管理服务器与路由集群和状态节点之间的通讯协议为基于tcp的长连接协议时,tcp在在线状态节点丢包时会自动重传。为避免数据无法被正常处理,在数据传输至在线状态节点的过程中采用确认机制,如果状态管理服务器收到确认信息,则认为数据被正确处理,否则会做重传处理。如果对数据的可靠性要求低,实时性要求高,状态管理服务器可以不开启这个确认机制。
在本实施例中,通过检测在线状态节点是否发送确认信息来判断在线状态节点是否出现丢包,能够有效地避免丢包情况导致在线状态节点的数据无法被正常及时地处理,大大提升了对分片数据的执行效率。
在一个实施例中,根据路由表向未发送确认信息的在线状态节点重新传输对应的用户请求中的数据,包括:
检测未发送确认信息的在线状态节点丢失的数据;
根据路由表将丢失的数据重新传输到对应的未发送确认信息的在线状态节点中。
在本实施例中,状态管理服务器先检测各个在线状态节点发送的确认信息,其中,确认信息为在线状态节点将接收到的用户请求中的数据与状态管理服务器要发送到在线状态节点对应的用户请求中的数据相比,是否完整,是否出现丢包情况。当数据完整时,对应的在线状态节点则发送确认信息到状态管理服务器中;当数据不完整时,对应的在线状态节点则不发送确认信息到状态管理服务器中。状态管理服务器检测到确认信息后,确定发送确认信息的在线状态节点,并根据路由表中记录的在线状态节点以及确定的发送确认信息的在线状态节点,确定未发送确认信息的在线状态节点。状态管理服务器检测未发送确认信息的在线状态节点丢失的数据,具体检测方式可以为状态管理服务器遍历各未发送确认信息的在线状态节点,将该在线状态节点接收到的用户请求中的数据与路由表中记录的对应的用户请求的数据相比较,确定丢失的数据部分。例如,状态管理服务器遍历在线状态节点2,检测到在线状态节点2接收到的数据为abc,而路由表中在线状态节点2对应的数据为abcd,可以得知在线状态节点2丢失的数据为d。具体检测方式还可以为状态管理服务器让未发送确认信息的在线状态节点返回接收到的用户请求中的数据,再将该数据与路由表中对应的数据相比较,确定丢失的数据。例如,状态管理服务器命令在线状态节点2,返回接收到的数据,该数据为abc,而路由表中在线状态节点2对应的数据为abcd,可以得知在线状态节点2丢失的数据为d。
状态管理服务器确定未发送确认信息的在线状态节点丢失的数据后,根据路由表中记录的未发送确认信息的在线状态节点和对应的用户请求中的数据,将丢失的数据重新传输到对应的未发送确认信息的在线状态节点中。例如,状态管理服务器确认在线状态节点2丢失的数据为d,路由表中记录的在线状态节点2及对应的数据abcd,状态管理服务器根据该路由表中的对应关系将数据d传输到状态节点2中。
在本实施例中,通过检测丢包的在线状态节点中所丢失的数据,并重新传输丢失的数据到对应的在线状态节点中,能够避免对分片数据进行全部重新传输,实时性更强。
在一个实施例中,检测未发送确认信息的在线状态节点丢失的数据,包括:
根据数据库中存储的未发送确认信息的在线状态节点接收到的用户请求中的数据和路由表确认丢失的数据。
在本实施例中,在线状态节点接收到用户请求中的数据后,将该数据存储到数据库中,其中,数据库可以为各在线状态节点中的数据库,也可以为其他服务器中的数据库。将用户请求中的数据存储到数据库中,可以直接存储到数据库中,也可以将用户请求中的数据复制备份到数据库中。
状态管理服务器确定未发送确认信息的在线状态节点后,将数据库中存储的未发送确认信息的在线状态节点对应的用户请求中的数据,和路由表中记录的未发送确认信息的在线状态节点对应的用户请求中的数据相比较,确认丢失的数据。例如,在线状态节点2接收到的数据为abc并复制存储到其他服务器的数据库中,路由表中在线状态节点2对应的数据为abcd,状态管理服务器根据这两组数据可以得知在线状态节点2丢失的数据为d。
在本实施例中,通过数据库的记录的在线状态节点接收到的分片数据和路由表中完整的分片数据信息进行比较来确认丢失的数据,能够快速准确地确认丢失的数据,从而更好地对丢失的数据进行重新传输。
在上述实施例中,生成路由表将路由表发送至路由集群和在线状态节点,并且根据路由表将用户请求的数据发送到在线状态节点中,检测在线状态节点接收的用户请求的数据与路由表的信息是否一致,不一致时状态节点返回操作信息,服务器根据操作信息重新发送用户请求的数据到对应在线状态节点中,使得当数据发送到对应节点以外的节点时,节点能够根据路由表和数据的对应关系来识别接收到的数据是否为与该节点对应的数据,能够避免数据与节点匹配出错导致数据处理出现混乱,大大提升了对用户请求的执行效率。
在一个实施例中,如图3所示,提供了一种数据传输装置,包括:
请求获取模块101,用于获取用户请求。
数据调度模块102,用于根据路由表将用户请求中的数据通过路由集群发送至在线状态节点,其中,路由表根据多个状态节点生成,路由表在生成后被发送至路由集群和在线状态节点。
数据传输模块103,用于检测在线状态节点返回的操作信息,其中,操作信息在在线状态节点接收的用户请求中的数据与路由表的信息不一致时生成;
当接收到操作信息时,根据路由表将用户请求中的数据重新传输到发送操作信息的在线状态节点。
在一个实施例中,数据调度模块102,还用于:
根据路由表将用户请求中的数据通过路由集群发送至在线状态节点之前,检测多个状态节点的运行数据,根据运行数据确定多个状态节点中的在线状态节点;
根据多个在线状态节点构建路由表。
在一个实施例中,数据调度模块102,还用于:
对用户请求中的数据进行分片处理,获取多个分片数据;
根据各分片数据的哈希值,确定各分片数据在路由表中对应的在线状态节点;
根据路由表将各分片数据通过路由集群发送至对应的在线状态节点。
在一个实施例中,数据调度模块102,还用于:
根据各分片数据的哈希值,采用哈希槽算法确定对应的在线状态节点。
在一个实施例中,数据调度模块102,还用于:
定时向多个状态节点发送数据包,根据数据包的响应情况确定在线状态节点。
在一个实施例中,数据传输模块103,还用于:
在当接收到操作信息时,根据路由表将用户请求中的数据重新传输到发送操作信息的在线状态节点之后,检测在线状态节点发送的确认信息,根据路由表向未发送确认信息的在线状态节点重新传输对应的用户请求中的数据。
在一个实施例中,数据传输模块103,还用于:
检测未发送确认信息的在线状态节点丢失的数据。
根据路由表将丢失的数据重新传输到对应的未发送确认信息的在线状态节点中。
在一个实施例中,数据传输模块103,还用于:
根据数据库中存储的未发送确认信息的在线状态节点接收到的用户请求中的数据和路由表确认丢失的数据。
在一个实施例中,提供了一种服务器,如图4所示,该服务器包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的数据传输方法。
在一个实施例中,提供了一种计算机设备,如图5所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现数据传输方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行数据传输方法。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的数据传输装置可以实现为一种计算机程序的形式,计算机程序可在如图5所示的计算机设备上运行。计算机设备的存储器中可存储组成该数据传输装置的各个程序模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的数据传输方法中的步骤。
在一个实施例中,提供了一种数据传输系统,如图6所示,该数据传输系统包括路由集群,由多个节点组成的节点集群,以及如上述实施例所述的服务器,所述路由集群以及各所述节点与所述服务器连接。
在一个实施例中,提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时执行上述数据传输方法的步骤。此处数据传输方法的步骤可以是上述各个实施例的数据传输方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述数据传输方法的步骤。此处数据传输方法的步骤可以是上述各个实施例的数据传输方法中的步骤。
以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (11)
1.一种数据传输方法,其特征在于,包括:
获取用户请求;
根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,其中,所述路由表根据多个状态节点生成,所述路由表在生成后被发送至所述路由集群和所述在线状态节点;
检测所述在线状态节点返回的操作信息,其中,所述操作信息在所述在线状态节点接收的所述用户请求中的数据与所述路由表的信息不一致时生成;
当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点。
2.根据权利要求1所述的数据传输方法,其特征在于,所述根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点之前,还包括:
检测多个状态节点的运行数据,根据所述运行数据确定所述多个状态节点中的在线状态节点;
根据多个所述在线状态节点构建路由表。
3.根据权利要求1或2所述的数据传输方法,其特征在于,所述根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,包括:
对所述用户请求中的数据进行分片处理,获取多个分片数据;
根据各所述分片数据的哈希值,确定各所述分片数据在所述路由表中对应的所述在线状态节点;
根据路由表将各所述分片数据通过路由集群发送至对应的所述在线状态节点。
4.根据权利要求3所述的数据传输方法,其特征在于,所述根据各所述分片数据的哈希值,确定各所述分片数据在所述路由表中对应的所述在线状态节点,包括:
根据各所述分片数据的哈希值,采用哈希槽算法确定对应的所述在线状态节点。
5.根据权利要求2所述的数据传输方法,其特征在于,所述检测多个状态节点的运行数据,根据所述运行数据确定所述多个状态节点中的在线状态节点,包括:
定时向多个状态节点发送数据包,根据所述数据包的响应情况确定所述在线状态节点。
6.根据权利要求1所述的数据传输方法,其特征在于,在所述当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点之后,包括:
检测所述在线状态节点发送的确认信息,根据所述路由表向未发送所述确认信息的所述在线状态节点重新传输对应的所述用户请求中的数据。
7.根据权利要求6所述的数据传输方法,其特征在于,所述根据所述路由表向未发送所述确认信息的所述在线状态节点重新传输对应的所述用户请求中的数据,包括:
检测未发送所述确认信息的所述在线状态节点丢失的数据;
根据所述路由表将所述丢失的数据重新传输到对应的未发送所述确认信息的所述在线状态节点中。
8.根据权利要求7所述的数据传输方法,其特征在于,所述检测未发送所述确认信息的所述在线状态节点丢失的数据,包括:
根据数据库中存储的未发送所述确认信息的所述在线状态节点接收到的用户请求中的数据和所述路由表确认丢失的数据。
9.一种数据传输装置,其特征在于,包括:
请求获取模块,用于获取用户请求;
数据调度模块,用于根据路由表将所述用户请求中的数据通过路由集群发送至在线状态节点,其中,所述路由表根据多个状态节点生成,所述路由表在生成后被发送至所述路由集群和所述在线状态节点;
数据传输模块,用于检测所述在线状态节点返回的操作信息,其中,所述操作信息在所述在线状态节点接收的所述用户请求中的数据与所述路由表的信息不一致时生成;
当接收到所述操作信息时,根据所述路由表将所述用户请求中的数据重新传输到发送所述操作信息的所述在线状态节点。
10.一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一项所述的数据传输方法。
11.一种数据传输系统,包括路由集群,由多个节点组成的节点集群,以及如权利要求10所述的服务器,所述路由集群以及各所述节点与所述服务器连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110066737.3A CN112953835B (zh) | 2021-01-18 | 2021-01-18 | 数据传输方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110066737.3A CN112953835B (zh) | 2021-01-18 | 2021-01-18 | 数据传输方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112953835A true CN112953835A (zh) | 2021-06-11 |
CN112953835B CN112953835B (zh) | 2023-03-14 |
Family
ID=76236107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110066737.3A Active CN112953835B (zh) | 2021-01-18 | 2021-01-18 | 数据传输方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112953835B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4951281A (en) * | 1987-11-30 | 1990-08-21 | Furukawa Electric Co., Ltd. | Multiplex transmission system |
CN101127783A (zh) * | 2007-09-28 | 2008-02-20 | 北京金山软件有限公司 | 一种网站缓存方法和一种网站缓存的装置 |
US20160112516A1 (en) * | 2013-07-02 | 2016-04-21 | Huawei Technologies Co., Ltd. | Distributed storage system, cluster node and range management method thereof |
CN106059920A (zh) * | 2016-01-28 | 2016-10-26 | 中国电子科技集团公司第十研究所 | 适应空间网络链路断续连通数据传输的路由方法 |
WO2016197858A1 (zh) * | 2015-06-12 | 2016-12-15 | 阿里巴巴集团控股有限公司 | 一种消息通知方法和设备 |
WO2017101503A1 (zh) * | 2015-12-14 | 2017-06-22 | 华为技术有限公司 | 一种数据传送方法、发送节点、接收节点及数据传送系统 |
CN110888735A (zh) * | 2019-11-12 | 2020-03-17 | 厦门网宿有限公司 | 基于一致性哈希的分布式消息分发方法、装置和调度节点 |
CN111343237A (zh) * | 2020-02-07 | 2020-06-26 | 广州亚美信息科技有限公司 | 服务器集群通信的方法、通信装置及计算机存储介质 |
WO2020220641A1 (zh) * | 2019-04-28 | 2020-11-05 | 平安科技(深圳)有限公司 | 基于点对点网络的数据存储方法、装置、介质及服务器 |
-
2021
- 2021-01-18 CN CN202110066737.3A patent/CN112953835B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4951281A (en) * | 1987-11-30 | 1990-08-21 | Furukawa Electric Co., Ltd. | Multiplex transmission system |
CN101127783A (zh) * | 2007-09-28 | 2008-02-20 | 北京金山软件有限公司 | 一种网站缓存方法和一种网站缓存的装置 |
US20160112516A1 (en) * | 2013-07-02 | 2016-04-21 | Huawei Technologies Co., Ltd. | Distributed storage system, cluster node and range management method thereof |
WO2016197858A1 (zh) * | 2015-06-12 | 2016-12-15 | 阿里巴巴集团控股有限公司 | 一种消息通知方法和设备 |
WO2017101503A1 (zh) * | 2015-12-14 | 2017-06-22 | 华为技术有限公司 | 一种数据传送方法、发送节点、接收节点及数据传送系统 |
US20180295555A1 (en) * | 2015-12-14 | 2018-10-11 | Huawei Technologies Co., Ltd. | Data transmission method, sending node, receiving node, and data transmission system |
CN106059920A (zh) * | 2016-01-28 | 2016-10-26 | 中国电子科技集团公司第十研究所 | 适应空间网络链路断续连通数据传输的路由方法 |
WO2020220641A1 (zh) * | 2019-04-28 | 2020-11-05 | 平安科技(深圳)有限公司 | 基于点对点网络的数据存储方法、装置、介质及服务器 |
CN110888735A (zh) * | 2019-11-12 | 2020-03-17 | 厦门网宿有限公司 | 基于一致性哈希的分布式消息分发方法、装置和调度节点 |
CN111343237A (zh) * | 2020-02-07 | 2020-06-26 | 广州亚美信息科技有限公司 | 服务器集群通信的方法、通信装置及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112953835B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2201738B1 (en) | Router detection | |
US9871781B2 (en) | Systems and methods for path maximum transmission unit discovery | |
US5856972A (en) | Duplicate message detection method and apparatus | |
US7461128B2 (en) | Method, apparatus and system for processing message bundles on a network | |
US8493839B2 (en) | Method and system of teamed network adapters with offloaded connections | |
US11398966B2 (en) | Cluster wide packet tracing | |
Shi et al. | NDNLP: A link protocol for NDN | |
US10326681B2 (en) | System and method to analyze route information in a network | |
US20170070383A1 (en) | Reliable isp access cloud state detection method and apparatus | |
CN112291116A (zh) | 链路故障检测方法、装置及网络设备 | |
US7697441B2 (en) | Computer system with black hole management | |
US20080181215A1 (en) | System for remotely distinguishing an operating system | |
CN112953835B (zh) | 数据传输方法、装置及系统 | |
US20090158300A1 (en) | Network redundancy check application program management method | |
CN106559439B (zh) | 一种业务处理方法及设备 | |
CN116155826A (zh) | 报文收发方法、网络设备、系统和存储介质 | |
JP2001160013A (ja) | Snmpネットワーク管理方式 | |
CN114640574A (zh) | 一种主备设备的切换方法及装置 | |
CN103595629A (zh) | 一种irdp网络中主机网关快速切换的方法和装置 | |
CN115086219B (zh) | 一种虚拟路由器确定方法、设备及计算机可读存储介质 | |
CN109274530B (zh) | 基于tcp协议的网络数据包零误差场景再现方法和装置 | |
CN114257456B (zh) | 一种基于ftp协议的断点续传文件的控制方法及系统 | |
CN112671905B (zh) | 服务调度方法、装置及系统 | |
JP3763140B2 (ja) | Snmpプロトコルにおけるエラー伝達方法、エラー伝達プログラム及びエラー伝達システム | |
CN117528295A (zh) | 在单向光闸网络下udp通信协议的数据一致性方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |