The present disclosure relates generally to data object processing and more particularly, but not exclusively, to systems and methods for accelerating remote data processing.
Conventional computer networks comprise a plurality of interconnected servers, computers and other network components. The various network components can communicate in a wired and/or wireless manner. As a part of this communication, data objects are exchanged among the network components typically via data packets in accordance with a communication protocol standard, such as Transmission Control Protocol (TCP) and/or User Datagram Protocol (UDP). The same communication protocol standard is used to transmit the data packets as the data packets traverse the computer network from a source network component to a destination network component.
Processing data objects, however, can be problematic, especially when the data objects are stored at a first network component but are to be processed by a second network component that is remote from the first network component. Transmitting data objects, particularly large data objects, to the remote network component can take significant time. In addition, conventional network components require the entire data object to be transferred to the remote network component before the remote network component can begin processing the data object. Accordingly, processing data objects via remote network components can give rise to substantial system latency.
In view of the foregoing, a need exists for an improved system and method for accelerating remote data processing in an effort to overcome the aforementioned obstacles and deficiencies of conventional computer networks.
It should be noted that the figures are not drawn to scale and that elements of similar structures or functions are generally represented by like reference numerals for illustrative purposes throughout the figures. It also should be noted that the figures are only intended to facilitate the description of the preferred embodiments. The figures do not illustrate every aspect of the described embodiments and do not limit the scope of the present disclosure.
Since currently-available computer networks introduce significant delay in the transmission and processing of data objects via remote network components, a computer network that accelerates remote data processing can prove desirable and provide a basis for a wide range of computer applications. This result can be achieved, according to one embodiment disclosed herein, by a computer network 100 as illustrated in
Turning to
At a proximal end region of the computer network 100, a first server 110A is shown as being in communication with a second server 110B via a first communication connection 120. The second server 110B can be in communication with a third server 110C via a second communication connection 120 and so on. At a distal end region of the computer network 100, a Zth server 110Z is shown as being in communication with a Yth server 110Y via a Yth communication connection 120. Although shown and described with reference to
In one embodiment, data object can be stored at the proximal end region of the computer network 100 and intended to be processed at the distal end region of the computer network 100. Turning to
Advantageously, the computer network 100 can initiate anticipate processing of the data 200. The Zth server 110Z, for example, can begin processing the data 200 as the data 200 is being received by Zth server 110Z. In other words, the Zth server 110Z does not need to wait for the data 200 to be received in its entirety from the first server 110A before initiating processing of the data 200. Instead, the Zth server 110Z can begin to process each portion of the data 200 as each data portion arrives. The Zth server 110Z preferably can begin processing the data portions immediately upon arrival at the Zth server 110Z, and the data processing can continue while other data portions are being received from the first server 110A.
As illustrated in
The data parcels 210 initially are stored at the first server 110A. Once divided into the predetermined number XX of data parcels 210, the data parcels 210 can be stored as a sequence of data parcels 210: a first data parcel 2101; a second data parcel 2102; a third data parcel 2103; a fourth data parcel 2104; . . . ; a Yth data parcel 210Y; a Y+1st data parcel 210Y+1; a Y+2nd data parcel 210Y+2; a Y+3rd data parcel 210Y+3; . . . ; a XX−2nd data parcel 210XX−2; a XX−1st data parcel 210XX−1; and a XXth data parcel 210XX as shown in
Upon receiving the first data parcel 2101, the Zth server 110Z can initiate processing of the first data parcel 2101 without waiting for the second data parcel 2102 or any other data parcels 210 to arrive. While the Zth server 110Z processes the first data parcel 2101, other data parcels 210, such as the second data parcel 2102, can arrive at the Zth server 110Z. The Zth server 110Z can initiate processing of the second data parcel 2102 once processing of the first data parcel 2101 is complete and without waiting for the third data parcel 2103 or any other data parcels 210 to arrive. Other data parcels 210, such as the third data parcel 2103, can arrive at the Zth server 110Z while the Zth server 110Z processes the first data parcel 2101 and/or the second data parcel 2102. The Zth server 110Z can initiate processing of the third data parcel 2103 once processing of the second data parcel 2102 is complete and without waiting for the fourth data parcel 2104 or any other data parcels 210 to arrive. The Zth server 110Z can continue to receive and process data parcels 210 in the manner set forth above until the XXth data parcel 210XX has been received and processed.
If the Zth server 110Z completes processing of a selected data parcel 210 before the next data parcel 210 in the sequence arrives, a complete read operation can be utilized to block further data processing operations by the Zth server 110Z until the next data parcel 210 fully arrives. In other words, the Zth server 110Z does not return an end of data indication to the application if the next data parcel 210 in the sequence does not timely arrive. The Zth server 110Z, instead, can keep the data connection to the application open. In one embodiment, the Zth server 110Z can keep the data connection open by pretending to be, or otherwise indicating, that the Zth server 110Z is in a “slow read” mode or a “read delay” mode of operation, rather than closing the data connection.
In one embodiment, transmission of the data 200 from the first server 110A to the Zth server 110Z can include transmission of metadata associated with the data 200. The metadata can include an object size for the data 200 and/or a number of data parcels 210 that comprise the data 200 and preferably is received by the Zth server 110Z before the first data parcel 2101 arrives at the Zth server 110Z. The transmission and processing of the data 200 thereby can be performed in a manner that is transparent to an operating system and an application way of the computer network 100.
Although various implementations are discussed herein and shown in the figures, it will be understood that the principles described herein are not limited to such. For example, while particular scenarios are referenced, it will be understood that the principles described herein apply to any suitable type of computer network, including, but not limited to, a Local Area Network (LAN), a Wide Area Network (WAN), a Wireless Local Area Network (WLAN), a Metropolitan Area Network (MAN) and/or a Campus Area Network (CAN).
Accordingly, persons of ordinary skill in the art will understand that, although particular embodiments have been illustrated and described, the principles described herein can be applied to different types of computer networks. Certain embodiments have been described for the purpose of simplifying the description, and it will be understood to persons skilled in the art that this is illustrative only. It will also be understood that reference to a “server,” “computer,” “network component” or other hardware or software terms herein can refer to any other type of suitable device, component, software, and so on. Moreover, the principles discussed herein can be generalized to any number and configuration of systems and protocols and can be implemented using any suitable type of digital electronic circuitry, or in computer software, firmware, or hardware. Accordingly, while this specification highlights particular implementation details, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions.