US9137331B2 - Adaptive replication - Google Patents

Adaptive replication Download PDF

Info

Publication number
US9137331B2
US9137331B2 US13/184,055 US201113184055A US9137331B2 US 9137331 B2 US9137331 B2 US 9137331B2 US 201113184055 A US201113184055 A US 201113184055A US 9137331 B2 US9137331 B2 US 9137331B2
Authority
US
United States
Prior art keywords
data
node
delay
retrieve
selected node
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.)
Expired - Fee Related, expires
Application number
US13/184,055
Other versions
US20130018987A1 (en
Inventor
David Robert Seaman
Blair James Wall
Christopher Carl Capson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SYNTERGY Inc
METALOGIX INTERNATIONAL GmbH
Original Assignee
METALOGIX INTERNATIONAL GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by METALOGIX INTERNATIONAL GmbH filed Critical METALOGIX INTERNATIONAL GmbH
Priority to US13/184,055 priority Critical patent/US9137331B2/en
Assigned to Syntergy, Inc. reassignment Syntergy, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CAPSON, CHRISTOPHER CARL, SEAMAN, DAVID ROBERT, WALL, BLAIR JAMES
Publication of US20130018987A1 publication Critical patent/US20130018987A1/en
Assigned to GOLD HILL CAPITAL 2008, L.P. reassignment GOLD HILL CAPITAL 2008, L.P. FIRST AMENDMENT TO IPSA Assignors: METALOGIX INTERNATIONAL GMBH
Assigned to FIFTH STREET MANAGEMENT LLC, AS ADMINISTRATIVE AGENT reassignment FIFTH STREET MANAGEMENT LLC, AS ADMINISTRATIVE AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: METALOGIX INTERNATIONAL GMBH
Assigned to METALOGIX INTERNATIONAL GMBH reassignment METALOGIX INTERNATIONAL GMBH RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: GOLD HILL CAPITAL 2008, L.P.
Application granted granted Critical
Publication of US9137331B2 publication Critical patent/US9137331B2/en
Assigned to METALOGIX INTERNATIONAL GMBH reassignment METALOGIX INTERNATIONAL GMBH RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: OAKTREE FUND ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT FOR THE LENDERS AND SUCCESSOR AGENT TO FIFTH STREET MANAGEMENT LLC
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • H04L67/327
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Definitions

  • the present disclosure is generally related to synchronization of data at nodes of a network. Since some networks may be challenged because of bandwidth, latency, packet loss or just general network availability, a network may not be able to support synchronization of data over the network. Further, synchronization of a node from one node to another can sometimes be inefficient and time consuming. There may also be problems when a node is required to synchronize to another node and has lost communication. The present disclosure presents solutions to these and other problems.
  • Adaptive replication can allow a node in a network to optimally determine where, when, and how to retrieve data from other nodes in the network.
  • adaptive replication may include receiving a notification corresponding to data at a first node in the network and selecting a node of multiple nodes in the network to retrieve the data from.
  • the first node may retrieve the data from any node within the network that has the data.
  • a node may add delays or select which node to retrieve data from based on a priority, such as a priority associated with the data, the network, or a node.
  • the node may also use a network bandwidth, latency, or any other system metric to determine where the optimal location is to retrieve the data.
  • the node can also be configured to use different metrics depending on time of day or any other conditions that might change.
  • a device for adaptive replication may include an interface for receiving and sending data; a memory; and a controller configured to implement adaptive replication.
  • the controller may be configured to receive a notification at a first node, the notification indicating that data is available for the first node to retrieve, the notification received from a second node.
  • the controller may also be configured to select a node of multiple nodes in the network to retrieve the data from, where the first node may retrieve the data from any node within the network that has the data, including the second node and retrieve the data from the selected node when the first node requests the data.
  • Another device for adaptive replication may include computer readable instructions stored in a memory that, when the instructions are executed by a processor, cause the processor to receive a notification, the notification indicating that data is available for the device to retrieve, the notification received from a second device.
  • the instructions may further cause the processor to select a node of multiple nodes in a network to retrieve the data from, where the device may retrieve the data from any node within the network that has the data; and retrieve the data from the selected node when the first node requests the data.
  • FIG. 1 is a diagram of an illustrative embodiment of a system for adaptive replication
  • FIG. 2 is a diagram of another illustrative embodiment of a system for adaptive replication
  • FIG. 3 is a flowchart of an illustrative embodiment of a method for adaptive replication
  • FIG. 4 is a flowchart of another illustrative embodiment of a method for adaptive replication.
  • the system 100 can include a node, such as nodes 102 , 104 , or 106 , that includes an adaptive replication module 108 .
  • the nodes 102 , 104 , and 106 may be computers, servers, or other devices that communicate with each other via one or more networks, such as networks 110 , 112 , and 114 .
  • One or more of the nodes 102 , 104 , and 106 may be a network operations center (NOC), though a NOC is not necessary.
  • NOC network operations center
  • node 102 may be a NOC that supports a fleet of ships, where node 104 represents a first ship and node 106 represents a second ship.
  • the networks 110 , 112 , and 114 may be wireless networks or wired networks and each network may have different characteristics.
  • the networks 110 , 112 , and 114 may have different data transfer rates, physical distances, data bandwidth, support capabilities, hardware components, processing speeds, methods used to convey data, or other characteristics.
  • at least one of the networks 110 , 112 , and 114 may have a low bandwidth that makes synchronization of data relatively slow or impractical.
  • the adaptive replication module(s) 108 allows the nodes 102 , 104 , and 106 to synchronize data between the nodes and perform the operations described herein.
  • the adaptive replication module(s) allow for flexible synchronization of data, where in some instances, a node is not pre-determined to synchronize with a specific other node.
  • the adaptive replication module may dynamically determine an optimal method and node to synchronize to.
  • the adaptive replication module(s) may include hardware circuitry, software, or any combination thereof.
  • a package may be any object that could be synchronized between nodes of a network and may consist of one or more objects.
  • a package may be a manifest, local or remote differential compression information, a replication package, another object, or any combination thereof.
  • a package or manifest which may consist of data representing events that have occurred at a node (such as file updates, etc.)
  • the node 102 can log information (such as events) that correspond to a package, such as time, object identification (such as an identifier of a file an event happened to), event identification (such as a pointer to a type of event), a locator (such as a uniform resource locator (URL) or an unique key), or any other metadata about an object, i.e. a check-out or published status.
  • a manifest may include a list of events corresponding to an object.
  • the manifest may be metadata containing information about a corresponding package or object, or a command that should be executed.
  • a manifest identification may be similar to a corresponding package identification, such as the same identification value or number with a different extension. For example, a task modified on a specific date can have an event identification that is included in a manifest.
  • the adaptive replication module 108 may tell other connected modules that the specific package is needed at their location.
  • the notification of the existence of the specific package can be a short and efficient transmission to other nodes and may contain the package identification and a list of locations that are known (at that time) to store the particular package.
  • the list of locations can include, at minimum, the originating node plus any other nodes that the originating node is aware of having the package.
  • the originating node may log which other nodes have been notified about the specific package.
  • Nodes that have received the notification of the existence of a specific package can log the existence of the specific package locally. However, each receiving node may first check to see if it has already been notified of that particular package by another node. If the receiving node is already aware of the existence of the package, there is no need to add a log for the existence of the package, and it can add this node to its list of locations that has the package or manifest. However, the receiving nodes can store a list of known locations that the package or manifest could be found at, which at minimum should include the node that just notified the receiving node about the package.
  • the node may fetch the metadata about the package by doing a sequence of bits requests for the corresponding manifest. For example, the node may fetch blocks of the manifest from the notifying node directly, fetch blocks of the manifest from different known sources, such as in a distributed file sharing system, or fetch blocks using another file transfer technology, such as the Binary Intelligent Transfer Service (BITS). Fetching the manifest over a system such as BITS can help when transmitting over a low bandwidth network.
  • BITS Binary Intelligent Transfer Service
  • the adaptive replication module 108 of the receiving node can examine the contents of the manifest to determine what further action may be required.
  • the manifest could contain a command to be executed, or a reference to a package to be fetched.
  • the node can also double check to see if the events or command indicated in the manifest have already been processed or are needed at the receiving node.
  • the receiving node may also notify all the other nodes of a replication group that have not received this package or manifest that it is required. In some instances, the receiving node can notify other nodes of the replication group when the package or manifest has been downloaded, the manifest has been received, or both, even if the other nodes might be able to fetch the package or the manifest from somewhere else.
  • the adaptive replication module 108 of the receiving node determines the package corresponding to the received manifest needs to be fetched, the adaptive replication module 108 can fetch the corresponding package, but the adaptive replication module 108 may decide where to retrieve it from based on known locations, which may have been received with the notification of the existence of the package. The adaptive replication module 108 may also determine where to fetch the package from based on preferred network connections or a round-robin attempt to locate the package at other nodes.
  • the package being retrieved should be on the source node, but if it is not there or not available, the retrieving node can look for the package at other nodes by requesting from another node in the replication group and eventually one of them should have the package even if the requesting node is not aware of it.
  • the package When the package arrives at the requesting node that fetched it, the package can be processed and the events of the package may be applied to the associated data stored at the receiving node as needed. Once the package or manifest arrives, the node can then notify other nodes that it has the package available for anybody that needs it. In some instances, the node may notify all other nodes that it has the package available.
  • System 200 is another example of a network topology that may be used in an adaptive replication system.
  • the system 200 can include multiples nodes, such as nodes 202 , 204 , 206 , 208 , and 210 , having an adaptive replication module 212 .
  • a node may be a general purpose computing device, a special purpose computing device, or any other appropriate device that can connect to a network.
  • a node may be a personal computer, a laptop computer, a desktop computer, a server, a phone, a tablet computer, a media player, or any other device that is capable of connecting to a network and implementing the systems or methods described herein.
  • the network 214 may correspond to any connectivity topology including, but not limited to: a direct wired connection (e.g. parallel port, serial port, USB, IEEE 1394, etc.), a wireless connection (e.g. IR port, Bluetooth port, etc.), a wired network, a wireless network (e.g. 802.11x, cellular, etc.) a local area network, a wide area network, an ultra-wide area network, an internet, an intranet, and an extranet.
  • a direct wired connection e.g. parallel port, serial port, USB, IEEE 1394, etc.
  • a wireless connection e.g. IR port, Bluetooth port, etc.
  • a wired network e.g. 802.11x, cellular, etc.
  • 802.11x e.g. 802.11x, cellular, etc.
  • a node such as node 202 , etc., may include an adaptive replication module 212 that can be implemented as software or firmware to be executed by a processor.
  • the adaptive replication module 212 can perform the same functions as the adaptive replication module 108 shown in FIG. 1 .
  • the adaptive replication module 212 could also be implemented as a hardware circuit or a combination of hardware circuit and software.
  • a node may include a memory having a cache (not shown), a processing device (not shown), and an interface (not shown) to transmit or receive over the network 214 .
  • the memory may be volatile or non-volatile memory, or any combination of the thereof.
  • a node may also have additional features or functionality and may include input or output devices.
  • a node may include an operating system that may execute one or more application programs, or modules, that reside in a memory, such as the adaptive replication module 212 .
  • a flowchart of an illustrative embodiment of a method for adaptive replication is shown and generally designated 300 .
  • the method 300 is generally applicable to synchronize data objects (such as files) between one node in a network to another node in the network, such as nodes 102 - 106 shown in FIG. 1 or nodes 202 - 212 shown in FIG. 2 .
  • the method 300 and adaptive replication, can be particularly useful for networks with low-available bandwidth, such as a network with an overall low-bandwidth or a network with restrictions on bandwidth such as a network with a bandwidth allotment per user or per data transfer or per connection.
  • the method 300 may be executed by a node and can determine an existence of a package, at 302 , such as a package that indicates a file was updated at another node.
  • a package may include an indicator for the existence of the package, a manifest detailing a list of events or actions that relate to the package, and details (e.g. data) corresponding to the events.
  • the node may find or retrieve the package from the node that sent the notification that the package existed or may find or retrieve the package from a different node. Where a node retrieves a package from may be determined based on one or more factors, such as a preferred connection, a preferred node, a bandwidth of a connection, a speed of a connection, other factors, or any combination thereof.
  • the node may get the data from the selected node, at 308 .
  • the node may also notify other nodes that it now has the package, at 310 ; for example, if any of the other nodes also need that package. Notifying the other nodes may be done at another time in the method 300 , as long as the node sending the notice actually has the package.
  • a node may send a location or pointer for a package that may be located at another node.
  • the method 300 may attempt to build the package, at 312 . This may include applying updates to a file or folder or other changes at the node. If the package is not complete, at 314 ; for example, as described in a manifest of the package, the method 300 may repeat the process, at 316 , to determine what is still needed to complete the package, at 304 .
  • the method 300 and the node may apply the package, at 318 .
  • the details and data of the package may be applied to make changes to files or folders at the node or make other changes.
  • a node once it has received notification of the existence of a package may choose to retrieve the package immediately or at a later time. Further, each node in a network may choose for itself what is the best way and location to retrieve a package.
  • a flowchart of an illustrative embodiment of a method for adaptive replication is shown and generally designated 400 .
  • a node may notify other nodes of the existence of the data or package, at 404 .
  • a node may implement a process 405 to find and determine where and when to retrieve the data or the package associated with a notification, such as discussed with respect to step 306 shown in FIG. 3 .
  • the node may find a location of the data or packet that needs retrieving, at 406 , based on a list of nodes that the retrieving node is aware has the needed data or packet. Another way a retrieving node could find a location of a needed packet would be to poll other nodes to determine if another node has the packet or knows of a location of the packet. For example, a retrieving node may perform a round-round polling of other nodes until it locates the needed data or packet.
  • the node may select where to retrieve the needed data or packet from based on one or more factors including, but not limited to: an assigned priority of a node, an assigned priority of the data or package, a bandwidth of a network connection between nodes, a determined speed of a connection, an expected transfer speed, a determined transfer speed, a number of connections, other network metrics, any other factor, or any combination thereof.
  • the node may determine when to retrieve the data, at 408 .
  • When to retrieve the data may be pre-determined or may be calculated in real-time or at another time.
  • a node may determine when to retrieve the data based on one or more factors including, but not limited to: an assigned priority of a node, an assigned priority of the data or package, a bandwidth of a network connection between nodes, a determined speed of a connection, an expected transfer speed, a determined transfer speed, a number of connections, other network metrics, any other factor, or any combination thereof.
  • a custom retrieval scheme may be implemented in a node to allow a user or other computer to specify which node or nodes should be used to retrieve or disseminate packages, manifests, data, or other objects.
  • a custom retrieval scheme could also specify when specific packages, or types of packages, may be retrieved and could associate a specified delay with packages, such as a pre-determined delay based on the type of package to be retrieved or disseminated.
  • the custom retrieval scheme may also specify one or more lengths of delay.
  • a node assigns almost no delay for when to retrieve the data (such as a highest priority or a fast connection), such as by a delay indicator like the number one (1)
  • the node may proceed to retrieve the data almost immediately, at 410 .
  • the process 405 may proceed, at 412 , to implement a delay or wait time, at 414 .
  • the node may assign a delay indicator (such as greater than 1) to implement a delay in retrieving the data or to prioritize multiple pending retrievals; for example, a larger delay indicator may correspond to a longer the delay.
  • a node may have a maximum delay that may override the delay indicator once the maximum delay has been reached.
  • An amount of time of a delay may be pre-determined, set by a user, or may be determined by the node based on one or more factors, such as an assigned priority of a node, an assigned priority of the data or package, a bandwidth of a network connection between nodes, a determined speed of a connection, an expected transfer speed, a determined transfer speed, a number of connections, other network metrics, any other factor, or any combination thereof.
  • the process 405 may determine a next delay indicator of data to be retrieved, at 416 . For example, the process 405 may adjust a value indicating an associated delay and then retrieve the data that is associated with adjusted value indicating the new delay. When data is associated with a selected delay, the process 405 may proceed to retrieve the data, at 417 . When the data is not associated with the currently selected delay, the process 405 may determine if a maximum delay (i.e. time out) has been reached, at 418 . When the maximum delay has been reached, the maximum delay may allow the node to retrieve the data regardless of the delay indicator and proceed to retrieving the data, at 419 .
  • a maximum delay i.e. time out
  • the process 405 may implement another delay, at 414 , and proceed through the process 405 until the data is retrieved.
  • Delays may be represented within a node or system by multiple levels that the process 405 may advance through to allow implementation of different lengths of delays ranging from almost no delay to a maximum delay time; though, multiple levels of delay and a maximum delay time are not required to be implemented.
  • the methods described herein may be implemented as one or more software programs running on a computer processor, controller, or other control circuit.
  • Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable gate arrays, and other hardware devices can likewise be constructed to implement the systems and methods described herein.
  • the systems and methods described herein can be applied to any type of system or computer that transfers data over a network.

Abstract

This disclosure is related to systems, devices, and methods of adaptive replication. Adaptive replication can allow a node in a network to optimally determine where, when, and how to retrieve data from other nodes in the network. For example, adaptive replication may include receiving a notification corresponding to data at a first node in the network and selecting a node of multiple nodes in the network to retrieve the data from. The first node may retrieve the data from any node within the network that has the data. In some embodiments, a node may add delays or select where to retrieve data from based on a priority, a bandwidth, or other factors.

Description

BACKGROUND
The present disclosure is generally related to synchronization of data at nodes of a network. Since some networks may be challenged because of bandwidth, latency, packet loss or just general network availability, a network may not be able to support synchronization of data over the network. Further, synchronization of a node from one node to another can sometimes be inefficient and time consuming. There may also be problems when a node is required to synchronize to another node and has lost communication. The present disclosure presents solutions to these and other problems.
SUMMARY
This disclosure is related to systems, devices, and methods of adaptive replication. Adaptive replication can allow a node in a network to optimally determine where, when, and how to retrieve data from other nodes in the network. For example, adaptive replication may include receiving a notification corresponding to data at a first node in the network and selecting a node of multiple nodes in the network to retrieve the data from. The first node may retrieve the data from any node within the network that has the data. In some embodiments, a node may add delays or select which node to retrieve data from based on a priority, such as a priority associated with the data, the network, or a node. The node may also use a network bandwidth, latency, or any other system metric to determine where the optimal location is to retrieve the data. The node can also be configured to use different metrics depending on time of day or any other conditions that might change.
A device for adaptive replication may include an interface for receiving and sending data; a memory; and a controller configured to implement adaptive replication. The controller may be configured to receive a notification at a first node, the notification indicating that data is available for the first node to retrieve, the notification received from a second node. The controller may also be configured to select a node of multiple nodes in the network to retrieve the data from, where the first node may retrieve the data from any node within the network that has the data, including the second node and retrieve the data from the selected node when the first node requests the data.
Another device for adaptive replication may include computer readable instructions stored in a memory that, when the instructions are executed by a processor, cause the processor to receive a notification, the notification indicating that data is available for the device to retrieve, the notification received from a second device. The instructions may further cause the processor to select a node of multiple nodes in a network to retrieve the data from, where the device may retrieve the data from any node within the network that has the data; and retrieve the data from the selected node when the first node requests the data.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagram of an illustrative embodiment of a system for adaptive replication;
FIG. 2 is a diagram of another illustrative embodiment of a system for adaptive replication;
FIG. 3 is a flowchart of an illustrative embodiment of a method for adaptive replication; and
FIG. 4 is a flowchart of another illustrative embodiment of a method for adaptive replication.
DETAILED DESCRIPTION
In the following detailed description of the embodiments, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration of specific embodiments. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present disclosure.
Referring to FIG. 1, a particular embodiment of a system for adaptive replication is shown and generally designated 100. The system 100 can include a node, such as nodes 102, 104, or 106, that includes an adaptive replication module 108. The nodes 102, 104, and 106 may be computers, servers, or other devices that communicate with each other via one or more networks, such as networks 110, 112, and 114. One or more of the nodes 102, 104, and 106 may be a network operations center (NOC), though a NOC is not necessary. For example, node 102 may be a NOC that supports a fleet of ships, where node 104 represents a first ship and node 106 represents a second ship.
The networks 110, 112, and 114 may be wireless networks or wired networks and each network may have different characteristics. For example, the networks 110, 112, and 114 may have different data transfer rates, physical distances, data bandwidth, support capabilities, hardware components, processing speeds, methods used to convey data, or other characteristics. In some examples, at least one of the networks 110, 112, and 114 may have a low bandwidth that makes synchronization of data relatively slow or impractical.
The adaptive replication module(s) 108 allows the nodes 102, 104, and 106 to synchronize data between the nodes and perform the operations described herein. The adaptive replication module(s) allow for flexible synchronization of data, where in some instances, a node is not pre-determined to synchronize with a specific other node. The adaptive replication module may dynamically determine an optimal method and node to synchronize to. The adaptive replication module(s) may include hardware circuitry, software, or any combination thereof.
A package may be any object that could be synchronized between nodes of a network and may consist of one or more objects. For example, a package may be a manifest, local or remote differential compression information, a replication package, another object, or any combination thereof.
In a particular embodiment, when a package or manifest, which may consist of data representing events that have occurred at a node (such as file updates, etc.) is created, the node 102 can log information (such as events) that correspond to a package, such as time, object identification (such as an identifier of a file an event happened to), event identification (such as a pointer to a type of event), a locator (such as a uniform resource locator (URL) or an unique key), or any other metadata about an object, i.e. a check-out or published status. Further, a manifest may include a list of events corresponding to an object. For example, the manifest may be metadata containing information about a corresponding package or object, or a command that should be executed. In an example, a manifest identification may be similar to a corresponding package identification, such as the same identification value or number with a different extension. For example, a task modified on a specific date can have an event identification that is included in a manifest.
After a package or manifest is created or modified, the adaptive replication module 108 may tell other connected modules that the specific package is needed at their location. The notification of the existence of the specific package can be a short and efficient transmission to other nodes and may contain the package identification and a list of locations that are known (at that time) to store the particular package. The list of locations can include, at minimum, the originating node plus any other nodes that the originating node is aware of having the package. The originating node may log which other nodes have been notified about the specific package.
Nodes that have received the notification of the existence of a specific package can log the existence of the specific package locally. However, each receiving node may first check to see if it has already been notified of that particular package by another node. If the receiving node is already aware of the existence of the package, there is no need to add a log for the existence of the package, and it can add this node to its list of locations that has the package or manifest. However, the receiving nodes can store a list of known locations that the package or manifest could be found at, which at minimum should include the node that just notified the receiving node about the package.
After a node is aware of the existence of a package that needs to be received, the node may fetch the metadata about the package by doing a sequence of bits requests for the corresponding manifest. For example, the node may fetch blocks of the manifest from the notifying node directly, fetch blocks of the manifest from different known sources, such as in a distributed file sharing system, or fetch blocks using another file transfer technology, such as the Binary Intelligent Transfer Service (BITS). Fetching the manifest over a system such as BITS can help when transmitting over a low bandwidth network.
Once the manifest has arrived, the adaptive replication module 108 of the receiving node can examine the contents of the manifest to determine what further action may be required. The manifest could contain a command to be executed, or a reference to a package to be fetched. The node can also double check to see if the events or command indicated in the manifest have already been processed or are needed at the receiving node. The receiving node may also notify all the other nodes of a replication group that have not received this package or manifest that it is required. In some instances, the receiving node can notify other nodes of the replication group when the package or manifest has been downloaded, the manifest has been received, or both, even if the other nodes might be able to fetch the package or the manifest from somewhere else.
After the manifest has been received and the adaptive replication module 108 of the receiving node determines the package corresponding to the received manifest needs to be fetched, the adaptive replication module 108 can fetch the corresponding package, but the adaptive replication module 108 may decide where to retrieve it from based on known locations, which may have been received with the notification of the existence of the package. The adaptive replication module 108 may also determine where to fetch the package from based on preferred network connections or a round-robin attempt to locate the package at other nodes. For example, the package being retrieved should be on the source node, but if it is not there or not available, the retrieving node can look for the package at other nodes by requesting from another node in the replication group and eventually one of them should have the package even if the requesting node is not aware of it.
When the package arrives at the requesting node that fetched it, the package can be processed and the events of the package may be applied to the associated data stored at the receiving node as needed. Once the package or manifest arrives, the node can then notify other nodes that it has the package available for anybody that needs it. In some instances, the node may notify all other nodes that it has the package available.
Referring to FIG. 2, a particular embodiment of a system for adaptive replication is shown and generally designated 200. System 200 is another example of a network topology that may be used in an adaptive replication system. The system 200 can include multiples nodes, such as nodes 202, 204, 206, 208, and 210, having an adaptive replication module 212. A node may be a general purpose computing device, a special purpose computing device, or any other appropriate device that can connect to a network. For example, a node may be a personal computer, a laptop computer, a desktop computer, a server, a phone, a tablet computer, a media player, or any other device that is capable of connecting to a network and implementing the systems or methods described herein. The network 214 may correspond to any connectivity topology including, but not limited to: a direct wired connection (e.g. parallel port, serial port, USB, IEEE 1394, etc.), a wireless connection (e.g. IR port, Bluetooth port, etc.), a wired network, a wireless network (e.g. 802.11x, cellular, etc.) a local area network, a wide area network, an ultra-wide area network, an internet, an intranet, and an extranet.
A node, such as node 202, etc., may include an adaptive replication module 212 that can be implemented as software or firmware to be executed by a processor. The adaptive replication module 212 can perform the same functions as the adaptive replication module 108 shown in FIG. 1. The adaptive replication module 212 could also be implemented as a hardware circuit or a combination of hardware circuit and software. Generally, a node may include a memory having a cache (not shown), a processing device (not shown), and an interface (not shown) to transmit or receive over the network 214. The memory may be volatile or non-volatile memory, or any combination of the thereof. A node may also have additional features or functionality and may include input or output devices. For example, a node may include an operating system that may execute one or more application programs, or modules, that reside in a memory, such as the adaptive replication module 212.
Referring to FIG. 3, a flowchart of an illustrative embodiment of a method for adaptive replication is shown and generally designated 300. The method 300 is generally applicable to synchronize data objects (such as files) between one node in a network to another node in the network, such as nodes 102-106 shown in FIG. 1 or nodes 202-212 shown in FIG. 2. The method 300, and adaptive replication, can be particularly useful for networks with low-available bandwidth, such as a network with an overall low-bandwidth or a network with restrictions on bandwidth such as a network with a bandwidth allotment per user or per data transfer or per connection.
The method 300 may be executed by a node and can determine an existence of a package, at 302, such as a package that indicates a file was updated at another node. A package may include an indicator for the existence of the package, a manifest detailing a list of events or actions that relate to the package, and details (e.g. data) corresponding to the events. Once a node learns of the existence of a package, the node may determine whether that node needs the details or data of the package, at 304. The node may determine the need based on a comparison of files or other data already stored at the node. When the node determines it needs the data, the node may determine where to find the package, at 306.
The node may find or retrieve the package from the node that sent the notification that the package existed or may find or retrieve the package from a different node. Where a node retrieves a package from may be determined based on one or more factors, such as a preferred connection, a preferred node, a bandwidth of a connection, a speed of a connection, other factors, or any combination thereof.
Once a node determines where to retrieve the package or manifest from, the node may get the data from the selected node, at 308. The node may also notify other nodes that it now has the package, at 310; for example, if any of the other nodes also need that package. Notifying the other nodes may be done at another time in the method 300, as long as the node sending the notice actually has the package. Though, in another example, a node may send a location or pointer for a package that may be located at another node. When data corresponding to the package has been received, the method 300 may attempt to build the package, at 312. This may include applying updates to a file or folder or other changes at the node. If the package is not complete, at 314; for example, as described in a manifest of the package, the method 300 may repeat the process, at 316, to determine what is still needed to complete the package, at 304.
When the package is complete, at 314, the method 300 and the node may apply the package, at 318. For example, the details and data of the package may be applied to make changes to files or folders at the node or make other changes. In some examples, a node, once it has received notification of the existence of a package may choose to retrieve the package immediately or at a later time. Further, each node in a network may choose for itself what is the best way and location to retrieve a package.
Referring to FIG. 4, a flowchart of an illustrative embodiment of a method for adaptive replication is shown and generally designated 400. When a node has new data or a package available, at 402, it may notify other nodes of the existence of the data or package, at 404. After receiving the notification of the data or package, a node may implement a process 405 to find and determine where and when to retrieve the data or the package associated with a notification, such as discussed with respect to step 306 shown in FIG. 3.
The node may find a location of the data or packet that needs retrieving, at 406, based on a list of nodes that the retrieving node is aware has the needed data or packet. Another way a retrieving node could find a location of a needed packet would be to poll other nodes to determine if another node has the packet or knows of a location of the packet. For example, a retrieving node may perform a round-round polling of other nodes until it locates the needed data or packet.
The node may select where to retrieve the needed data or packet from based on one or more factors including, but not limited to: an assigned priority of a node, an assigned priority of the data or package, a bandwidth of a network connection between nodes, a determined speed of a connection, an expected transfer speed, a determined transfer speed, a number of connections, other network metrics, any other factor, or any combination thereof.
Once a node determines where to retrieve needed data or a packet from, the node may determine when to retrieve the data, at 408. When to retrieve the data may be pre-determined or may be calculated in real-time or at another time. A node may determine when to retrieve the data based on one or more factors including, but not limited to: an assigned priority of a node, an assigned priority of the data or package, a bandwidth of a network connection between nodes, a determined speed of a connection, an expected transfer speed, a determined transfer speed, a number of connections, other network metrics, any other factor, or any combination thereof.
In some embodiments, a custom retrieval scheme may be implemented in a node to allow a user or other computer to specify which node or nodes should be used to retrieve or disseminate packages, manifests, data, or other objects. A custom retrieval scheme could also specify when specific packages, or types of packages, may be retrieved and could associate a specified delay with packages, such as a pre-determined delay based on the type of package to be retrieved or disseminated. The custom retrieval scheme may also specify one or more lengths of delay.
In an example, if a node assigns almost no delay for when to retrieve the data (such as a highest priority or a fast connection), such as by a delay indicator like the number one (1), the node may proceed to retrieve the data almost immediately, at 410. If the node has determined to implement a delay (such as a lower priority or slower connection) for retrieving the data, at 408, then the process 405 may proceed, at 412, to implement a delay or wait time, at 414. Further, the node may assign a delay indicator (such as greater than 1) to implement a delay in retrieving the data or to prioritize multiple pending retrievals; for example, a larger delay indicator may correspond to a longer the delay. However, a node may have a maximum delay that may override the delay indicator once the maximum delay has been reached. An amount of time of a delay may be pre-determined, set by a user, or may be determined by the node based on one or more factors, such as an assigned priority of a node, an assigned priority of the data or package, a bandwidth of a network connection between nodes, a determined speed of a connection, an expected transfer speed, a determined transfer speed, a number of connections, other network metrics, any other factor, or any combination thereof.
After the delay, the process 405 may determine a next delay indicator of data to be retrieved, at 416. For example, the process 405 may adjust a value indicating an associated delay and then retrieve the data that is associated with adjusted value indicating the new delay. When data is associated with a selected delay, the process 405 may proceed to retrieve the data, at 417. When the data is not associated with the currently selected delay, the process 405 may determine if a maximum delay (i.e. time out) has been reached, at 418. When the maximum delay has been reached, the maximum delay may allow the node to retrieve the data regardless of the delay indicator and proceed to retrieving the data, at 419. When the maximum delay has not been reached, at 418, the process 405 may implement another delay, at 414, and proceed through the process 405 until the data is retrieved. Delays may be represented within a node or system by multiple levels that the process 405 may advance through to allow implementation of different lengths of delays ranging from almost no delay to a maximum delay time; though, multiple levels of delay and a maximum delay time are not required to be implemented.
In accordance with various embodiments, the methods described herein may be implemented as one or more software programs running on a computer processor, controller, or other control circuit. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable gate arrays, and other hardware devices can likewise be constructed to implement the systems and methods described herein. The systems and methods described herein can be applied to any type of system or computer that transfers data over a network.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown.
The illustrations and examples provided herein are but a few examples of how the present disclosure can be applied to data storage systems. There are many other contexts in which the methods and systems described herein could be applied to computing systems and data storage systems. For example, the methods and systems described herein are particularly useful for low bandwidth networks or networks imposing a bandwidth limit on a user or on data transmissions.
This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description. Additionally, the illustrations are merely representational and may not be drawn to scale. Accordingly, the disclosure and the figures are to be regarded as illustrative and not restrictive.

Claims (17)

What is claimed is:
1. A method comprising:
processing at a first node in a network:
receiving a notification at the first node, the notification indicating that data is available for the first node to retrieve, the notification received from a second node;
selecting a first selected node of multiple nodes in the network to retrieve a first portion of the data from, where the first node is operable to retrieve the data from any node within the network that has the data;
selecting a second selected node of the multiple nodes to retrieve a second portion of the data from, the second selected node different from the first selected node;
determining a priority of the first portion of the data from multiple levels of priority, where a lower priority includes a longer delay than a higher priority;
selecting a first time delay at the first node to delay sending a request to retrieve the first portion of the data from the first selected node based on a first delay indicator;
selecting a second time delay at the first node to delay sending a request to retrieve the second portion of the data from the second selected node;
when the first time delay has expired, making a first request for the first portion of the data from the first selected node;
when the second time delay has expired, making a first request for the second portion of the data from the second selected node;
requesting the first portion of the data after an additional delay when the data is associated with a second delay indicator;
repeating the first time delay based on the priority, where the first delay indicator indicates a higher priority than the second delay indicator, and a third delay indicator indicates a lower priority than the second delay indicator, and the third delay indicator is associated with a longer delay than the second delay indicator; and
requesting the data when the additional delay has reached a limit of a maximum delay.
2. The method of claim 1 further comprising determining if the first node needs to receive the data prior to selecting the first selected node to retrieve the first portion of the data and the second selected node to retrieve the second portion of the data.
3. The method of claim 1 further comprising:
selecting the first selected node to retrieve the first portion of the data from and the second selected node to retrieve the second portion of the data from based on one or more factors associated with the network; and
retrieving the first portion of the data from the first selected node and the second portion of the data from the second selected node.
4. The method of claim 1 further comprising determining the first time delay and the second time delay and selecting the first selected node and the second selected node based on one or more of the following: a priority of a node, a data transfer speed of a connection in the network, a priority of the data, a bandwidth of a connection in the network, and a number of connections from the first node to other nodes in the network.
5. The method of claim 1 further comprising notifying at least one other node in the network that the data is available from the first node.
6. The method of claim 1 further comprising:
repeating the method until all data in a package is retrieved, the package including all portions of the data that have changed from a previous version of the data at the first node; and
applying the package to the first node when all data that is part of the package is received.
7. The method of claim 6 wherein the package further comprises the notification, a manifest listing portions of the data that have changed from a previous version of the data, and the portions of the data listed in the manifest.
8. The method of claim 1 further comprising retrieving the first portion of the data and the second portion of the data from nodes other than the second node.
9. A device comprising:
a first node including:
an interface for receiving and sending data;
a memory;
a controller coupled to the memory, the controller configured to:
receive a notification, the notification indicating that data is available for the first node to retrieve, the notification received from a second node;
retrieve a manifest from a first selected node of multiple nodes in a network, the manifest containing metadata listing changes to a file, the data including the changes to the file;
select a second selected node of the multiple nodes in the network to retrieve the data from, where the first node is operable to retrieve the data from any node within the network that has the data, including the second node;
determine a priority of the data from multiple levels of priority, where a lower priority includes a longer delay than a higher priority;
calculate a first time delay at the first node to delay sending a request to retrieve the data from the second selected node based on a first delay indicator;
when the first time delay has expired, request the data from the second selected node;
request the data after an additional delay when the data is associated with a second delay indicator;
repeat the first time delay based on the priority, where the first delay indicator indicates a higher priority than the second delay indicator, and a third delay indicator indicates a lower priority than the second delay indicator, and the third delay indicator is associated with a longer delay than the second delay indicator; and
request the data when the additional delay has reached a limit of a maximum delay.
10. The device of claim 9 wherein the controller is further configured to:
determine retrieval options of the multiple nodes that the first node is operable to retrieve the manifest and the data from; and
select the first selected node and the second selected node to retrieve the data from based on the retrieval options.
11. The device of claim 10 wherein the controller is further configured to:
repeat the additional delay based on multiple lengths of delay to extend a time period before requesting the data.
12. The device of claim 9 wherein the controller is further configured to:
retrieve a first portion of the data from the second selected node;
retrieve a second portion of the data from a third selected node; and
apply the data to a corresponding file when the data is complete.
13. A device comprising:
a memory; and
computer readable instructions stored in the memory that, when the instructions are executed by a processor, cause the processor to:
receive a notification, the notification indicating that data is available for the device to retrieve, the notification received from a second device;
select a first selected node of multiple nodes in the network to retrieve a first portion of the data from, where the device is operable to retrieve the data from any node within the network that has the data;
select a second selected node of the multiple nodes to retrieve a second portion of the data from, the second selected node different from the first selected node;
determine a priority of the first portion of the data from multiple levels of priority, where a lower priority includes a longer delay than a higher priority;
select a first time delay at the device to delay sending a request to retrieve the first portion of the data from the first selected node, the first time delay determined based on a first delay indicator;
select a second time delay at the device to delay sending a request to retrieve the second portion of the data from the second selected node;
when the first time delay has expired, request the first portion of the data from the first selected node;
request the first portion of the data after an additional delay when the data is associated with a second delay indicator;
repeat the first time delay based on the priority, where the first delay indicator indicates a higher priority than the second delay indicator, and a third delay indicator indicates a lower priority than the second delay indicator, and the third delay indicator is associated with a longer delay than the second delay indicator;
request the first portion of the data when the additional delay has reached a limit of a maximum delay; and
when the second time delay has expired, request the second portion of the data from the second selected node.
14. The device of claim 13 wherein instructions further cause the processor to:
select one of the multiple nodes to retrieve the first portion or the second portion of the data from based on one or more factors.
15. The device of claim 13 wherein instructions further cause the processor to:
when the first delay has expired, determine whether to add the additional delay to the first delay based on multiple levels of priority.
16. The device of claim 13 wherein instructions further cause the processor to:
store a list of nodes that have the data available to retrieve; and
send a notice to at least one node in the network to notify the at least one node of an existence of the data.
17. The device of claim 13 wherein instructions further cause the processor to:
retrieve a manifest from a third selected node of multiple nodes, the manifest listing changed portions of a file, the first portion of the data and the second portion of the data including the changed portions of the file.
US13/184,055 2011-07-15 2011-07-15 Adaptive replication Expired - Fee Related US9137331B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/184,055 US9137331B2 (en) 2011-07-15 2011-07-15 Adaptive replication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/184,055 US9137331B2 (en) 2011-07-15 2011-07-15 Adaptive replication

Publications (2)

Publication Number Publication Date
US20130018987A1 US20130018987A1 (en) 2013-01-17
US9137331B2 true US9137331B2 (en) 2015-09-15

Family

ID=47519592

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/184,055 Expired - Fee Related US9137331B2 (en) 2011-07-15 2011-07-15 Adaptive replication

Country Status (1)

Country Link
US (1) US9137331B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8983076B2 (en) * 2011-12-22 2015-03-17 Adobe Systems Incorporated Methods and apparatus for key delivery in HTTP live streaming
US10496676B2 (en) * 2014-08-29 2019-12-03 Netapp Inc. Synchronization cache seeding
US10031794B1 (en) * 2015-06-30 2018-07-24 EMC IP Holding Company, LLC Message generation system and method
US11050675B2 (en) * 2019-05-31 2021-06-29 Bae Systems Information And Electronic Systems Integration Inc. Scheduler for coordination and synchronization of data across low-bandwidth links and method thereof
JP2021099555A (en) * 2019-12-19 2021-07-01 株式会社日立製作所 Storage system and controller arrangement method

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649196A (en) 1993-07-01 1997-07-15 Legent Corporation System and method for distributed storage management on networked computer systems using binary object identifiers
US5832514A (en) * 1996-06-26 1998-11-03 Microsoft Corporation System and method for discovery based data recovery in a store and forward replication process
US6101194A (en) * 1997-06-09 2000-08-08 International Business Machines Corporation Conflict resolution in multi-node communication network
US20070177587A1 (en) * 2006-01-27 2007-08-02 Gardner Paul A Systems and methods for distributing data
US20080285496A1 (en) * 2007-05-14 2008-11-20 Bamboo Mediacasting Ltd. Data download in wireless network
US20090203451A1 (en) * 2001-11-23 2009-08-13 Jean-Marie Gatto Gaming Systems Configured for Large Scale Controlled and Secure Data Downloading
US7653668B1 (en) * 2005-11-23 2010-01-26 Symantec Operating Corporation Fault tolerant multi-stage data replication with relaxed coherency guarantees
US20100049720A1 (en) * 2007-08-06 2010-02-25 Apple Inc. Synching data
US20100076925A1 (en) * 2007-02-21 2010-03-25 At&T Intellectual Property I, L.P. System for managing data collection processes
US7752630B2 (en) * 2003-11-12 2010-07-06 Cisco Technology, Inc. System sending behavior modification hint to client to suggest alternative servers based on operating conditions of current server
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
US20100257403A1 (en) * 2009-04-03 2010-10-07 Microsoft Corporation Restoration of a system from a set of full and partial delta system snapshots across a distributed system
US20110196900A1 (en) * 2010-02-09 2011-08-11 Alexandre Drobychev Storage of Data In A Distributed Storage System
US8117173B2 (en) 2004-04-15 2012-02-14 Microsoft Corporation Efficient chunking algorithm
US20120084383A1 (en) * 2010-04-23 2012-04-05 Ilt Innovations Ab Distributed Data Storage
US20120246276A1 (en) * 2011-03-22 2012-09-27 Hitachi, Ltd. Data synchronization server, system, and data transfer bandwidth control method
US8412676B2 (en) 2008-10-21 2013-04-02 Microsoft Corporation Forgetting items with knowledge based synchronization

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649196A (en) 1993-07-01 1997-07-15 Legent Corporation System and method for distributed storage management on networked computer systems using binary object identifiers
US5832514A (en) * 1996-06-26 1998-11-03 Microsoft Corporation System and method for discovery based data recovery in a store and forward replication process
US6101194A (en) * 1997-06-09 2000-08-08 International Business Machines Corporation Conflict resolution in multi-node communication network
US20090203451A1 (en) * 2001-11-23 2009-08-13 Jean-Marie Gatto Gaming Systems Configured for Large Scale Controlled and Secure Data Downloading
US7752630B2 (en) * 2003-11-12 2010-07-06 Cisco Technology, Inc. System sending behavior modification hint to client to suggest alternative servers based on operating conditions of current server
US8117173B2 (en) 2004-04-15 2012-02-14 Microsoft Corporation Efficient chunking algorithm
US7653668B1 (en) * 2005-11-23 2010-01-26 Symantec Operating Corporation Fault tolerant multi-stage data replication with relaxed coherency guarantees
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
US20070177587A1 (en) * 2006-01-27 2007-08-02 Gardner Paul A Systems and methods for distributing data
US20100076925A1 (en) * 2007-02-21 2010-03-25 At&T Intellectual Property I, L.P. System for managing data collection processes
US20080285496A1 (en) * 2007-05-14 2008-11-20 Bamboo Mediacasting Ltd. Data download in wireless network
US20100049720A1 (en) * 2007-08-06 2010-02-25 Apple Inc. Synching data
US8412676B2 (en) 2008-10-21 2013-04-02 Microsoft Corporation Forgetting items with knowledge based synchronization
US20100257403A1 (en) * 2009-04-03 2010-10-07 Microsoft Corporation Restoration of a system from a set of full and partial delta system snapshots across a distributed system
US20110196900A1 (en) * 2010-02-09 2011-08-11 Alexandre Drobychev Storage of Data In A Distributed Storage System
US20120084383A1 (en) * 2010-04-23 2012-04-05 Ilt Innovations Ab Distributed Data Storage
US20120246276A1 (en) * 2011-03-22 2012-09-27 Hitachi, Ltd. Data synchronization server, system, and data transfer bandwidth control method

Also Published As

Publication number Publication date
US20130018987A1 (en) 2013-01-17

Similar Documents

Publication Publication Date Title
CN107590001B (en) Load balancing method and device, storage medium and electronic equipment
US10204114B2 (en) Replicating data across data centers
US10244023B2 (en) Active offline storage management for streaming media application used by multiple client devices
AU2008268539B2 (en) Server-assisted and peer-to-peer synchronization
US8819080B2 (en) System and method for collection, retrieval, and distribution of data
US8606996B2 (en) Cache optimization
US20170364572A1 (en) Method and system for providing a synchronization service
TWI549080B (en) The method, system and device for sending information of category information
US10951395B2 (en) Data fetching in data exchange networks
CN108173774B (en) Client upgrading method and system
US9853906B2 (en) Network prioritization based on node-level attributes
CN110546923A (en) selective distribution of messages in a scalable real-time messaging system
US9137331B2 (en) Adaptive replication
JP2013522736A (en) Method and system for providing a message including a universal resource locator
US11425209B2 (en) Communication system
US11394800B2 (en) Systems and methods for remote network topology discovery
US9948580B2 (en) Techniques to replicate data using uploads from messaging clients
CN111083204B (en) File transmission method, device and storage medium
US9491067B2 (en) Timeout for identifying network device presence
CN110798495B (en) Method and server for end-to-end message push in cluster architecture mode
US10474644B2 (en) Systems and methods for optimizing selection of a replication data node in a distributed file system
CN107547605B (en) message reading and writing method based on node queue and node equipment
CN110168513B (en) Partial storage of large files in different storage systems
US10728291B1 (en) Persistent duplex connections and communication protocol for content distribution
CN104580276A (en) Information pushing method, device and system, as well as information access device

Legal Events

Date Code Title Description
AS Assignment

Owner name: SYNTERGY, INC., CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SEAMAN, DAVID ROBERT;WALL, BLAIR JAMES;CAPSON, CHRISTOPHER CARL;REEL/FRAME:026600/0953

Effective date: 20110712

AS Assignment

Owner name: GOLD HILL CAPITAL 2008, L.P., MASSACHUSETTS

Free format text: FIRST AMENDMENT TO IPSA;ASSIGNOR:METALOGIX INTERNATIONAL GMBH;REEL/FRAME:030592/0038

Effective date: 20130605

AS Assignment

Owner name: FIFTH STREET MANAGEMENT LLC, AS ADMINISTRATIVE AGE

Free format text: SECURITY INTEREST;ASSIGNOR:METALOGIX INTERNATIONAL GMBH;REEL/FRAME:034290/0262

Effective date: 20141201

AS Assignment

Owner name: METALOGIX INTERNATIONAL GMBH, SWITZERLAND

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:GOLD HILL CAPITAL 2008, L.P.;REEL/FRAME:034604/0378

Effective date: 20141230

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: METALOGIX INTERNATIONAL GMBH, WASHINGTON

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:OAKTREE FUND ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT FOR THE LENDERS AND SUCCESSOR AGENT TO FIFTH STREET MANAGEMENT LLC;REEL/FRAME:047048/0008

Effective date: 20180629

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20190915