CN111937327A - 基于传输协议的点对点数据库同步 - Google Patents
基于传输协议的点对点数据库同步 Download PDFInfo
- Publication number
- CN111937327A CN111937327A CN201980024243.XA CN201980024243A CN111937327A CN 111937327 A CN111937327 A CN 111937327A CN 201980024243 A CN201980024243 A CN 201980024243A CN 111937327 A CN111937327 A CN 111937327A
- Authority
- CN
- China
- Prior art keywords
- database
- lrpdu
- record
- message
- local
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- 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
- H04L45/026—Details of "hello" or keep-alive messages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/235—Update request formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
一种机制包括本地节点接收Hello消息,所述Hello消息包括应用程序标识符(AppId)以及本地节点的目标端口与相邻节点的目标端口之间的目标链路。所述本地节点确定所述AppId与用于执行数据库同步的应用程序关联。所述本地节点在所述本地节点的存储器中建立本地数据库,作为数据库对的一部分供所述应用程序使用,所述数据库对包括所述相邻节点的相邻数据库。所述本地节点将所述数据库对与所述目标链路关联。所述本地节点通过目标链路控制本地数据库与相邻数据库的同步。
Description
相关申请案交叉申请
本专利申请要求2018年4月10日由程迪恩(Dean Cheng)等人递交的发明名称为“基于传输协议的点对点数据库同步(Point-to-Point Database Synchronization Overa Transport Protocol)”的第62/655,625号美国临时专利申请以及2018年12月20日由程迪恩(Dean Cheng)等人递交的发明名称为“基于传输协议的点对点数据库同步(Point-to-Point Database Synchronization Over a Transport Protocol)”的第62/782,993号美国临时专利申请的权益,其全部内容以引用的方式并入本文中。
技术领域
本公开(disclosure)大体上涉及数据库管理,具体涉及用于管理点对点数据库同步的通信协议。
背景技术
数据库同步是在多个数据库系统之间建立一致性的过程。数据库同步的目的是为了确保将对第一数据库的变更同步更新到一个或多个对应的数据库系统。数据库同步可能会涉及创建复杂的应用特有的实施方式,这些实施方式可能无法与其它实施方式共同实现。可能需要某些应用程序来实现通信资源管理机制,以确保一致性并验证信息确实被其它数据库系统接收。此外,如果连接中断,数据库同步可能会失败。例如,重新建立连接后重传所有数据库文件在一些情况下可能会导致通信资源利用率低下。
发明内容
在一个实施例中,本公开包括一种在本地节点中实施的方法。所述方法包括:本地节点的接收器(receiver)接收Hello消息,所述Hello消息包括应用程序标识符(application identifier,AppId)以及本地节点的目标端口(target port)与相邻节点(neighbor node)的目标端口之间的目标链路;所述本地节点的处理器确定所述AppId与用于执行数据库同步的应用程序关联;在所述本地节点的存储器中建立本地数据库,作为数据库对的一部分供所述应用程序使用,所述数据库对包括所述相邻节点的相邻数据库;所述处理器将所述数据库对与所述目标链路关联;通过所述目标链路控制所述本地数据库与所述相邻数据库的同步。这种方法允许通信协议自动建立一个或多个数据库对,以便通过网络进行同步。所述协议从所述Hello消息中获取目标链路和所述AppId。然后,所述协议可以将所述应用程序与所述目标链路关联并代表所述应用程序建立数据库进行同步。通过这种方式,可以不在所述应用程序中进行数据库建立,从而使得在应用程序没有进行直接管理的情况下建立和维护数据库同步。这又使得应用程序执行数据库同步,而无需直接知道为实现这种同步的底层网络消息传输。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,控制所述本地数据库与所述相邻数据库的同步包括:所述本地节点的发射器(transmitter)通过所述目标链路在链路本地注册协议数据单元(Link-Local Registration Protocol Data Unit,LRPDU)消息中向所述相邻数据库发送记录信息。数据库信息以记录的形式存储。记录(Record)版本信息(例如,控制信息)通过在目标链路上发送的LRPDU进行交换。因此,LRPDU消息可以用作一种向相邻节点指示数据库记录已更新的机制,反之亦然。同样地,LRPDU消息可以用于管理数据库同步。
可选地,在任一上述方面中,所述方面的另一种实施方式包括:所述本地数据库包括申请方数据库(applicant database),以存储本地记录,发送至所述相邻数据库中的注册方数据库(registrar database)。
可选地,在任一上述方面中,所述方面的另一种实施方式包括:所述本地数据库包括注册方数据库,以从所述相邻数据库中的申请方数据库接收相邻记录。数据库对包括申请方和注册方。申请方包含要上传的记录,注册方接收申请方记录的副本(copies)。本地节点和相邻节点分别可以包括申请方数据库和注册方数据库以进行双向同步。此外,申请方数据库可以位于本地节点上,注册方数据库可以位于相邻节点上,反之亦然,以便进行单向同步。
可选地,在任一上述方面中,所述方面的另一种实施方式包括:所述Hello消息是Hello LRPDU,所述Hello LRPDU将所述目标链路表示为标识所述本地节点的本地机框(MyChassis)标识符(identifier,ID)、标识所述本地节点上的目的端口的本地端口(My Port)ID、标识所述相邻节点的相邻机框(Neighbor Chassis)ID以及标识所述相邻节点上的目标端口的相邻端口(Neighbor Port)ID。所述目标链路可以通过机框ID和端口ID指定,所述端口ID表示目标链路每端的一个目标端口。这种方法使得唯一标识目标链路,从而分别向所述本地节点和所述相邻节点指示,其中为了LRPDU通信可以定位对应的节点。
在一个实施例中,本公开包括一种在本地节点中实施的方法。所述方法包括:本地节点的发射器向相邻节点的注册方数据库发送一个或多个记录链路本地注册协议数据单元(Link-Local Registration Protocol Data Unit,LRPDU)消息,所述记录LRPDU消息指示对存储在所述本地节点的申请方数据库中的记录进行更新;本地节点的接收器接收确认所述记录LRPDU消息的一个或多个LRPDU消息;在所述本地节点的存储器中将所述申请方数据库中的至少一条更新记录标记为经过所述注册方数据库确认;通过所述处理器通知应用程序所述申请方数据库与所述注册方数据库已同步。这种机制允许网络通信协议监控数据库通信并确定何时同步数据库。然后,所述网络协议可以通知所述应用程序同步完成。通过这种方式,所述应用程序不需要知道每次的记录交换和关联通信。所述应用程序可以对本地申请方数据库进行变更,并允许所述网络协议管理同步且在同步完成后通知所述应用程序。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述方法还包括:所述本地节点的处理器确定所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认,其中所述通知应用程序所述申请方数据库与所述注册方数据库已同步是根据所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认的确定结果发起的。所述申请方可以判断何时确认每条记录,并在所有记录都经过确认时通知所述应用程序,从而完成所述申请方数据库和与所述注册方数据库之间的同步。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述确认所述记录LRPDU消息的LRPDU消息包括部分列表(Partial List)LRPDU消息,所述部分列表LRPDU消息包括确认所述至少一个更新记录的至少一个记录标头。所述部分列表LRPDU消息作为确认消息。所述部分列表LRPDU消息由所述注册方发送,并向所述申请方指示所述注册方已经进行了所述记录LRPDU消息所请求的更新。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述记录标头包括指示所述更新记录的记录编号以及标识所述更新记录中包含的更新的序列号。这些信息可以指示所述注册方已经接收到的某个(某些)记录更新。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述方法还包括:当记录LRPDU消息定时器超时且未接收到对应的部分列表LRPDU消息时,向所述应用程序生成失败通知。这种机制使得所述应用程序收到潜在记录通信失败的通知。所述记录LRPDU消息可能不会自动重新发送,因为大量通信可能超出注册方的接收缓冲器(例如,可能导致更多的记录同步失败)。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述确认所述记录LRPDU消息的LRPDU消息包括完整列表(Complete List)LRPDU消息,所述完整列表LRPDU消息包括所述注册方数据库中所有记录对应的记录标头。所述完整列表LRPDU消息可以由所述注册方以预定间隔发送。所述完整列表LRPDU消息包括所述注册方数据库的当前状态。因此,所述申请方可以使用完整列表LRPDU消息来确定注册方何时接收到记录,何时丢弃所述确认消息,以及注册方何时未接收到记录更新。然后,所述申请方可以通过根据所述完整列表LRPDU消息的内容发送其它记录LRPDU消息来恢复同步错误。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述完整列表LRPDU消息包括指示存储在所述注册方数据库中的第一个记录的第一个记录编号字段以及指示存储在所述注册方数据库中的最后一个记录的最后一个记录编号字段,所述记录标头包括指示存储在所述注册方数据库中的记录的记录编号以及标识存储在所述注册方数据库中的记录所包含的更新的序列号。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述记录LRPDU消息包括指示在所述申请方数据库中更新的记录的一个或多个记录编号以及标识所述在所述申请方数据库中更新的记录中包含的更新的一个或多个序列号。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述方法还包括:所述发射器向所述注册方数据库发送请求完整列表(Request Complete List)LRPDU消息;所述接收器从所述注册方数据库接收完整列表LRPDU消息,以响应所述请求完整列表LRPDU消息。通过采用这种机制,所述申请方可以按需请求一个完整列表LRPDU消息,而不必等待周期性的完整列表LRPDU消息。
在一个实施例中,本公开包括一种在本地节点中实施的方法。所述方法包括:本地节点的处理器为应用程序生成断开代码,所述断开代码指示Hello链路本地注册协议数据单元(Link-Local Registration Protocol Data Unit,LRPDU)消息的交换失败;所述处理器从所述应用程序接收命令,以在存在所述断开代码的情况下仍然维护所述本地节点的存储器中的申请方数据库;在成功交换Hello LRPDU消息后,所述本地节点的接收器从相邻节点的注册方数据库接收完整列表LRPDU消息,所述完整列表LRPDU消息包括所述注册方数据库中所有记录对应的记录标头;所述处理器将所述完整列表LRPDU消息中的记录标头与所述申请方数据库中的记录标头进行比较,以使所述申请方数据库与所述注册方数据库重新同步。这种机制在发生连接中断的情况下仍然能够维护数据库对。当发生连接中断时,通知并允许所述申请方选择在连接重建时重置同步(例如,通过重新发送所有记录)还是在连接重建时恢复同步。在通过Hello交换重新连接时所述注册方发送一个完整列表消息,这样可以维护所述数据库对。接着,所述申请方数据库可以将所述注册方数据库中的记录标头与所述申请方数据库的记录标头进行比较,以确定哪些更新(如果存在)是由于连接中断而丢失的。然后,所述申请方数据库可以只重新发送丢失的更新,而不需要向所述注册方重新发送完整的申请方数据库记录列表。当所述申请方与所述注册方之间的网络连接建立时,这种方法可以减少网络资源的使用和同步恢复时间。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述方法还包括:在未成功交换Hello消息后,重置所述申请方数据库中的通知定时器,以在接收到所述完整列表LRPDU消息之前不发送记录LRPDU消息。这使得所述申请方数据库在连接恢复之前停止尝试同步数据库,从而节省网络资源和处理资源。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述方法还包括:所述处理器确定所述申请方数据库中的一个或多个记录标头与所述完整列表LRPDU消息中的一个或多个记录标头之间存在不匹配;向所述注册方数据库发送记录LRPDU消息,所述记录LRPDU消息包含处理不匹配的更新后的记录标头。如果出现不匹配的情况,可以将更新记录从所述申请方发送到所述注册方。这种情况出现的原因是前一记录LRPDU消息在连接中断的时候丢失。
可选地,在任一上述方面中,所述方面的另一种实施方式包括,所述方法还包括:所述处理器确定所述申请方数据库中的记录标头与所述注册方数据库中的记录标头之间存在匹配;根据匹配的确定结果,通过处理器通知所述应用程序所述申请方数据库与所述注册方数据库已同步。这使得网络协议代表所述应用程序管理同步,因此所述应用程序可以不知道与数据库同步相关的通信细节。
在一个实施例中,本公开包括一种本地节点,包括存储器、发射器、接收器和处理器,所述处理器耦合到所述存储器、所述发射器和所述接收器,所述本地节点用于执行根据上述方面所述的方法。
在一个实施例中,本公开包括一种非瞬时性计算机可读介质,包括在本地节点使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质上的计算机可执行指令,所述计算机可执行指令在由处理器执行时,使得所述本地节点执行根据上述方面所述的方法。
在一个实施例中,本公开包括一种本地节点,包括:接收模块,用于接收Hello消息,所述Hello消息包括应用程序标识符(AppId)以及本地节点与相邻节点之间的目标链路;确定模块,用于确定所述AppId与用于执行数据库同步的应用程序关联;数据库对建立模块,用于在所述本地节点中建立本地数据库,作为数据库对的一部分供所述应用程序使用,所述数据库对包括所述相邻节点的相邻数据库;关联模块,用于将所述数据库对与所述目标链路关联;同步控制模块,用于通过所述目标链路控制所述本地数据库与所述相邻数据库的同步。
在一个实施例中,本公开包括一种本地节点,包括:发送模块,用于向相邻节点的注册方数据库发送一个或多个记录链路本地注册协议数据单元(Link-LocalRegistration Protocol Data Unit,LRPDU)消息,所述记录LRPDU消息指示对存储所述本地节点的申请方数据库中的记录进行更新;接收模块,用于接收确认所述记录LRPDU消息的一个或多个LRPDU消息;存储器模块,用于将所述申请方数据库中的至少一条更新记录标记为经过所述注册方数据库确认;确定模块,用于确定所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认;通知模块,用于根据所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认的确定结果,通知应用程序所述申请方数据库与所述注册方数据库已同步。
在一个实施例中,本公开包括一种本地节点,包括:断开模块,用于为应用程序生成断开代码,所述断开代码指示Hello链路本地注册协议数据单元(Link-LocalRegistration Protocol Data Unit,LRPDU)消息的交换失败;命令模块,用于从所述应用程序接收命令,以在存在所述断开代码的情况下仍然维护所述本地节点的存储器中的申请方数据库;接收模块,用于在成功交换Hello消息后,从相邻节点的注册方数据库接收完整列表LRPDU消息,所述完整列表LRPDU消息包括所述注册方数据库中所有记录对应的记录标头;记录比较模块,用于将所述完整列表LRPDU消息中的记录标头与所述申请方数据库中的记录标头进行比较,以使所述申请方数据库与所述注册方数据库重新同步。
可选地,在任一上述本地节点中,所述本地节点的另一种实施方式包括,所述本地节点还包括用于执行任一上述方面所述方法的模块。
为清楚起见,任一上述实施例可以与任一上述或多个其它实施例组合以在本公开范围内产生新实施例。
下文结合附图和权利要求的详细描述将更清楚地理解这些和其它特征。
附图说明
为了更全面地理解本公开,现参考以下结合附图和具体实施方式进行的简要描述,其中相同参考标号表示相同部分。
图1为数据库同步网络的示例性本机系统实施方式的示意图。
图2为数据库同步网络的示例性代理系统实施方式的示意图。
图3为用于数据库同步的示例性数据库系统的示意图。
图4为管理数据库同步的示例性方法的协议图。
图5示出了Hello链路本地注册协议数据单元(Link-Local RegistrationProtocol Data Unit,LRPDU)消息的示例性编码。
图6示出了记录LRPDU消息的示例性编码。
图7示出了部分列表LRPDU消息的示例性编码。
图8示出了完整列表LRPDU消息的示例性编码。
图9为建立数据库对的示例性方法的流程图。
图10为管理数据库对同步的示例性方法的流程图。
图11为在发生连接中断的情况下仍然维护数据库同步的示例行方法的流程图。
图12为管理数据库同步的示例性网元的示意图。
图13为建立数据库对的示例性设备的示意图。
图14为用于管理数据库对同步的示例性设备的示意图。
图15为用于在发生连接中断的情况下仍然维护数据库同步的示例行设备的示意图。
具体实施方式
首先应理解,尽管下文提供一个或多个实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本公开决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
标准化通信协议可以用于实现数据库同步。这些通信协议可以配置用于以标准化的方式维护数据库一致性。例如,链路本地注册协议(Link-local RegistrationProtocol,LRP)是一种指定了协议、流程和被管理对象以将注册数据库从点对点链路的一端复制到另一端并复制数据库中部分内容变更的标准。LRP可用于数据库优化,达到1兆字节的数量级。LRP数据库同步(LRP Database Synchronization,LRP-DS)可以用于建立数据库之间的通信。LRP-DS以类似于中间系统到中间系统(Intermediate System toIntermediate System,IS-IS)协议的方式采用Hello消息来建立节点邻接。LR数据库传输(LRP Database Transport,LRP-DT)则可以用于以类似于IS-IS携带的链路状态公告(LinkState Advertisement,LSA)消息的方式传输由LRP-DS提供的记录(Record)消息中携带的数据。因此,LRP-DS代表相关应用程序管理数据库同步。
本文公开了用于完善LRP-DS功能的机制。例如,可以优化LRP-DS,从而自动建立同步数据库对。数据库对包括第一节点的申请方数据库和第二节点的注册方数据库。为了论述清楚,这些节点也可以分别称为本地节点和相邻节点。当对申请方数据库进行更新时,LRP-DS协议将这些更新发送给注册方数据库以保持同步。对于单向通信而言,本地节点包含申请方数据库,相邻节点包含注册方数据库。对于双向通信而言,本地节点包含与相邻节点的注册方数据库进行同步的申请方数据库,相邻节点包含与本地节点的注册方数据库进行同步的申请方数据库。在任一情况下,数据库对都可以在交换Hello链路本地注册协议数据单元(Link-Local Registration Protocol Data Unit,LRPDU)消息后自动建立。HelloLRPDU消息包含对应的应用程序的应用程序标识符(AppId)和目标链路,该目标链路表示为标识本地节点的本地机框(My Chassis)标识(identifier,ID)、标识本地节点上的目标端口的本地端口(My Port)ID、标识相邻节点的相邻机框(Neighbor Chassis)ID和标识相邻节点上的目标端口的相邻端口(Neighbor Port)ID。在交换Hello消息后,本地节点和相邻节点能够自动为标识的应用程序创建成对申请方数据库和注册方数据库,并根据目标链路使这些数据库对相互关联。
LRP-DS在称为门户的组件中运行,还可以用于自动通知应用程序经过一次或多次更新后数据库何时进行同步。例如,当申请方数据库有更新时,向注册方数据库发送记录LRPDU消息,以指示已经更新的数据库记录和这些更新记录的序列号(例如,版本号)。注册方数据库使用确认已知道更新记录并可以通过LRP-DT发送的部分列表(Partial List)LRPDU消息进行响应。当接收到部分列表LRPDU消息时,门户将申请方数据库中的带有指示的记录标记为确认。可以交换多个记录LRPDU消息和多个部分列表LRPDU消息。当申请方数据库中的所有记录都标记为确认时,门户可以向应用程序发送数据库已同步的指示。
又例如,LRP-DS可以用于在发生连接中断的情况下仍然维护数据库之间的同步。可以定期交换Hello LRPDU消息。当Hello LRPDU消息的交换失败时,门户可以通知应用程序。申请方可以选择删除这个配对,并通过将数据库记录重新上传到新的注册方数据库,在重新连接时创建新的数据库对。申请方也可以选择维护当前数据库对。当门户接收需要维护该数据库配对的指示时,门户停止交换更多记录LRPDU消息。在重新建立Hello LRPDU消息交换时,注册方向申请方发送完整列表(Complete List)LRPDU消息。完整列表LRPDU消息包含注册方数据库中所有记录对应的记录标头。申请方数据库可以将完整列表LRPDU消息中的记录标头与存储在申请方数据库中的记录标头进行比较,以判断是否存在记录不匹配。在发生因连接丢失导致记录LRPDU消息丢失时,可执行这个操作。然后,申请方数据库可以发送记录LRPDU消息,其中包含自进入完整列表LRPDU消息中包含的记录状态以来进行的任何记录更新。通常,这样做可以传输更少的记录LRPDU,而不是快速传输完整列表LRPDU。门户也可以在数据库已同步后通知应用程序。下面参照各图对这些和其它示例性实施例进行更详细描述。
图1为数据库同步网络100的示例性本机系统实施方式的示意图。数据库同步网络100包括通过互联网协议(Internet Protocol,IP)网络171耦合的本机系统110和本机系统130。本机系统110和本机系统130分别包括需要同步的一个或多个数据库120和122。为了论述清楚,在本文中,本机系统110或130相对于在第一系统中执行的源操作而言称为本地系统,而相对于在第二系统中执行的目的地操作而言称为相邻系统。因此,本机系统110和130可以是本地系统、相邻系统或本地系统和相邻系统,具体取决于上下文。还需要说明的是,本文中使用的术语“本地”和“相邻”是相对的,是为了清楚区分第一节点和第二节点,而且在不同角度论述同一网络时,可以互换使用。
本机系统110是一种包括应用程序111、门户113、目标端口141和数据库120的计算组件。应用程序111是一种可用于在至少本机系统110和/或代理系统与本机系统130和/或代理系统之间分发信息的计算机程序。代理系统在下文参照图2进行了论述。例如,应用程序111可以包括保存文件与云存储系统已同步的用户可操作程序。应用程序111将数据上传到应用程序131和/或从应用程序131下载数据。为了简单起见,仅示出了两个应用程序111和131,但是应用程序111可以与任意数量的其它应用程序同步。
门户113是门户接口的实例,同时也是与一个应用程序111关联的申请方和/或注册方状态机和数据库120的实例。例如,门户113代表应用程序111运行LRP(例如,LRP-DS和LRP-DT)。门户113从应用程序111和/或数据库120接收通知,执行相应的LRP操作,并向应用程序111和/或数据库120提供响应性通知。例如,门户113通过LRPDU消息的通信管理来运行LRP-DS。门户113通过传输控制协议(transmission control protocol,TCP)连接170等与对应的门户133发送数据,例如数据库120中的记录,进而运行LRP-DT。在一些示例中,本机系统110上的应用程序111在本机系统110中的许多目标端口141中的每个目标端口上维护独立门户113和对应的数据库120。
本机系统110还可以在目标端口141上运行链路层发现协议(Link LayerDiscovery Protocol,LLDP)161。或者,本机系统110维护由系统管理员控制的包含与通过LLDP 161生成的数据相当的数据的信息存储库。
数据库120包括应用程序111对应的一个或多个文件存储库。数据库120中的文件存储为记录。一条记录是数据库120的一个子集,通过在门户113中运行的LRP以一个单元为单位从申请方传输到注册方。每条记录包括数据、标识该数据的记录编号,一级序列号。序列号标识该记录的当前版本。例如,序列号可以实现为指示记录更新次数的计数器。数据库120可以是申请方数据库或注册方数据库或申请方数据库和注册方数据库。申请方是应用程序111相对于门户113能够充当的两种角色(申请方和注册方)之一。申请方控制LRP复制到相邻门户133中的注册方的数据库120。注册方是应用程序111相对于门户113能够充当的两种角色(注册方和申请方)之一。注册方接收LRP从相邻门户133中的申请方复制过来的数据库122的副本。因此,数据库120可以是用于将记录上传到数据库122的申请方数据库或用于从数据库122下载记录的注册方数据库或用于与数据库122进行双向记录通信的申请方数据库和注册方数据库。
目标端口141为本机系统110上的通信端口。门户113以及关联申请方和注册方数据库120与一个目标端口141关联。如果一个以上门户113服务于不同的应用程序111,则目标端口141可以与这些门户113关联。目标端口141可以访问连接到一个或多个其它目标端口151(例如,在其它系统中)的链路。
本机系统130基本上类似于本机系统110。本机系统130包括门户133、应用程序131、数据库122和目标端口151,这四者基本上分别类似于门户113、应用程序111、数据库120和目标端口141。
本机系统110和130发现彼此之后,通过LLDP 161建立成对数据库120和122。LLDP161是电气和电子工程师学会(Institute of Electrical and ElectronicsEngineer,IEEE)标准文档802.1AB中描述的由网络设备用来在网络上公告其标识、能力和网络相邻的链路层协议。具体而言,本机系统110和130可以通过采用LLDP 161经由目标端口141和151相互公告其应用程序111和131、LRP-DS,以及LRPDT能力。通过LLDP 161以及判断优先使用边缘控制协议(Edge Control Protocol,ECP)160或还是传输控制协议(Transmission Control Protocol,TCP)来承载LRPDU消息,可以确定LRP-DT在承载这些LRPDU消息时使用的地址。ECP 160是IEEE标准802.1Q-2014中定义的网络协议。TCP 170定义在互联网工程任务组(Internet Engineering Task Force,IETF)文档请求注解(Request For Comment,RFC)793中。ECP 160或TCP 170都可用于承载LRPDU消息。如果使用的是ECP 160,则ECP报文穿过目标端口141和151。如果使用的是TCP 170,则LRPDU报文可以穿过目标端口141、151或穿过两个本机系统110和130上的任何其它端口。
LRPDU消息用作控制消息,指示数据库120和/或122中的记录更新、确认和与数据库同步相关的其它管理信息。本文论述的LRPDU消息包括Hello LRPDU消息、记录(Record)LRPDU消息、部分列表(Partial List)LRPDU消息、完整列表(Complete List)LRPDU消息和请求完整列表(Request Complete List)LRPDU消息。然而,可以根据需要使用其它LRPDU消息来实现数据库120和122的同步。通过使用LRPDU消息,门户113和133可以交换数据库120和122中的记录以使数据库120和122同步。例如,数据库120和122中的记录LRPDU可以通过TCP连接170进行交换。TCP连接170是交换数据时使用的点对点通信会话。TCP连接170可以在目标端口141和151之间或在其它端口之间路由,具体取决于示例。TCP连接170可以遍历一个或多个IP网络171,一个或多个IP网络171可以是支持点对点通信的开放系统互连(Open Systems Interconnection,OSI)模型层3网络。如下文参照各图所述,门户113和/或133可以使用上述组件代表应用程序111和/或131部分通过目标端口141和151管理数据库120和122的同步。
图2为数据库同步网络200的示例性代理系统实施方式的示意图。数据库同步网络200包括代理210、代理230、从节点240和从节点250。数据库同步网络200类似于数据库同步网络100,但是目标端口241和251已分别从本机系统移动到从节点240和250。本文使用的代理210和/或230是一种至少包含应用程序211的计算组件,应用程序211基本上类似于应用程序111。例如,代理210至少包含可用于在代理210与本机系统和/或代理系统230之间分发信息的应用程序211。代理210还可包含门户213和/或数据库220,这两者基本上分别类似于门户113和数据库120。
从节点240可以是通信组件,例如路由器、交换机等,也可以是终端站,例如摄像机、机械执行器或个人计算机。从节点240通过网络连接耦合到代理210。从节点包含基本上类似于目标端口141的至少一个目标端口241。一个通信组件包含多个目标端口241。代理210和从节点240以基本上类似于本机系统110的方式一起运作。通过将目标端口241放置在从节点240中而不是代理210中,可以将应用程序211、门户213和/或数据库220转移到可能位于独立网络中而不是从节点240中的设备(代理210)上。这样实现具有灵活性,同时功能基本相同。
代理230基本上类似于代理210,包含门户233、应用程序231和数据库222,这三者可以基本上分别类似于门户213、应用程序211和数据库220。从节点250耦合到代理230并包含基本上类似于目标端口241的目标端口251。从节点240和250采用LLDP 261以类似于LLDP161的方式在目标端口241和251之间交换LLDP消息。从节点250和240可以分别向门户233和门户213转发这些消息。LLDP消息中的记录信息可以用于建立数据库220和/或222中记录之间的通信,以通过IP网络271进行同步。IP网络271可以基本上类似于IP网络171。这些记录可以通过基本上类似于TCP连接170的TCP连接270发送。
需要说明的是,在本公开的范围内,还可以采用数据库同步网络100和200的各种组合。例如,本机系统110可以用于通过代理230和从节点250使数据库120同步。此外,本机系统130可以用于通过代理210和从节点240使数据库122同步。各种中继系统(例如,路由器和/或网桥)可以用于路由本机系统、代理和/或从节点之间的通信。这些组件可以包括如下所述的各种能力。在任何通信设备上,应用程序111、131、211和/或231可以在属于同一系统的不同目标端口141、151、241和251上在数据库120、122、220和222的申请方和注册方之间交换信息。
图3为用于数据库同步的示例性数据库系统300的示意图。数据库系统300可以用于实现本机系统110、本机系统130、代理210和/或代理230。数据库系统300包括基本上类似于应用程序111、131、211和/或231的应用程序311。具体地,应用程序311是一种使用数据与相邻数据库等远程系统同步的程序。应用程序是门户313的实例,门户313基本上类似于门户113、133、213和/或233。门户313代表应用程序311运行LRP(例如,LRP-DS和LRP-DT)。因此,除了其它进程,为了进行同步,门户313管理LRPDU消息和记录的通信。门户313与应用程序311和数据库320交互,数据库320基本上类似于数据库120、122、220和/或222。数据库320可以包括申请方321和/或注册方325。
申请方321是用于将本地存储数据的副本上传到相邻数据库的注册方的状态机和对应内存空间。注册方325是用于从相邻数据库的申请方接收远程存储数据的副本的状态机和对应内存空间。因此,数据库320可以包含用于上传同步数据的申请方321、用于下载同步数据的注册方325,或者用于双向同步的申请方321和注册方325。申请方321和注册方325分别与门户313关联,以确保控制消息和数据到达其预期目的地。门户313还与目标端口关联,以确保消息在其预期门户(例如,门户313)处接收。
数据库320中的数据以记录为单位进存储。一条记录是为了进行同步而发送的最小数据单元。记录大小可以由应用程序311配置。记录越小,越复杂,但是记录越大在更新一部分记录时就需要发送更多数据。
申请方321包含本地记录323和本地记录标头324。本地记录323是包含由应用程序311在本地使用的数据的记录。记录标头是与对应记录相关的一组预定义状态信息。例如,本地记录标头324包含本地记录323对应的记录编号、序列号和/或校验和。记录编号指示对应的记录。序列号包括版本信息。例如,序列号可以包括指示对应记录修改次数的计数器。校验和是错误校验信息,可以包括表示进行传输的对应数据集合中的多个正确数字之和的数字。例如,校验和可以指示记录编号和序列号中的多个正确数字之和。因此,当更新本地记录323时,可以标识对应的本地记录标头324以指示已更新的记录和更新的版本(例如,序列号)。
注册方325包含相邻记录326和相邻记录标头327。相邻记录326和相邻记录标头327分别类似于本地记录323和本地记录标头324,但与相邻节点/系统中的应用程序使用的数据有关。
因此,本地数据库320可以包括申请方321的数据库,以存储本地记录323,以便发送到相邻数据库中的注册方数据库。本地数据库320还可以包括注册方325的数据库,以从相邻数据库中的申请方数据库接收相邻记录326。这种记录传输可以通过使用LRPDU消息来完成。例如,当本地记录323被修改时,门户313可以发送记录LRPDU消息。记录LRPDU消息包含对应的本地记录标头324,以将已经更新的本地记录323和更新的当前序列通知给相邻数据库的注册方。门户313可以从相邻数据库接收响应性的部分记录列表,该响应性的部分记录列表确认知道本地记录的更新。门户313还可以与相邻节点的门户建立数据传输以传输更新后的本地记录323。类似地,相邻数据库的申请方可以通过相邻门户向门户313发送记录LRPDU消息,以指示对相邻记录326的变更。来自相邻数据库的记录LRPDU消息包含更新后的相邻记录标头327。然后,注册方325可以通过门户313使用部分列表LRPDU消息进行响应,该部分列表LRPDU消息包含更新后的相邻记录标头327,以指示知道相邻数据库的更新。门户313还可以管理已更新的相邻记录326从相邻数据库到注册方325的数据传输。下文参照各图论述了这些和其它用于在申请方321与注册方325之间交换记录和记录标头进行同步的消息传输方案。
图4为管理数据库同步的示例性方法400的协议图。方法400可以由本机系统110和/或130、代理210和/或230结合从节点240和/或250和/或数据库系统300进行实施。方法400提供了一种用于创建和维护包括申请方和注册方的数据库对的机制。管理数据库对包括维护申请方数据库与注册方数据库之间的同步。方法400由应用程序、控制本地节点的申请方数据库的本地门户以及控制相邻节点的注册方数据库的相邻门户进行实施。
在一些示例中,本地门户和相邻门户预先配置有与应用程序相关的相邻节点的端口和地址。在其它示例中,本地门户和相邻门户通过其它发现协议发现与应用程序相关的相邻节点的端口和地址。在任一情况下,本地门户都会将Hello LRPDU消息401转发到相邻门户,而相邻门户都会将Hello LRPDU消息403转发到本地门户。这也可以称为Hello LRPDU消息交换。Hello LRPDU消息401和403包括应用程序标识符(AppId)并标识本地节点的目标端口与相邻节点的目标端口之间的目标链路。AppId指示应用程序,因此指示发送方与希望使数据同步的应用程序关联。Hello LRPDU消息401和403中的目标链路指示通信尝试成功,可以开始同步。
相应地,当本地门户接收Hello LRPDU消息403时,本地门户确定AppId与用于执行数据库同步的应用程序关联。然后,本地门户在本地节点的存储器中建立一个本地数据库,作为数据库对的一部分供应用程序使用。在本示例中,本地数据库包括申请方。此外,当相邻门户接收Hello LRPDU消息401时,相邻门户确定AppId与用于执行数据库同步的应用程序关联。然后,相邻门户在相邻节点的存储器中建立一个相邻数据库,作为数据库对的一部分。在本示例中,相邻数据库包括注册方。本地门户和相邻门户分别将数据库对与目标链路关联。然后,本地门户可以通过目标链路控制本地申请方数据库与相邻注册方数据库的同步。控制本地申请方数据库与相邻注册方数据库的同步包括通过目标链路在LRPDU消息中将记录信息发送到相邻数据库,如下所述。需要说明的是,LRPDU消息可以始终通过目标链路转发,以确保这些消息能够到达合适的门户。
一旦发生了Hello LRPDU消息交换并建立了数据库,应用程序可以通过本地门户对申请方数据库进行记录变更405。记录变更405包括更新对应记录中的数据的至少一个比特。当一条记录被更新时,对应的记录标头中的序列号发生变更(例如递增),以表示变更。通过采用申请方数据库中的标志指示注册方不知道变更,受记录变更405影响的记录还可以标记为未确认。
本地门户可以通过相邻门户向相邻节点的注册方数据库发送记录LRPDU消息407。记录LRPDU消息407指示对存储在申请方数据库中的记录进行更新。具体地,记录LRPDU消息407包含通过记录变更405在申请方数据库中更新的记录对应的记录标头。这些记录标头包括每个更新记录的记录编号和序列号。在一些示例中,记录LRPDU消息407还包含更新记录。在其它示例中,更新记录通过独立的通信方式和/或通过独立的协议,例如TCP和/或LRP-DT,在申请方和注册方之间传输。需要说明的是,本地门户可能会继续发送其它记录LRPDU消息,因为记录已经更新,无需等待确认。
相邻门户,也就是注册方,接收记录LRPDU消息407,并使用包含的记录标头和/或记录更新注册方数据库。然后,相邻门户可以代表注册方生成部分列表LRPDU消息409。部分列表LRPDU消息409作为对记录LRPDU消息407的确认。部分列表LRPDU消息409包含记录LRPDU消息407中包含的记录标头,因此指示注册方知道和/或已经接收到对这些记录进行更新,具体取决于示例。相邻门户向申请方数据库发送部分列表LRPDU消息409。本地门户接收到确认记录LRPDU消息407的部分列表LRPDU消息409。然后,本地门户可以通过采用一个标志将申请方数据库中的更新记录标记为经过注册方数据库确认。
如上所述,本地门户可以发送更多记录LRPDU消息407,而无需等待对应的部分列表LRPDU消息409。因此,即使接收到某些部分列表LRPDU消息409,各种记录更新仍可能未经过确认。然而,在一些情况下,例如由于申请方的更新暂停,可以接收所有记录LRPDU消息407对应的所有部分列表LRPDU消息409。当发生这种情况时,申请方数据库和注册方数据库同步。每接收到一个部分列表LRPDU消息409,本地门户就会检查申请方数据库中记录的确认状态。因此,当数据库同步时,本地门户可以确定申请方数据库中的所有更新记录均经过注册方数据库通过LRPDU消息确认。根据申请方数据库中的所有更新记录均经过注册方数据库通过LRPDU消息确认的确定结果,本地门户可以发送所有记录确认411来通知应用程序申请方数据库与注册方数据库已同步。所有记录确认411可以是以预定代码的形式发送给应用程序的指示,以验证同步。
可选地,本地门户可以用于为每个记录LRPDU消息407维护一个定时器。在这种情况下,当记录LRPDU消息407对应的定时器超时且未接收到对应的部分列表LRPDU消息409时,本地门户可以向应用程序生成失败通知412。本地门户可能不会自动重新发送未确认的记录LRPDU消息407。相邻门户和/或对应的目标端口可以包括受限的接收缓冲器。由于存在其它记录LRPDU消息407,自动重传可能导致缓冲器超限。相应地,通过重新发送未确认的记录LRPDU消息407、等待更长的时间、将对应的记录更新回退到申请方数据库,等等,应用程序可以确定如何继续。
相邻门户代表注册方发送完整列表LRPDU消息413。完整列表LRPDU消息413包括注册方数据库中所有记录对应的记录标头(但不包括记录本身)。完整列表LRPDU消息413可以定期发送,并由申请方通过本地门户接收。完整列表LRPDU消息413可以作为对一个或多个之前发送的记录LRPDU消息407的确认,例如,在本地门户/申请方未接收到部分列表LRPDU消息409的情况下。此外,申请方还可以使用完整列表LRPDU消息413来判断注册方何时未接收到记录LRPDU消息407。例如,申请方可以将完整列表LRPDU消息413中的记录标头与申请方数据库中的记录标头进行比较。当申请方数据库中的记录标头与完整列表LRPDU消息413中的记录标头匹配时,申请方可以确定注册方已经接收到所有记录更新,进而发送所有记录确认411。当申请方数据库中的记录标头与完整列表LRPDU消息413中的记录标头不匹配时,申请方可以确定注册方没有接收到某些记录更新,进而重传这些记录更新。
方法400还管理其它情况。例如,可能会发生连接中断415。连接中断415可能是因为本地门户的目标端口与相邻门户的目标端口之间的节点或链路发生故障。连接中断415还可能是因为出现数据流量拥塞。定期交换Hello LRPDU消息,例如Hello LRPDU消息401和403,如果这种交换失败,门户将知道发生连接中断415。当Hello消息的交换失败时,本地门户为应用程序生成断开代码416。断开代码416向应用程序指示Hello LRPDU消息的交换失败并且发生连接中断415。然后,申请方可以确定响应于连接中断415而采取的动作。例如,应用程序可以在重新建立连接后决定重置数据库对,在这种情况下,一旦交换了HelloLRPDU消息401和403,方法400就重新开始。
又例如,应用程序可以决定保留数据库对并重新建立连接。如果成功,这种方法避免需要将申请方数据库中的所有记录重新发送到注册方数据库。应用程序可以向本地门户发送维护数据库命令417。因此,本地门户可以从所述应用程序接收维护数据库命令417,以在存在断开代码416的情况下仍然维护本地节点的存储器中的申请方数据库。当本地门户接收维护数据库对的命令时,本地门户在通过相邻门户从注册方数据库接收到完整列表LRPDU消息418之前停止发送记录LRPDU消息407。例如,本地门户可以在未成功交换HelloLRPDU消息后(例如,发生连接中断415)重置申请方数据库的通知,以便定时器在接收到完整列表LRPDU消息418之前不发送记录LRPDU消息。
相邻门户使用相邻节点中的应用程序执行类似过程。在成功交换Hello LRPDU消息之后,注册方通过相邻门户发送完整列表LRPDU消息418。完整列表LRPDU消息418基本上类似于完整列表LRPDU消息413,因此包含注册方数据库中的所有记录标头。如果本地节点或远程节点中的任一应用程序选择重置数据库对,则方法400重新开始。例如,如果相邻门户重置注册方数据库,而本地门户不重置申请方数据库,则完整列表LRPDU消息418为空,并且申请方重新发送所有记录。又例如,如果相邻门户不重置注册方数据库,而本地门户也不重置申请方数据库,则完整列表LRPDU消息418包含与申请方数据库不匹配的记录标头,并且重置数据库对。然而,如果两个应用程序都选择维护数据库对,则完整列表LRPDU消息418包含的记录标头与申请方数据库中的记录标头相同或相似(例如,由于遗漏了记录LRPDU消息407)。在这种情况下,申请方可以确定执行必要步骤,以重新使数据库对同步。
相应地,在成功交换Hello消息后,本地门户可以从相邻节点的注册方数据库接收完整列表LRPDU消息418。完整列表LRPDU消息418包括注册方数据库中所有记录对应的记录标头。然后,本地门户和/或申请方数据库可以将完整列表LRPDU消息418中的记录标头与申请方数据库中的记录标头进行比较,以使申请方数据库与注册方数据库重新同步。在第一种情况下,本地门户可以确定申请方数据库中的记录标头与注册方数据库中的包含在完整列表LRPDU消息418中的记录标头存在匹配。在这种情况下,数据库对已同步。因此,根据匹配的确定结果,通过发送所有记录确认411等等,门户可以通知应用程序申请方数据库与注册方数据库已同步。在第二种情况下,本地门户可以确定申请方数据库中的一个或多个记录标头与完整列表LRPDU消息418中的一个或多个记录标头存在不匹配。这发生在记录LRPDU消息407在连接中断415过程中丢失的情况下。门户可以比较记录标头以判断哪些记录没有发送到注册方数据库。然后,本地门户可以通过相邻门户向注册方数据库发送记录LRPDU消息407。记录LRPDU消息407根据需要包含更新后的记录标头,以处理不匹配问题。在任一情况下,数据库对都会同步,而无需重置数据库对且无需重新发送申请方数据库中的所有记录。
可选地,本地门户还可以代表申请方请求完整列表LRPDU消息421。这使得申请方按需检查数据库同步。在这种情况下,本地门户通过相邻门户向注册方数据库发送请求完整列表LRPDU消息419。相邻门户和/或注册方接收请求完整列表LRPDU消息419,并通过本地门户向申请方发送完整列表LRPDU消息421。完整列表LRPDU消息421基本上类似于完整列表LRPDU消息418和413。本地门户,也就是申请方,可以从注册方数据库接收完整列表LRPDU消息421,以响应请求完整列表LRPDU消息419。因此,申请方可以将完整列表LRPDU消息421中的记录标头与申请方数据库中的记录标头进行比较,以判断数据库对是否同步和/或判断需要将哪些记录发送到注册方以使数据库对同步。
需要说明的是,方法400中的LRPDU消息和通知按顺序示出,以说明本公开各种示例性功能。这些消息/通知可以组合使用。例如,根据预定义定时器以及如上所述的触发事件定期交换Hello LRPDU消息401和403以及完整列表LRPDU消息413、418和421。此外,在有或没有干预动作的情况下正常操作申请方数据库过程中,可以重复交换记录变更405以及得到的记录LRPDU消息407和部分列表LRPDU消息409。此外,每当出现对应情况时,可以触发所有记录确认411、失败通知412、断开代码416和维护数据库命令417。因此,图4中的LRPDU消息和通知的顺序是示例性的,并且不应视为限制性的,除非本文另有说明。
此外,任意数量的LRPDU可以连续串接在一个LRP-DT边缘控制协议数据单元(EdgeControl Protocol Data Unit,ECPDU)中,最大为层2帧的最大大小。一个LRPDU不能跨多个LPR-DT ECP ECPDU进行拆分。当使用TCP时,LRPDU的大小限制为16位的长度字段。
图5示出了Hello LRPDU消息500的示例性编码。Hello LRPDU消息500可以实现Hello LRPDU消息401和/或403。因此,Hello LRPDU消息500可以用于维护本机系统110和/或130、代理210和/或230、从节点240和/或250,以及/或这数据库系统300中的数据库对同步。
Hello LRPDU消息500以TLV格式进行编码。例如,本文所采用的TLV格式可以支持多达65535个八位字节的数据字段。Hello LRPDU消息500包含类型(Type)字段501。类型字段501的长度为1个八位字节,偏移量为0个八位字节。类型字段501的值可以设为1,以指示Hello LRPDU消息500。Hello LRPDU消息500还包含长度(Length)字段503。长度字段503的长度为2个八位字节,偏移量为1个八位字节。长度字段503可以包含2八位字节整数,第一个字节(偏移量1)包括8个最高位。2八位字节整数包含数据字段(例如消息的其余部分)的长度。因此,TLV长度字段503为0表示不存在数据字段。Hello LRPDU消息500的长度字段503(第一个八位字节和第二八位字节,在类型字段指面)包含所有固定长度字段的长度加上数据字段中的所有TLV。
其余数据的长度为0至65535个八位字节,且在第一数据字段处偏移量3个八位字节。Hello LRPDU消息500的数据字段包含由申请方、注册方和/或对应门户侧的发送(Send)Hello状态机的一个实例发送的信息。Hello LRPDU消息500包含一些固定大小的字段,后面是数据字段内的一系列TLV。也就是说,TLV长度字段503之后的第十个八位字节可以为另一个LRPDU类型字段。
Hello LRPDU消息500还包含AppId字段505。AppId字段505包括标识与发送方门户关联的应用程序的AppId。AppId字段505包括长度为3个八位字节的组织唯一标识符(Organizationally Unique Identifier,OUI)或公司标识符(Company Identifier,CID)以及长度为1个八位字节、偏移量为3个八位字节、共4个八位字节的应用程序子ID,。需要注意的是,OUI或CID所有者负责管理应用程序子ID的使用。还需要注意的是,AppId用于包括状态机变量的多个上下文中,而不仅仅是用于Hello LRPDU消息500中。
Hello LRPDU消息500还包含Hello状态(Status)字段507。Hello状态字段507是一个4位枚举字段,位于八位字节的最高有效位上,包含以下值中的一个:Hello状态查看(hsLooking)、hello状态连接(hsConnecting)、hello状态已连接(hsConnected)。hsLooking的值可以设为指示对应的门户尚未接收到成功的完整门户(Complete Portal)创建请求。hsConnecting的值可以设为指示对应的门户已接收到成功的完整门户创建请求和带有hsLooking状态的Hello LRPDU消息500。在这种情况下,门户准备好接收所有LRPDU消息。hsConnected的值可以设为指示对应的门户已经准备好传输应用程序数据。在这种情况下,允许门户发送所有LRPDU消息。Hello状态字段507还可以包含错误状态(ErrorStatus)字段508。错误状态字段508可以包括字节中最低的4位信息,并且可以指示数据库溢出等错误。
Hello LRPDU消息500还包含本地门户编号(My Portal Number)字段509。本地门户编号字段509包含标识发送方门户的4八位字节编号。标识编号在共享同一个LRP-DT实例的所有门户中是唯一的。该字段的长度为4个八位字节,因为代理系统可以代理任意数量的从系统,每个从系统都可以具有大量目标端口。此外,代理系统可以与另一个类似的代理系统建立TCP连接。每个代理系统将本地门户编号的一个值用于代理系统代理的每个目标端口。本地门户编号字段509用在其它LRPDU消息中,以标识给定记录LRPDU、部分列表LRPDU、完整列表LRPDU或请求完整列表LRPDU与哪一对目标端口141、151、241和251,哪一对门户113、133、213和233以及哪一个数据库120、122、220、和222关联。
Hello LRPDU消息500还包含Hello时间(Hello TIme)字段511。Hello时间字段511包括表示Hello LRPDU消息500的生存时间的2个八位字节。Hello时间字段511的第一个八位字节是使Hello LRPDU消息500有效的16位秒数(0到65535或者30到65535)的最高八位字节。该字段在值为1到29(1和29包含在内)之间时不能发送。
Hello LRPDU消息500中的前4个TLV是本地机框ID TLV 513、本地端口ID TLV515、相邻机框ID TLV 517和相邻端口ID TLV 519中的一个,顺序不限。接下来是0或1个应用程序信息TLV 521。
本地机框ID TLV 513的类型字段设为typeMyChassisId的值。本地机框ID TLV513的数据字段包含在创建发送本地机框ID TLV 513的门户的完整门户创建请求中命名的LLDP实例指定在LLDP机框ID TLV中的发送的值。具体地,本地机框ID TLV 513包含的值标识充当Hello LRPDU消息500的发送方的本地节点(例如,机器)。这种本地节点包含用于建立和/或维护数据库对的本机系统或从系统(例如,包含或耦合于本地注册方或本地申请方或本地注册方和本地申请方)。
本地端口ID TLV 515的类型字段设为typeMyPortId的值。本地端口ID TLV 515的数据字段包含的值与在创建发送本地ID TLV 515的门户的完整门户创建请求中命名的LLDP实例指定在LLDP门户ID TLV中发送的值相同。具体地,本地端口ID TLV 515包含的值标识试图建立和/或维护数据库对的本地节点(例如,本机系统或从节点)上的目标端口。机框ID和端口ID共同唯一地表示用于LRPDU消息传输的目标链路的本地部分。
相邻机框ID TLV 517的类型字段设为为typeNeighborChassisId的值。相邻机框ID TLV517的数据字段与本地机框ID TLV 513具有相同的格式,并且包含与本地门户关联的相邻门户的机框ID。具体地,相邻机框ID TLV 517包含的值标识充当Hello LRPDU消息500的目的地的相邻节点(例如,机器)。相邻节点包含用于建立和/或维护数据库对的本机系统或从系统(例如,包含或耦合到相邻注册方或相邻申请方或相邻注册方和相邻申请方)。
相邻端口ID TLV 519的类型字段设为typeNeighborPortId的值。相邻端口ID TLV519的数据字段与本地端口ID TLV 515具有相同的格式,并且包含与本地门户关联的相邻门户的端口ID。具体地,相邻端口ID TLV 519包含的值标识用于建立和/或维护数据库对的相邻节点(例如,本机系统或从节点)上的目标端口。相邻机框ID和相邻端口ID共同唯一地表示用于LRPDU消息传输的目标链路的相邻部分。因此,Hello LRPDU 500将目标链路表示为标识本地节点的本地机框ID、标识本地节点上的目标端口的本地端口ID、标识相邻节点的相邻机框ID以及标识相邻节点上的目标端口的相邻端口ID。
应用程序信息TLV 521字段设为typeAppInfo的值。应用程序信息TLV 521的数据字段包含通过启用门户创建请求提供的信息。数据通过LRP-DT连接的目的地端的门户状态指示提供给目的地侧的应用程序。这些数据可能是不透明的,LRP无法解释。应用程序信息TLV521是可选的。
相应地,类型字段501为1个八位字节,偏移量为0个八位字节;长度字段503为2个八位字节,偏移量为1个八位字节;AppId字段505为4个八位字节,偏移量为3个八位字节;Hello状态字段507为1个八位字节,偏移量为7个八位字节;本地门户编号字段509为4个八位字节,偏移量为8个八位字节;Hello时间字段511为2个八位字节,偏移量为12个八位字节;其余的TLV 513至521为可变长度,起始偏移量为14个八位字节。
图6示出了记录LRPDU消息600的示例性编码。记录LRPDU消息600可以实现记录LRPDU消息407。因此,记录LRPDU消息600可以用于维护本机系统110和/或130、代理210和/或230、从节点240和/或250和/或数据库系统300中的数据库对同步。记录LRPDU消息600包括类型字段601和长度字段603,这两者分别类似于类型字段501和长度字段503。类型字段601包含的值可以是2,指示记录LRPDU消息600(例如,typeRecordLRPDU),而长度字段603包含记录LRPDU消息600的长度。记录LRPDU消息600的数据字段的前2个八位字节是本地门户编号字段609。本地门户编号字段609对发送方门户的机框ID、端口ID和appId进行编码。这与针对同一个门户在Hello LRPDU消息500中发送的值相同。接下来是记录字段630中的0个或多个记录。
每个记录包括记录编号字段631、序列号字段633、校验和字段635,可选包括数据长度字段637和应用程序数据字段639。记录编号字段631包含的数据指示已更新的应用程序数据库中的记录。序列号字段633包含的数据指示与对应记录关联的版本号和/或变更次数。校验和字段635包括纠错数据,例如根据包含在对应记录中的值(例如,记录编号字段631、序列号字段633、数据长度字段637和/或应用程序数据字段639中的值)来计算的2个八位字节值。若存在,数据长度字段637指示对应记录中的数据的长度和/或应用程序数据字段639的长度。若存在,应用程序数据字段639包含从申请方数据库发送到注册方数据库的更新记录。
相应地,记录LRPDU消息600可以包括指示在申请方数据库中更新的记录的一个或多个记录编号以及标识包括在申请方数据库中更新的记录中包含的更新的一个或多个序列号。此外,类型字段601为1个八位字节,偏移量为0个八位字节;长度字段603为2个八位字节,偏移量为1个八位字节;本地门户编号字段609为4个八位字节,偏移量为3个八位字节;记录字段630为可变长度,偏移量为7个八位字节。而且,每条记录包含4个八位字节的偏移量为0个八位字节的记录编号字段631,4个八位字节的偏移量为4个八位字节的序列号字段633,2个八位字节的偏移量为8个八位字节的校验和字段635,2个八位字节的偏移量为10个八位字节的数据长度字段637,0到65520个八位字节的偏移量为12个八位字节的应用程序数据字段639,其中记录偏移量从记录的起始处开始测量。
图7示出了部分列表LRPDU消息700的示例性编码。部分列表LRPDU消息700可以实现部分列表LRPDU消息409。因此,部分列表LRPDU消息700可以用于维护本机系统110和/或130、代理210和/或230、从节点240和/或250和/或数据库系统300中的数据库对同步。部分列表LRPDU消息700包含类型字段701和长度字段703,这两者分别类似于类型字段501和长度字段503。类似字段701包含的值可以为3,指示部分列表LRPDU消息700(例如,typePartialListLRPDU),而长度字段703包含部分列表LRPDU消息700的长度。
部分列表LRPDU消息700的数据字段的前2个八位字节是本地门户编号字段709。本地门户编号字段709对发送方门户的机框ID、端口ID和appId进行编码。这与针对同一个门户在Hello LRPDU消息500中发送的值相同。接下来是0个或多个记录标头730,记录标头730基本类似于记录630,但不包含记录数据。具体地,每个记录标头730包括记录编号字段731、序列号字段733和校验和字段735,这三者基本上分别类似于记录编号字段631、序列号字段633和校验和字段635。此外,记录编号字段731和序列号字段733包括的值由注册方添加,与记录LRPDU消息600中的对应记录630的对应值(例如,包含在申请方的记录LRPDU消息600中)匹配。因此,记录标头730确认接收记录630。
因此,部分列表LRPDU消息700确认记录LRPDU消息600,部分列表LRPDU消息700包括确认至少一个更新记录630的至少一个记录标头730。此外,记录标头730包括记录编号字段731中指示更新记录(例如,记录630)的记录编号以及序列号字段733中标识更新记录(例如,记录630)中包含的更新的序列号。
图8示出了完整列表LRPDU消息800的示例性编码。完整列表LRPDU消息800可以实现完整列表LRPDU消息413、418和/或421。因此,完整列表LRPDU消息800可以用于维护本机系统110和/或130、代理210和/或230、从节点240和/或250和/或数据库系统300中的数据库对同步。完整列表LRPDU消息800包含类型字段801和长度字段803,这两者分别类似于类型字段501和长度字段503。类型字段801包含的值可以是4,指示完整列表LRPDU消息800(例如,typeCompleteListLRPDU),而长度字段803包含完整列表LRPDU消息800的长度。
完整列表LRPDU消息800的数据字段的前2个八位字节是本地门户编号字段809。本地门户编号字段809对发送方门户的机框ID、端口ID和appId进行编码。这与针对同一个门户在Hello LRPDU消息500中发送的值相同。接下来是第一个记录编号字段823和最后一个记录编号字段825,这两者均为4个八位字节长,包括完整列表LRPDU消息800所包括的最小记录编号值和最大记录编号值。例如,第一个记录编号字段823和最后一个记录编号字段825分别包含存储在注册方中的第一个记录和最后一个记录。
接下来是0个或多个记录标头830,记录标头830基本上类似于记录标头730。然而,记录标头830包含注册方数据库中的所有记录标头,而不仅仅包含已确认的更新记录对应的记录标头。每个记录标头830包括记录编号字段831、序列号字段833和校验和字段835,这三者基本上分别类似于记录编号字段731、序列号字段733和校验和字段735。
在完整列表LRPDU消息800中发送的每个记录编号831都包含一个值,该值大于或等于第一个记录编号字段823中的值且小于或等于最后一个记录编号字段825中的值。第一个记录编号字段823和最后一个记录编号字段825使得注册方已知的完整记录列表在一个以上完整列表LRPDU消息800之间拆分。所有完整列表LRPDU消息800中的成对第一个记录编号和最后一个记录编号包括一个完整记录列表,该完整记录列表可以涵盖从0到4294967295之间的所有可能记录编号。
图9为在本机系统110和/或130、代理210和/或230、从节点240和/或250和/或数据库系统300中建立数据库对的示例性方法900的流程图。方法900采用方法400中的信令,例如Hello LRPDU消息401、403和/或500。为了论述清楚,从操作申请方数据库的本地节点的角度论述方法900,但是也可以在操作注册方的节点(例如,本地节点或相邻节点)上整体或部分执行方法900。
当本地节点希望建立数据库对以与相邻节点同步时,方法900开始。在步骤901处,本地节点接收Hello消息。Hello消息包括AppId以及本地节点的目标端口与相邻节点的目标端口之间的目标链路。当本地节点是本机系统时,目标端口位于本地节点上。当本地节点是代理时,目标端口位于从节点上。Hello消息可以是Hello LRPDU消息,例如Hello LRPDU消息401、403和/或500。此外,Hello LRPDU消息可以将目标链路表示为标识本地节点或对应从节点的本地机框ID、标识本地节点或对应从节点上的目标端口的本地端口ID、标识相邻节点或对应从节点的相邻机框ID以及标识相邻节点或对应从节点上的目标端口的相邻端口ID。为了完成Hello消息交换,本地节点也会向相邻节点发送对应的Hello消息。这种Hello消息可以基本上类似于本地节点接收的带有不同本地门户编号的Hello消息。例如,本地节点发送的Hello消息包含与本地节点关联的本地门户编号,而本地节点接收到的Hello消息包含与相邻节点关联的本地门户编号。这些消息可以按任意顺序发送。
在步骤903中,本地节点和/或对应门户确定AppId与用于执行数据库同步的应用程序关联。根据AppId与数据库同步关联的确定结果,在步骤905中,在本地节点的存储器中建立本地数据库。本地数据库作为数据库对的一部分以供应用程序使用。数据库对包括在相邻节点中(例如,通过相邻节点的门户)建立的相邻数据库。在一些示例中,本地数据库可以包括申请方数据库,以存储本地记录向相邻数据库中的注册方数据库发送。在一些示例中,本地数据库包括注册方数据库,以从相邻数据库中的申请方数据库接收相邻记录。在一些示例中,本地数据库同时包括申请方数据库和注册方数据库。
在步骤907中,将数据库对与目标链路关联(例如,在本机系统和/或代理对应的从节点)。这种关联确保了转发到申请方/注册方的LRPDU消息能够到达正确的门户,因为门户位于目标端口的本地节点上,或者因为目标端口位于一台用于将这些消息转发到包含门户并在本地节点上运行的代理的从节点上。
在步骤909中,本地节点/门户开始通过目标链路控制/管理本地数据库与相邻数据库的同步。这种控制可以通过目标链路在LRPDU消息中将记录信息发生到相邻数据库来实现。这些记录信息可以包括记录、记录标头或其组合。例如,这些LRPDU消息可以包括更多的Hello LRPDU消息500、记录LRPDU消息600、部分列表LRPDU消息700、完整列表LRPDU消息800和/或方法400中的任何LRPDU消息。
图10为在完成方法900之后管理数据库对同步的示例性方法1000的流程图。方法1000可以在本机系统110和/或130、代理210和/或230、从节点240和/或250和/或数据库系统300上执行。方法1000采用方法400中的信令。此外,方法1000可以采用LRPDU消息,例如Hello LRPDU消息500、记录LRPDU消息600、部分列表LRPDU消息700、完整列表LRPDU消息800和/或其组合。为了论述清楚,从操作申请方数据库的本地节点的角度论述方法1000,但是也可以在操作注册方的节点(例如,本地节点或相邻节点)上整体或部分执行方法1000。
在步骤1001中,应用程序对申请方数据库中的一个或多个记录进行变更。相应地,本地节点的门户例如通过相邻门户向相邻节点的注册方数据库发送一个或多个记录LRPDU消息。记录LRPDU消息指示对存储在本地节点的申请方数据库中的记录进行更新,并且还可以包括这些更新记录。例如,记录LRPDU消息可以包括指示在申请方数据库中更新的记录的一个或多个记录编号以及标识在申请方数据库中更新的记录中包含的更新的一个或多个序列号。更新记录在申请方数据库中也可标记为未确认。
在步骤1003中,门户接收确认步骤1001中的记录LRPDU消息的一个或多个LRPDU消息。在一些示例中,确认记录LRPDU消息的LRPDU消息包括部分列表LRPDU消息。部分列表LRPDU消息包括确认步骤1001中的至少一个更新记录的至少一个记录标头。至少一个记录标头包括指示步骤1001中的更新记录的记录编号和步骤1001中的更新记录中包含的更新的序列号。在一些示例中,确认记录LRPDU消息的LRPDU消息可以包括完整列表LRPDU消息。完整列表LRPDU消息包括注册方数据库中所有记录对应的记录标头。此外,完整列表LRPDU消息包括指示存储在注册方数据库中的第一个记录的第一个记录编号字段和指示存储在注册方数据库中的最后一个记录的最后一个记录编号字段。而且,记录标头包括指示存储在注册方数据库中的记录的记录号以及标识存储在注册方数据库中的记录所包含的更新的序号。
在步骤1005中,根据步骤1003中的部分列表LRPDU消息和/或完整列表LRPDU消息中的记录标头,将申请方数据库中的至少一个更新记录标记为经过注册方数据库确认。
在步骤1007中,门户/申请方可以确定申请方数据库中的所有更新记录都经过注册方数据库通过LRPDU消息确认。根据步骤1007中的申请方数据库中的所有更新记录都经过注册方数据库通过LRPDU消息确认的确定结果,在步骤1009中,门户/申请方通知应用程序申请方数据库与注册方数据库已同步。
在一些情况下,记录LRPDU消息可能无法到达注册方,和/或部分列表LRPDU消息可能在返回申请方途中被丢弃。在这些情况下,在可选步骤1011中,当记录LRPDU消息定时器超时且未接收到对应的部分列表LRPDU消息时,门户向应用程序生成失败通知。
步骤1013也是可选的。在一些示例中,门户/申请方可以用于向注册方数据库发送请求完整列表LRPDU消息。注册方/相邻门户使用完整列表LRPDU消息进行响应。因此,本地节点上的门户/申请方从注册方数据库接收完整列表LRPDU消息,以响应请求完整列表LRPDU消息。
图11为在执行方法900之后和在执行方法1000过程中/之后在发生连接中断的情况下仍然管理数据库同步的示例性方法1100的流程图。方法1100可以在本机系统110和/或130、代理210和/或230、从节点240和/或250和/或数据库系统300上执行。方法1100采用方法400中的信令。此外,方法1100可以采用LRPDU消息,例如Hello LRPDU消息500、记录LRPDU消息600、部分列表LRPDU消息700、完整列表LRPDU消息800和/或其组合。为了论述清楚,从操作申请方数据库的本地节点的角度论述方法1100,但是也可以在操作注册方的节点(例如,本地节点或相邻节点)上整体或部分执行方法1100。
当Hello LRPDU消息的交换失败,指示存在连接中断时,方法1100开始。在步骤1101中,为应用程序生成断开代码。断开代码指示Hello LRPDU消息的交换失败。这也表明不太可能收到发送给相邻节点/注册方的更多消息,而且之前未确认的消息可能没有到达注册方。
申请方可以在重新建立连接时确定重置数据库对。在这种情况下,采用方法900。然而,申请方也可以确定在重新建立连接时使当前申请方数据库与注册方数据库重新同步。在这种情况下,在步骤1103中,门户从应用程序接收命令,以在存在断开代码的情况下仍然维护本地节点的存储器中的申请方数据库。
在步骤1105中,门户在未成功交换Hello消息后重置申请方数据库中的通知定时器。这样能够在重新建立连接后接收到完整列表LRPDU消息之前不发送记录LRPDU消息。
Hello LRPDU消息可以定期发送,以试图重新建立连接。当注册方数据库在连接断开后接收Hello LRPDU消息时,注册方使用完整列表LRPDU消息进行响应。相应地,在步骤1107中,在成功交换Hello LRPDU消息后,申请方/门户从相邻节点的注册方数据库接收完整列表LRPDU消息。完整列表LRPDU消息包括注册方数据库中所有记录对应的记录标头。
在步骤1109中,门户/申请方将完整列表LRPDU消息中的记录标头与存储在申请方数据库中的记录标头进行比较,以使申请方数据库与注册方数据库重新同步。具体地,在步骤1111中,门户/应用程序判断完整列表LRPDU消息中的记录标头与申请方数据库中的记录标头之间是否存在记录不匹配。
当门户/申请方确定申请方数据库中的一个或多个记录标头与完整列表LRPDU消息中的一个或多个记录标头之间存在不匹配时,方法1100进入步骤1113。不匹配表示至少一个之前的记录LLRPDU消息丢失。因此,申请方判断哪些记录更新没有表示在完整列表LRPDU消息中。在步骤1113处,申请方/门户向注册方数据库发送一个或多个记录LRPDU消息。记录LRPDU消息根据需要包含更新后的记录标头,以处理不匹配问题并使数据库对同步。
当门户/申请方确定申请方数据库中的记录标头与注册方数据库中的记录标头之间存在匹配时,方法1100进入步骤1115。根据匹配的确定结果,在步骤1115中,门户/申请方可以通知应用程序申请方数据库与注册方数据库已同步。
图12为根据本公开实施例的用于管理数据库同步的示例性网络节点1200的示意图。网络节点1200适合于实施本文描述的所公开的示例/实施例。例如,网络节点1200可用于实现本机系统110/130、代理210/230、从节点240/250、其组合和/或本文描述的任何本地节点和/或相邻节点。例如,网络节点1200可以实现数据库系统300。
网络节点1200包括下行端口1220、上行端口1250和/或收发单元(Tx/Rx)1210,收发单元1210包括用于通过网络在上行和/或下行方向上进行数据通信的发射器和/或接收器。网络节点1200还包括处理器1230和存储器1232。处理器1230包括处理数据的逻辑单元和/或中央处理器(central processing unit,CPU),存储器1232用于存储数据。网络节点1200还可以包括耦合到上行端口1250和/或下行端口1220的光到电(optical-to-lectal,OE)组件、电到光(electric-to-optical,EO)组件和/或无线通信组件,用于通过光通信网络或无线通信网络进行数据通信。网络节点1200还可以包括用于向用户发送数据和从用户接收数据的输入和/或输出(input/output,I/O)设备。这些I/O设备可以包括输出设备,例如用于显示视频数据的显示器、用于输出音频数据的扬声器等。I/O设备还可以包括输入设备,例如键盘、鼠标、轨迹球等,和/或用于与这些输出设备交互的对应接口。
处理器1230由硬件和软件实现。处理器1230可以实现为一个或多个CPU芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)和数字信号处理器(digitalsignal processor,DSP)。处理器1230与下行端口1220、Tx/Rx 1210、上行端口1250和存储器1232通信。处理器1230包括LRP-DS模块1214。LRP-DS模块1214实施上述公开实施例,例如方法400、900、1000、1100和/或本文描述的任何其它方法/机制。此外,LRP-DS模块1214可发送、接收和/或处理LLPDU消息,例如Hello LRPDU消息500、记录LRPDU消息600、部分列表LRPDU消息700、完整列表LRPDU消息800和/或其组合。例如,LRP-DS模块1214可以用于通过Hello LRPDU消息建立连接并建立需要同步的数据库对。再例如,LRP-DS模块1214可以用于通知应用程序申请方的所有记录何时经过注册方确认和/或通知应用程序注册方何时不能确认记录更新。又例如,LRP-DS模块1214可以用于在连接断开后重新同步数据库对,而无需将申请方的所有记录都发送到注册方。因此,LRP-DS模块1214完善了网络节点1200的功能。此外,LRP-DS模块1214解决了特定于计算机领域的内存管理问题。而且,DS模块1214影响了网络节点1200到不同状态的转换。可以以存储在存储器1232中并由处理器1230执行的指令(例如,以存储在非瞬时性介质上的计算机程序产品)来实现LRP-DS模块1214。
存储器1232包括一个或多个存储器类型,例如磁盘、磁带机、固态硬盘(solid-state drive,SSD)、只读存储器(read only memory,ROM)、随机存取存储器(randomaccess memory,RAM)、闪存、三态内容寻址存储器(ternary content addressablememory,TCAM)、静态随机存取存储器(static random access memory,SRAM)等。存储器1232可用作溢出数据存储设备,以在选择执行程序时存储这些程序并且存储在程序执行过程中读取的指令和数据。
图13为用于建立数据库对的示例性设备1300的示意图。设备1300可用于实施方法400和/或方法900。设备1300包括接收模块1301,用于接收Hello消息。Hello消息包括AppId以及本地节点与相邻节点之间的目标链路。设备1300还包括确定模块1303,用于确定AppId与用于执行数据库同步的应用程序关联。设备1300还包括数据库对建立模块1305,用于在本地节点中建立本地数据库,作为数据库对的一部分供应用程序使用.数据库对包括相邻节点的相邻数据库。设备1300还包括关联模块1307,用于将数据库对与目标链路关联。该设备还包括同步控制模块1309,用于通过目标链路控制本地数据库与相邻数据库的同步。
图14为用于管理数据库对同步的示例性设备1400的示意图。设备1400可以用于实施方法400和/或方法1000。设备1400包括发送模块1401,用于向相邻节点的注册方数据库发送一个或多个记录LRPDU消息。记录LRPDU消息指示对存储在本地节点的申请方数据库中的记录进行更新。设备1400还包括接收模块1403,用于接收确认记录LRPDU消息的一个或多个LRPDU消息。设备1400还包括存储器模块1405,用于将申请方数据库中的至少一个更新记录标记为经过注册方数据库确认。设备1400还包括确定模块1407,用于确定申请方数据库中的所有更新记录都经过注册方数据库通过LRPDU消息确认。设备1400还包括通知模块1409,用于根据申请方数据库中的所有更新记录都经过注册方数据库通过LRPDU消息确认的确定结果,通知应用程序申请方数据与注册方数据库已同步。
图15为用于在发生连接中断的情况下仍然维护数据库同步的示例性设备1500的示意图。设备1500可以用于实施方法400和/或方法1100。设备1500包括断开模块1501,用于为应用程序生成断开代码。断开代码指示Hello LRPDU消息的交换失败。设备1500还包括命令模块1503,用于从应用程序接收命令,以在存在断开代码的情况下仍然维护本地节点的存储器中的申请方数据库。设备1500还包括接收模块1505,用于在成功交换Hello消息后,从相邻节点的注册方数据库接收完整列表LRPDU消息。完整列表LRPDU消息包括注册方数据库中所有记录对应的记录标头。设备1500还包括记录比较模块1507,用于将完整列表LRPDU消息中的记录标头与申请方数据库中的记录标头进行比较,以使申请方数据库与注册方数据库重新同步。
在一个实施例中,一种节点或元件包括:发送模块,用于向相邻节点的注册方数据库发送一个或多个记录链路本地注册协议数据单元(Link-Local Registration ProtocolData Unit,LRPDU)消息,所述记录LRPDU消息指示对存储所述本地节点的申请方数据库中的记录进行更新;以及接收模块,用于接收确认所述记录LRPDU消息的一个或多个LRPDU消息。所述节点或元件还包括:存储器模块,用于将所述申请方数据库中的至少一条更新记录标记为经过所述注册方数据库确认。所述节点或元件还包括:确定模块,用于确定所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认;通知模块,用于根据所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认的确定结果,通知应用程序所述申请方数据库与所述注册方数据库已同步。
当第一组件与第二组件之间不存在除了线、轨迹或其它介质之外的中间组件时,第一组件直接耦合到第二组件。当第一组件与第二组件之间存在除了线、轨迹或其它介质之外的中间组件时,第一组件间接耦合到第二组件。术语“耦合”及其变体包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”是指以下描述的数字的±10%。
虽然本公开提供了多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本公开的实例应被视为说明性而非限制性的,且本公开并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或不实施。
此外,在不脱离本公开的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法进行组合或合并。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离本文公开的精神和范围。
Claims (26)
1.一种在本地节点中实施的方法,其特征在于,所述方法包括:
本地节点的接收器接收Hello消息,所述Hello消息包括应用程序标识符AppId以及本地节点的目标端口与相邻节点的目标端口之间的目标链路;
所述本地节点的处理器确定所述AppId与用于执行数据库同步的应用程序关联;
在所述本地节点的存储器中建立本地数据库,作为数据库对的一部分供所述应用程序使用,所述数据库对包括所述相邻节点的相邻数据库;
所述处理器将所述数据库对与所述目标链路关联;
通过所述目标链路控制所述本地数据库与所述相邻数据库的同步。
2.根据权利要求1所述的方法,其特征在于,控制所述本地数据库与所述相邻数据库的同步包括:所述本地节点的发射器通过所述目标链路在链路本地注册协议数据单元LRPDU消息中向所述相邻数据库发送记录信息。
3.根据权利要求1或2所述的方法,其特征在于,所述本地数据库包括申请方数据库,以存储本地记录,发送至所述相邻数据库中的注册方数据库。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述本地数据库包括注册方数据库,以从所述相邻数据库中的申请方数据库接收相邻记录。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述Hello消息是Hello LRPDU,所述Hello LRPDU将所述目标链路表示为标识所述本地节点的本地机框标识符ID、标识所述本地节点上的目的端口的本地端口ID、标识所述相邻节点的相邻机框ID以及标识所述相邻节点上的目标端口的相邻端口ID。
6.一种在本地节点中实施的方法,其特征在于,所述方法包括:
本地节点的发射器向相邻节点的注册方数据库发送一个或多个记录链路本地注册协议数据单元LRPDU消息,所述记录LRPDU消息指示对存储在所述本地节点的申请方数据库中的记录进行更新;
本地节点的接收器接收确认所述记录LRPDU消息的一个或多个LRPDU消息;
在所述本地节点的存储器中将所述申请方数据库中的至少一条更新记录标记为经过所述注册方数据库确认;
通过所述处理器通知应用程序所述申请方数据库与所述注册方数据库已同步。
7.根据权利要求1至6任一项所述的方法,其特征在于,还包括:所述本地节点的处理器确定所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认,其中所述通知应用程序所述申请方数据库与所述注册方数据库已同步是根据所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认的确定结果发起的。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述确认所述记录LRPDU消息的LRPDU消息包括部分列表LRPDU消息,所述部分列表LRPDU消息包括确认所述至少一个更新记录的至少一个记录标头。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述记录标头包括指示所述更新记录的记录编号以及标识所述更新记录中包含的更新的序列号。
10.根据权利要求1至9任一项所述的方法,其特征在于,还包括:当记录LRPDU消息定时器超时且未接收到对应的部分列表LRPDU消息时,向所述应用程序生成失败通知。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述确认所述记录LRPDU消息的LRPDU消息包括完整列表LRPDU消息,所述完整列表LRPDU消息包括所述注册方数据库中所有记录对应的记录标头。
12.根据权利要求1至11任一项所述的方法,其特征在于,所述完整列表LRPDU消息包括指示存储在所述注册方数据库中的第一个记录的第一个记录编号字段以及指示存储在所述注册方数据库中的最后一个记录的最后一个记录编号字段,所述记录标头包括指示存储在所述注册方数据库中的记录的记录编号以及标识存储在所述注册方数据库中的记录所包含的更新的序列号。
13.根据权利要求1至12任一项所述的方法,其特征在于,所述记录LRPDU消息包括指示在所述申请方数据库中更新的记录的一个或多个记录编号以及标识所述在所述申请方数据库中更新的记录中包含的更新的一个或多个序列号。
14.根据权利要求1至13任一项所述的方法,其特征在于,还包括:
所述发射器向所述注册方数据库发送请求完整列表LRPDU消息;
所述接收器从所述注册方数据库接收完整列表LRPDU消息,以响应所述请求完整列表LRPDU消息。
15.一种在本地节点中实施的方法,其特征在于,所述方法包括:
本地节点的处理器为应用程序生成断开代码,所述断开代码指示Hello链路本地注册协议数据单元LRPDU消息的交换失败;
所述处理器从所述应用程序接收命令,以在存在所述断开代码的情况下仍然维护所述本地节点的存储器中的申请方数据库;
在成功交换Hello LRPDU消息后,所述本地节点的接收器从相邻节点的注册方数据库接收完整列表LRPDU消息,所述完整列表LRPDU消息包括所述注册方数据库中所有记录对应的记录标头;
所述处理器将所述完整列表LRPDU消息中的记录标头与所述申请方数据库中的记录标头进行比较,以使所述申请方数据库与所述注册方数据库重新同步。
16.根据权利要求1至15任一项所述的方法,其特征在于,还包括:在未成功交换Hello消息后,重置所述申请方数据库中的通知定时器,以在接收到所述完整列表LRPDU消息之前不发送记录LRPDU消息。
17.根据权利要求1至16任一项所述的方法,其特征在于,还包括:
所述处理器确定所述申请方数据库中的一个或多个记录标头与所述完整列表LRPDU消息中的一个或多个记录标头之间存在不匹配;
向所述注册方数据库发送记录LRPDU消息,所述记录LRPDU消息包含处理不匹配的更新后的记录标头。
18.根据权利要求1至17任一项所述的方法,其特征在于,还包括:
所述处理器确定所述申请方数据库中的记录标头与所述注册方数据库中的记录标头之间存在匹配;
根据匹配的确定结果,通过处理器通知所述应用程序所述申请方数据库与所述注册方数据库已同步。
19.根据权利要求1所述的方法,其特征在于,还包括权利要求6和15任一项所述的方法。
20.根据权利要求6所述的方法,其特征在于,还包括权利要求15所述的方法。
21.一种本地节点,其特征在于,包括存储器、发射器、接收器和处理器,所述处理器耦合到所述存储器、所述发射器和所述接收器,所述本地节点用于执行根据权利要求1至20任一项所述的方法。
22.一种非瞬时性计算机可读介质,其特征在于,包括在本地节点使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质上的计算机可执行指令,所述计算机可执行指令在由处理器执行时,使得所述本地节点执行根据权利要求1至20任一项所述的方法。
23.一种本地节点,其特征在于,包括:
接收模块,用于接收Hello消息,所述Hello消息包括应用程序标识符AppId以及本地节点与相邻节点之间的目标链路;
确定模块,用于确定所述AppId与用于执行数据库同步的应用程序关联;
数据库对建立模块,用于在所述本地节点中建立本地数据库,作为数据库对的一部分供所述应用程序使用,所述数据库对包括所述相邻节点的相邻数据库;
关联模块,用于将所述数据库对与所述目标链路关联;
同步控制模块,用于通过所述目标链路控制所述本地数据库与所述相邻数据库的同步。
24.一种本地节点,其特征在于,包括:
发送模块,用于向相邻节点的注册方数据库发送一个或多个记录链路本地注册协议数据单元LRPDU消息,所述记录LRPDU消息指示对存储所述本地节点的申请方数据库中的记录进行更新;
接收模块,用于接收确认所述记录LRPDU消息的一个或多个LRPDU消息;
存储器模块,用于将所述申请方数据库中的至少一条更新记录标记为经过所述注册方数据库确认;
确定模块,用于确定所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认;
通知模块,用于根据所述申请方数据库中的所有更新记录都经过所述注册方数据库通过LRPDU消息确认的确定结果,通知应用程序所述申请方数据库与所述注册方数据库已同步。
25.一种本地节点,其特征在于,包括:
断开模块,用于为应用程序生成断开代码,所述断开代码指示Hello链路本地注册协议数据单元LRPDU消息的交换失败;
命令模块,用于从所述应用程序接收命令,以在存在所述断开代码的情况下仍然维护所述本地节点的存储器中的申请方数据库;
接收模块,用于在成功交换Hello消息后,从相邻节点的注册方数据库接收完整列表LRPDU消息,所述完整列表LRPDU消息包括所述注册方数据库中所有记录对应的记录标头;
记录比较模块,用于将所述完整列表LRPDU消息中的记录标头与所述申请方数据库中的记录标头进行比较,以使所述申请方数据库与所述注册方数据库重新同步。
26.根据权利要求23至25任一项所述本地节点,其特征在于,还包括用于执行根据权利要求1至20任一项所述的方法的模块。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862655625P | 2018-04-10 | 2018-04-10 | |
US62/655,625 | 2018-04-10 | ||
US201862782993P | 2018-12-20 | 2018-12-20 | |
US62/782,993 | 2018-12-20 | ||
PCT/CN2019/081640 WO2019196760A1 (en) | 2018-04-10 | 2019-04-06 | Point-to-point database synchronization over a transport protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111937327A true CN111937327A (zh) | 2020-11-13 |
Family
ID=68163912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980024243.XA Pending CN111937327A (zh) | 2018-04-10 | 2019-04-06 | 基于传输协议的点对点数据库同步 |
Country Status (10)
Country | Link |
---|---|
US (2) | US11805193B2 (zh) |
EP (1) | EP3776933A4 (zh) |
JP (3) | JP7128288B2 (zh) |
CN (1) | CN111937327A (zh) |
AU (1) | AU2019251120B9 (zh) |
BR (1) | BR112020020799A2 (zh) |
CA (3) | CA3159276A1 (zh) |
MX (1) | MX2020010658A (zh) |
SG (1) | SG11202009781SA (zh) |
WO (1) | WO2019196760A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113259182A (zh) * | 2021-07-02 | 2021-08-13 | 北京华云安信息技术有限公司 | 一种基于自主决策的通信路径监控方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112260923B (zh) * | 2019-07-22 | 2023-05-02 | 中兴通讯股份有限公司 | 一种桥接网络信息通告方法和设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477543B1 (en) * | 1998-10-23 | 2002-11-05 | International Business Machines Corporation | Method, apparatus and program storage device for a client and adaptive synchronization and transformation server |
JP4546629B2 (ja) * | 2000-05-25 | 2010-09-15 | 株式会社日立製作所 | 記憶システム、記憶システムの応答方法及び記録媒体 |
KR100471567B1 (ko) * | 2000-07-29 | 2005-03-07 | 엘지전자 주식회사 | 이중화 시스템 환경에서 데이터 동기화를 위한 트랜잭션관리 방법 |
US6606694B2 (en) * | 2000-12-22 | 2003-08-12 | Bull Hn Information Systems Inc. | Write logging in mirrored disk subsystems |
US7836015B1 (en) * | 2002-05-02 | 2010-11-16 | Access Systems Americas, Inc. | Fast synchronization of computer databases using coverage status |
US8009696B2 (en) * | 2004-08-06 | 2011-08-30 | Ipeak Networks Incorporated | System and method for achieving accelerated throughput |
CN101425961B (zh) * | 2007-10-31 | 2012-04-04 | 华为技术有限公司 | 实现链路状态数据库同步方法、路由器及线路板、主控板 |
US20100174863A1 (en) * | 2007-11-30 | 2010-07-08 | Yahoo! Inc. | System for providing scalable in-memory caching for a distributed database |
JP2009163640A (ja) * | 2008-01-09 | 2009-07-23 | Ricoh Co Ltd | 情報提供装置、情報提供方法、プログラムおよび記録媒体 |
CN101516131B (zh) * | 2008-02-18 | 2012-04-04 | 华为技术有限公司 | 一种数据同步的方法、系统和装置 |
JP2011034175A (ja) | 2009-07-30 | 2011-02-17 | Yamatake Corp | トランザクション制御装置、トランザクション処理方法およびプログラム |
US20160246711A9 (en) * | 2010-01-28 | 2016-08-25 | Hewlett-Packard Development Company, L. P. | Interface methods and apparatus for memory devices |
JP5470148B2 (ja) | 2010-04-20 | 2014-04-16 | 日本放送協会 | ノード装置及びコンピュータプログラム |
WO2011144495A1 (en) * | 2010-05-19 | 2011-11-24 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and apparatus for use in an openflow network |
FR2975560B1 (fr) | 2011-05-17 | 2013-06-14 | Sagem Defense Securite | Systeme de communication, et procede, programme d'ordinateur et moyens de stockage correspondants |
CN102546427B (zh) * | 2012-02-02 | 2015-04-29 | 杭州华三通信技术有限公司 | 一种基于ospf协议的平滑重启方法和路由器 |
CN102546426B (zh) * | 2012-02-02 | 2014-09-24 | 杭州华三通信技术有限公司 | 用于实现以太网承载光纤通道的路由生成方法和装置 |
CN102831223A (zh) * | 2012-08-23 | 2012-12-19 | 大唐移动通信设备有限公司 | 一种分布式数据库的管理方法和系统 |
US10594604B1 (en) * | 2013-10-08 | 2020-03-17 | Juniper Networks, Inc. | End to end application identification and analytics of tunnel encapsulated traffic in the underlay |
JP2015108927A (ja) | 2013-12-04 | 2015-06-11 | 日本電気株式会社 | 情報処理装置、データ同期方法及びプログラム |
US11310350B2 (en) * | 2017-01-04 | 2022-04-19 | Futurewei Technologies, Inc. | Network bridge between different network communication protocols |
-
2019
- 2019-04-06 CA CA3159276A patent/CA3159276A1/en active Pending
- 2019-04-06 CA CA3159273A patent/CA3159273A1/en active Pending
- 2019-04-06 JP JP2020555332A patent/JP7128288B2/ja active Active
- 2019-04-06 SG SG11202009781SA patent/SG11202009781SA/en unknown
- 2019-04-06 EP EP19785055.5A patent/EP3776933A4/en active Pending
- 2019-04-06 BR BR112020020799-3A patent/BR112020020799A2/pt unknown
- 2019-04-06 AU AU2019251120A patent/AU2019251120B9/en active Active
- 2019-04-06 WO PCT/CN2019/081640 patent/WO2019196760A1/en unknown
- 2019-04-06 CA CA3096411A patent/CA3096411A1/en active Pending
- 2019-04-06 MX MX2020010658A patent/MX2020010658A/es unknown
- 2019-04-06 CN CN201980024243.XA patent/CN111937327A/zh active Pending
-
2020
- 2020-10-08 US US17/066,003 patent/US11805193B2/en active Active
-
2022
- 2022-08-18 JP JP2022130560A patent/JP2022172168A/ja active Pending
- 2022-08-18 JP JP2022130561A patent/JP7479427B2/ja active Active
-
2023
- 2023-10-16 US US18/487,530 patent/US20240048645A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113259182A (zh) * | 2021-07-02 | 2021-08-13 | 北京华云安信息技术有限公司 | 一种基于自主决策的通信路径监控方法及装置 |
CN113259182B (zh) * | 2021-07-02 | 2021-09-24 | 北京华云安信息技术有限公司 | 一种基于自主决策的通信路径监控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
BR112020020799A2 (pt) | 2021-01-12 |
AU2019251120B9 (en) | 2023-08-03 |
MX2020010658A (es) | 2020-10-28 |
WO2019196760A1 (en) | 2019-10-17 |
CA3159273A1 (en) | 2019-10-17 |
US11805193B2 (en) | 2023-10-31 |
US20240048645A1 (en) | 2024-02-08 |
JP7479427B2 (ja) | 2024-05-08 |
CA3159276A1 (en) | 2019-10-17 |
JP2022172168A (ja) | 2022-11-15 |
JP2022167943A (ja) | 2022-11-04 |
EP3776933A4 (en) | 2021-04-21 |
SG11202009781SA (en) | 2020-10-29 |
AU2019251120A1 (en) | 2020-11-12 |
JP2021520554A (ja) | 2021-08-19 |
AU2019251120B2 (en) | 2023-07-13 |
EP3776933A1 (en) | 2021-02-17 |
CA3096411A1 (en) | 2019-10-17 |
JP7128288B2 (ja) | 2022-08-30 |
US20210029228A1 (en) | 2021-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7929422B2 (en) | Method of moving a transport connection among network hosts | |
JP5981533B2 (ja) | アクティブtcpアプリケーションからスタンバイtcpアプリケーションへのヒットレススイッチオーバ | |
JP7479427B2 (ja) | トランスポートプロトコル上でのポイント・ツー・ポイント・データベース同期 | |
JP6679498B2 (ja) | 無線メッシュネットワークにおいてパケットストームの時間長さを短縮するための方法及び装置 | |
US7903546B2 (en) | Detecting unavailable network connections | |
US8743881B2 (en) | Link data transmission method, node and system | |
US7496038B2 (en) | Method for faster detection and retransmission of lost TCP segments | |
US8780692B2 (en) | Accelerated routing convergence | |
WO2009067865A2 (en) | Method, router, line card and active master card for realizng a link state database synchronization | |
WO2015021799A1 (zh) | 数据链路的检测方法、装置、系统、控制器及网关 | |
US8239555B2 (en) | Method and apparatus for mobility agent recovery | |
US11196663B2 (en) | Method and device for multi-path retransmission in a network | |
US7535916B2 (en) | Method for sharing a transport connection across a multi-processor platform with limited inter-processor communications | |
TW202103475A (zh) | 終端設備管理方法、伺服器及終端設備 | |
US10454851B2 (en) | Optimized link failure convergence for resilient ethernet protocol networks | |
CN101841453A (zh) | 一种网络错误源的处理方法、系统及网络节点 | |
RU2783595C2 (ru) | Способ синхронизации баз данных между двумя пунктами с использованием транспортного протокола | |
WO2012103724A1 (zh) | 一种进程组和进程组中的异常组成员离开的方法 | |
JP2014003700A (ja) | 中継装置、及び、通信システム | |
CN116633996A (zh) | 网络连接优化方法、装置、设备及可读存储介质 | |
WO2017000759A1 (zh) | 一种移动性管理方法及网络设备 |
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 |