Data Sharing System and Data Sharing Method
By generating shared data multiple times and utilizing client-to-client retransmissions for differential data, the system addresses increased server and network load issues, ensuring efficient data sharing with reduced redundancy.
Patent Information
- Application Number
- JP2021172468
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-10-21
- Publication Date
- 2025-07-25
- Estimated Expiration
- 2041-10-21
AI Technical Summary
Existing data sharing systems face increased server and network load due to retransmissions when clients fail to receive differential data, particularly when a representative client fails or experiences network issues.
The system generates shared data multiple times, transmitting only differential data after the initial transmission, and clients request retransmissions from each other when necessary, reducing server and network load by distributing missing data among clients.
This approach reduces the processing and communication load on the server and network by minimizing redundant data transmissions, ensuring efficient data sharing even in the presence of client failures.
Smart Images

Figure 0007713366000001 
Figure 0007713366000002 
Figure 0007713366000003
Abstract
Description
Technical Field
[0001] The present invention relates to a data sharing system and a data sharing method.
Background Art
[0002] As technologies for a server to share data with a plurality of clients, there are JP-A-2011-237924 (Patent Document 1) and JP-A-2008-85932 (Patent Document 2). Patent Document 1 describes that "the file distribution method of the present invention is such that a distribution server divides a plurality of files into a plurality of blocks respectively (step S105), uses the identification information of each file as a primary address (step S103), uses the identification information of the blocks of each file as a secondary address (step S105), generates a block address indicating the order of each block from the primary address and the secondary address, assigns the block address to each block (step S107), and sequentially multicasts each block onto the network (step S109)." (See the abstract).
[0003] Patent Document 2 describes that "Server 1 assigns a representative client for each of a plurality of block data to a plurality of clients 2, for example, by round robin. Server 1 transmits the block data and information indicating the representative client 2 assigned thereto to the plurality of clients 2 by multicast communication. The representative client 2 transmits a response confirmation to Server 1. When Server 1 receives the response confirmation, Server 1 transmits the subsequent block data of the block data and information indicating a new representative client assigned thereto to the plurality of clients 2 by multicast communication." (See the abstract).
Prior Art Documents
Patent Documents
[0004]
Patent Document 1
Patent Document 2
Summary of the Invention
Problems to be Solved by the Invention
[0005] In the technology described in Patent Document 1, since the server performs retransmission in response to retransmission requests from all clients, when the number of retransmission request clients increases, the load on the server increases. Also, in the technology described in Patent Document 2, the server repeats until the transmission of each block data to the representative client in charge of retransmission of each block data is successful. Therefore, when the representative client goes down or when the representative client fails to receive the block data due to a network failure, etc., the load on the server and the load on the network increase. Thus, one aspect of the present invention reduces the load on the server and the load on the network in data sharing between the server and the client.
Means for Solving the Problems
[0006] To solve the above problems, one aspect of the present invention adopts the following configuration. A data sharing system includes a server and a plurality of clients. The server generates shared data multiple times. When generating the shared data for the first time, the server transmits the shared data to the plurality of clients. When generating the shared data for the second time and later, the server transmits, to the plurality of clients, differential data that is the difference between the generated shared data and the shared data transmitted to the plurality of clients the previous time. When the plurality of clients determines that the differential data has been received normally, the plurality of clients store the differential data in a buffer they have. When a first client among the plurality of clients determines that there is a missing part in the differential data of the buffer it has, the first client requests other clients among the plurality of clients to retransmit the missing differential data. A client among the other clients that holds the missing differential data in the buffer it has transmits the missing differential data to the first client.
Effects of the Invention
[0007] According to one aspect of the present invention, it is possible to reduce the load on the server and the load on the network in data sharing between the server and the client.
[0008] Problems, configurations, and effects other than those described above will be clarified by the description of the following embodiments.
Brief Description of the Drawings
[0009]
Figure 1A
Figure 1B
Figure 2
Figure 3
Figure 4
Figure 5A
Figure 5B
Figure 6
Figure 7A
Figure 7B
Figure 8
Figure 9A
Figure 9B
[0010] Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. In the present embodiment, the same components are generally denoted by the same reference numerals, and repeated descriptions are omitted. It should be noted that the present embodiment is merely an example for implementing the present invention and does not limit the technical scope of the present invention.
[0011] In a data sharing system including a server and a plurality of clients, when the server shares time-varying data with the clients by broadcast communication, the server distributes the entire shared data only for the first time, and thereafter distributes only the differential data from the previous period. In the prior art, when a client fails to receive the differential data, the server has to redistribute the entire shared data to the client, which increases the load on the server and the network. In the present embodiment, a data sharing system that reduces such server load and network load will be described. EXAMPLES
[0012] FIG. 1 is a block diagram showing a configuration example of a data sharing system. The data sharing system includes a server 1 and a plurality of (here, N) clients 21 to 2N connected by a network 3. The network 3 is, for example, the Internet, a LAN (Local Area Network), etc., and the server 1 and the clients 21 to 2N perform broadcast communication, multicast communication, or unicast communication via the network 3. Note that the number of clients included in the data sharing system may be one instead of a plurality.
[0013] Server 1 is the source computer that transmits shared data through broadcast or multicast communication. Server 1 has, for example, a differential data extraction unit 13 and a data transmission unit 14, both of which are functional units. Server 1 also holds shared data (NEW) 11 and shared data (OLD) 12. Additionally, Server 1 has a differential buffer 16, which is a buffer area for storing data.
[0014] Server 1, for example, periodically generates shared data, holds the generated shared data as shared data (NEW) 11, and overwrites the shared data (OLD) 12 with the shared data (the immediately previous shared data (NEW) 11) generated in the previous period.
[0015] The differential data extraction unit 13 extracts, for example, the difference between shared data (NEW) 11 and shared data (OLD) 12 when shared data is periodically generated. The differential data extraction unit 13 adds a header area including a time element T N indicating the time to send the differential data to clients 21 to 2N (which may be the time when the extracted shared data 11 is generated) to the extracted difference to generate differential data 15, and stores the generated differential data 15 in the differential buffer 16. The differential data extraction unit 13 may discard the differential data 15 generated in the previous period from the differential buffer 16. When shared data (NEW) 11 and shared data (OLD) 12 are the same, empty data is transmitted as the differential data.
[0016] The differential data extraction unit 13 sends a distribution instruction to deliver the generated differential data 15 to clients 21 to 2N to the data transmission unit 14. The data transmission unit 14 that receives the distribution instruction transmits the differential data 15 to clients 21 to 2N through broadcast communication or multicast communication.
[0017] When Server 1 generates the first shared data, since there is no shared data in the previous period, it transmits the entire first shared data to clients 21 to 2N without extracting differential data.
[0018] Since the configurations of each of the clients 21 to 2N are all the same, the configuration of the client 21 will be described here as a representative. The client 21 is a computer that receives shared data by broadcast communication or multicast communication. The client 21 performs unicast communication as necessary. The client 21 has, for example, a data restoration unit 211, a data processing unit 212, and a retransmission request processing unit 213, all of which are functional units. Also, the client 21 holds shared data 214. Further, the client 21 has a reception buffer 215 and a difference buffer 216, both of which are buffer areas for storing data.
[0019] The data processing unit 212 stores the difference data received from the server 1 in the reception buffer 215 and the difference buffer 216. When storing the difference data in the difference buffer 216, if the data processing unit 212 determines that the number of difference data stored in the difference buffer 216 has reached a certain number, the data processing unit 212 discards the old difference data in order so that the difference data stored in the difference buffer 216 does not exceed the certain number. The data restoration unit 211 updates the shared data 214 by adding the latest difference data to the shared data 214.
[0020] By the processing of the above-described server 1 and clients 21 to 2N, the server 1 can share the data of the latest cycle with the clients 21 to 2N only by transmitting the difference between the newly generated shared data and the shared data generated in the previous cycle, and can reduce the communication volume from the server 1 to the clients 21 to 2N.
[0021] When the data processing unit 212 fails to normally receive the differential data, the retransmission request processing unit 213 requests other clients and / or the server 1 to retransmit the differential data. In this embodiment, the differential buffers 216 of all the clients 21 to 2N are configured to hold the differential data at all times. As a result, even if the differential data is missing in any one of the clients, it is highly probable that the differential data can be retransmitted from other clients.
[0022] FIG. 1B is a block diagram showing an example of the hardware configuration of the computers constituting the server 1 and the clients 21 to 2N respectively. The computer 100 is constituted by a computer having, for example, a CPU 101, an auxiliary storage device 102, a memory 103, a display device 105, an input / output interface 106, and a communication interface 107, which are connected to each other by an internal signal line 104 such as a bus.
[0023] The CPU 101 includes a processor and executes a program stored in the memory 103. The memory 103 includes a non-volatile non-temporary storage element, a ROM, and a volatile storage element, a RAM. The ROM stores invariant programs (such as BIOS). The RAM is a high-speed and volatile storage element such as a DRAM (Dynamic Random Access Memory), and temporarily stores the program executed by the CPU 101 and the data used during the execution of the program.
[0024] The auxiliary storage device 102 is, for example, a large-capacity and non-volatile non-temporary storage device such as a magnetic storage device (HDD) or a flash memory (SSD), and stores the program executed by the CPU 101 and the data used during the execution of the program. That is, the program is read out from the auxiliary storage device 102, loaded into the memory 103, and executed by the CPU 101.
[0025] The input / output interface 106 is an interface to which devices such as a keyboard and a mouse are connected and which receives inputs from an operator. Also, the input / output interface 106 is an interface to which devices such as a display device 105 and a printer are connected and which outputs the execution results of a program in a form visible to the operator. The display device 105 displays the execution results of the program output from the input / output interface 106.
[0026] The communication interface 107 is a network interface device that controls communication with other devices according to a predetermined protocol. Also, the communication interface 107 may include a serial interface such as USB (Universal Serial Bus), for example.
[0027] Part or all of the program executed by the CPU 101 may be provided to the computer 100 from a removable medium (such as a CD-ROM or a flash memory), which is a computer-readable non-transitory storage medium, or from an external computer having a non-transitory storage device connected via the network 600, and stored in the non-volatile auxiliary storage device 102, which is a non-transitory storage medium. For this reason, the computer 100 may desirably have an interface for reading data from a removable medium.
[0028] Each of the server 1 and the clients 21 to 2N is a computer system configured physically on one computer or on a plurality of computers configured logically or physically, and may operate in separate threads on the same computer or may operate on a virtual computer constructed on a plurality of physical computer resources.
[0029] The CPU 101 of the computer 100 constituting the server 1 includes, for example, a differential data extraction unit 13, a data transmission unit 14, and a difference buffer 16, all of which are functional units. The CPU 101 of the computer 100 constituting each of the clients 21 to 2N includes a data restoration unit 211, a data processing unit 212, and a retransmission request processing unit 213.
[0030] For example, the CPU 101 of the computer 100 constituting the server 1 operates according to the differential data extraction program loaded into the memory 103 of the computer 100 constituting the server 1, thereby functioning as the differential data extraction unit 13, and operates according to the data transmission program loaded into the memory 103 of the computer 100 constituting the server 1, thereby functioning as the data transmission unit 14. The relationship between the functional units included in the CPU 101 of the computer 100 constituting the server 1 and the functional units included in the CPU 101 of each of the computers 100 constituting the clients 21 to 2N is the same for the relationship between the functional units and the programs.
[0031] Note that in this embodiment, the information used by the data sharing system may be expressed in any data structure regardless of the data structure. For example, a data structure appropriately selected from a table, a list, a database, or a queue can store the information.
[0032] Figure 2 is an example of the differential data 15 at time T when the server 1 transmits to the clients 21 to 2N N The differential data 15 at time TN includes, for example, time data 151, data size 152, hash value 153, and data 154. For example, the time data 151, the data size 152, and the hash value 153 are stored in the header area of the differential data 15.
[0033] The time data 151 is information that can identify differential data that changes over time. Information that uniquely identifies differential data, such as a sequence number indicating the transmission order of the differential data and a timestamp, are all examples of the time data 151.
[0034] The data size 152 is information indicating the size of the data 154. The hash value 153 is a hash value calculated from the data 154. The data size 152 and the hash value 153 are used for the purpose of checking the consistency of the data 154. Note that the differential data 15 does not need to include the data size 152 and the hash value 153. The data 154 is differential data between the shared data (NEW) 11 and the shared data (OLD) 12.
[0035] Fig. 3 is an explanatory diagram showing an outline of the differential data reception process and the reception determination process. The data processing unit 212 of the client 21 to the client 2N temporarily stores the differential data 15 at the time TN transmitted by the server 1 in the reception buffer 215 as the differential data at the time TN. Thereafter, the data processing unit 212 executes the process shown in Fig. 4. As an overview of the process in Fig. 4, if the data processing unit 212 determines that the differential data stored in the reception buffer 215 is not normal data, it instructs the retransmission request processing unit 213 to make a retransmission request, and if it determines that the differential data stored in the reception buffer 215 is normal data, it instructs the data restoration unit 211 to restore the data.
[0036] 4 is a flowchart showing an example of processing by the data processing unit 212. The data processing unit 212 measures the actual data size of the differential data received at the time TN, and judges whether the measured data size is equal to the data size 152 included in the header area (S41). If the data processing unit 212 judges that the measured data size is not equal to the data size 152 included in the header area (S41: NO), N It is determined that the differential data at time T N The difference data is then deleted, and the process of FIG. 4 is terminated.
[0037] When the data processing unit 212 determines that the measured data size is equal to the data size 152 included in the header area (S41: YES), it calculates a hash value from the difference data of the received time TN, and determines whether the calculated hash value matches the hash value 153 included in the header area (S42). When the data processing unit 212 determines that the calculated hash value does not match the hash value 153 included in the header area (S42: NO), it determines that the difference data at time T N could not be received normally, discards the received data (S43), that is, deletes the difference data at time T N from the reception buffer 215, and ends the process of FIG. 4.
[0038] When the data processing unit 212 determines that the calculated hash value matches the hash value 153 included in the header area (S42: YES), it determines that the difference data at time T N was received normally, and copies the difference data at time T N to the difference buffer 216 (S44).
[0039] The data processing unit 212 compares the difference data copied last time to the difference buffer 216 with the difference data of time T N copied this time, and determines whether there is a missing difference data (S45). Specifically, for example, when a sequence number indicating the transmission order of the difference data is stored as the time data 151, the data processing unit 212 determines that there is no missing difference data when it determines that the sequence number of the difference data copied last time and the sequence number of the difference data of time T N copied this time are consecutive, and determines that there is a missing difference data when it determines that they are not consecutive.
[0040] Also, for example, when a timestamp is stored as the time data 151, the time indicated by the timestamp of the difference data copied last time and the time T NWhen it is determined that the difference between the time indicated by the timestamp of the differential data and [timestamp] is within a predetermined value, it is determined that there is no missing differential data. When it is determined that the difference is greater than the predetermined value, it is determined that there is a large amount of missing differential data.
[0041] When the data processing unit 212 determines that there is missing differential data (S45: YES), the time data 151 of the differential data copied last time in the differential buffer 216, the time T copied this time N Based on the time data 151 of the differential data of [timestamp] and [timestamp], the differential data of the missing time is specified, and an instruction to execute a retransmission request for the differential data of the missing time is transmitted to the retransmission request processing unit 213 (S46), and the process of FIG. 4 is terminated.
[0042] Specifically, for example, when a sequence number indicating the transmission order of the differential data is stored as the time data 151, in step S46, the data processing unit 212 uses the sequence number of the differential data copied last time, the time T copied this time N An instruction to execute a retransmission request for the differential data at the time indicated by the sequence number between the sequence numbers of the differential data of [timestamp] and [timestamp] is transmitted to the retransmission request processing unit 213.
[0043] Also, for example, when a timestamp is stored as the time data 151, in step S46, the data processing unit 212 uses the time indicated by the timestamp of the differential data copied last time, the time T copied this time N An instruction to execute a retransmission request for the differential data at the time between the time indicated by the timestamp of the differential data of [timestamp] and [timestamp] is transmitted to the retransmission request processing unit 213.
[0044] When the data processing unit 212 determines that there is no missing differential data (S45: NO), it deletes the differential data of the previous cycle (that is, at time TN-1) stored in the reception buffer 215 (S47), and transmits a restoration instruction to the data restoration unit 211 (S48), and the process of FIG. 4 is terminated.
[0045] Note that when the data restoration unit 211 receives a restoration instruction from the data processing unit 212, it reflects the differential data at time TN stored in the reception buffer 215 in the shared data 214 (adds the data 154 of the differential data at time T stored in the reception buffer 215), and restores the latest state of the shared data 214. N and restores the latest state of the shared data 214 by adding the data 154 of the differential data at time T stored in the reception buffer 215.
[0046] FIG. 5A is an explanatory diagram showing an overview of the retransmission pre-request process and the retransmittable response process. When the retransmission request processing unit 213 receives an instruction from the data processing unit 212 in step S46 to execute a retransmission request for the differential data of the missing time (hereinafter, it is assumed that this client is client 21), it broadcasts or multicasts a retransmission pre-request for the differential data indicating the missing time to all other clients 22 to 2N.
[0047] When the retransmission request processing units 213 of clients 22 to 2N other than client 21 receive a retransmission pre-request for the differential data of the missing time from client 21, they check whether the differential data of the missing time is stored in their own differential buffer 216.
[0048] When the retransmission request processing units 213 of clients 22 to 2N determine that the differential data of the missing time is stored in their own differential buffer 216, they unicast a retransmittable response indicating that the differential data of the missing time can be retransmitted to the retransmission request processing unit 213 of client 21. When the retransmission request processing units 213 of clients 22 to 2N determine that the differential data of the missing time is not stored in their own differential buffer 216, they do not send a possible response to client 21.
[0049] FIG. 5B is an explanatory diagram showing an overview of a retransmission execution instruction and differential data retransmission processing. The retransmission request processing unit 213 of the client 21 (the client that has determined that differential data at a certain time is missing) determines the client that has transmitted the earliest possible response (here, the client 22) as the retransmission client, and transmits a retransmission execution instruction only to the client 22 by unicast communication.
[0050] When the retransmission request processing unit 223 of the client 22 receives a retransmission execution instruction from the client 21, it transmits, by unicast communication to the client 21, the differential data at the time indicated by the pre-retransmission request, which is held in its own differential buffer 216.
[0051] The data processing unit 212 of the client 21 receives the differential data at that time retransmitted from the client 22 and temporarily stores it in its own reception buffer 215. Thereafter, as described in the flowchart of FIG. 4, the data processing unit 212 of the client 21 performs a determination process on the differential data retransmitted from the client 22, and if there is no missing differential data, it transmits a restoration instruction to the data restoration unit 211. When receiving the restoration instruction from the data processing unit 212, the data restoration unit 211 restores the shared data in the latest state by reflecting the differential data stored in the reception buffer 215 in the shared data.
[0052] In the data sharing system of this embodiment, the client that has determined that there is missing differential data transmits a pre-retransmission request to other clients, instructs the client that has transmitted the earliest possible retransmission response to retransmit the missing differential data, and the client that has transmitted the earliest possible retransmission response transmits the missing differential data to the client that has determined that there is missing differential data. That is, in the data sharing system of this embodiment, since the server 1 does not need to retransmit the shared data to the client that has determined that there is missing differential data, the processing load and communication load of the server 1 can be reduced.
Embodiment
[0053] In this embodiment, the communication between the client that has determined that there is missing differential data and other clients is different from that in Embodiment 1. Hereinafter, the differences from Embodiment 1 will mainly be described. In this embodiment, instead of the processes described with reference to FIGS. 5A and 5B, the processes of FIGS. 6, 7A, and 7B below are executed.
[0054] FIG. 6 is an explanatory diagram showing an outline of a retransmission instruction and differential data retransmission processing. When the retransmission request processing unit 213 receives an instruction from the data processing unit 212 to execute a retransmission request for differential data at a missing time in step S46 (hereinafter, it is assumed that this client is client 21), if it does not receive a retransmission request for differential data indicating the missing time from any of the other clients 22 to 2N even after waiting for a random time, it broadcasts or multicasts a retransmission request for differential data indicating the missing time to all the other clients 22 to 2N.
[0055] If the clients 22 to 2N that have received the retransmission request do not receive differential data for the missing time from any of the other clients even after waiting for a random time, they broadcast or multicast the differential data for the missing time to all the other clients. The details of the processing by each client described in FIG. 6 will be described with reference to FIGS. 7A and 7B.
[0056] FIG. 7A is a flowchart showing an example of a retransmission request by the retransmission request processing unit 213 of each client. The retransmission request processing unit 213 determines whether it has received an instruction from the data processing unit 212 to execute a retransmission request for differential data at a missing time (whether a retransmission request instruction was transmitted in step S46) (S71). If the retransmission request processing unit 213 determines that it has not received an instruction from the data processing unit 212 to execute a retransmission request for differential data at a missing time (S71: NO), it ends the processing of FIG. 7A.
[0057] When the retransmission request processing unit 213 determines that it has received an instruction from the data processing unit 212 to execute a retransmission request for the difference data of the missing time (S71: YES), it waits for a random time (S72) before transmitting the retransmission request itself. While waiting for the random time, the retransmission request processing unit 213 determines whether it has received a retransmission request for the difference data at the same time (the missing time) from another client (S73).
[0058] If the retransmission request processing unit 213 determines that it has received a retransmission request for the difference data at the same time from another client while waiting for the random time (S73: YES), it ends the process of FIG. 7A without transmitting the retransmission request.
[0059] If the retransmission request processing unit 213 determines that it has not received a retransmission request for the difference data at the same time from another client even after waiting for the random time (S73: NO), it transmits a retransmission request for the difference data indicating the time to all other clients by multicast or broadcast (S74) and ends the process of FIG. 7A. In FIG. 7A, instead of the random time, different times predetermined for each client may be used.
[0060] FIG. 7B is a flowchart showing an example of the retransmission process by the retransmission request processing unit 213 of each client that has received the retransmission request. The retransmission request processing unit 213 of the client that has received the retransmission request (clients 22 to 2N in the example of FIG. 6) determines whether the difference data of the time indicated by the retransmission request is stored in its own difference buffer 216 (S75). If the retransmission request processing unit 213 of the client that has received the retransmission request determines that the difference data of the time indicated by the retransmission request is not stored in its own difference buffer 216 (S75: NO), it ends the process of FIG. 7B.
[0061] When the retransmission request processing unit 213 of the client that has received the retransmission request determines that the difference data at the time indicated by the retransmission request is stored in its own difference buffer 216 (S75: YES), before retransmitting the difference data at that time, it waits for a random time (S76). The retransmission request processing unit 213 of the client that has received the retransmission request determines whether it has received difference data at the same time from another client while waiting for the random time (S77).
[0062] When the retransmission request processing unit 213 of the client that has received the retransmission request determines that it has received difference data at the same time from another client while waiting for the random time (S77: YES), it ends the processing of FIG. 7B without performing the retransmission process.
[0063] When the retransmission request processing unit 213 of the client that has received the retransmission request determines that it has not received difference data at the same time from another client while waiting for the random time (S77: NO), it executes a retransmission process of transmitting the difference data at that time to all clients by multicast or broadcast communication (S78), and ends the processing of FIG. 7B. Note that even if the retransmission request processing unit 213 has not received an instruction to execute the retransmission request from the data processing unit 212, a client that has received difference data by the retransmission process may discard the difference data received by the retransmission process.
[0064] As described above, in this embodiment, even if there are a plurality of clients lacking difference data at the same time, only the client that has not received a retransmission request from another client while waiting for the random time transmits the retransmission request to all other clients. Further, even if there are a plurality of clients that have received the retransmission request and whose difference buffers 216 hold the difference data at the time indicated by the retransmission request, only the client that has not received the difference data from another client while waiting for the random time retransmits the difference data to all other clients.
[0065] That is, in this embodiment, only one client sends a retransmission request and another client executes retransmission processing, and multiple clients lacking differential data at the same time can receive the retransmission of the differential data, thereby reducing the network traffic, and reducing the processing load of clients that do not send retransmission requests and clients that do not execute retransmission processing.
Embodiment
[0066] In this embodiment, when the differential data extraction unit 13 determines that there is no difference between the shared data (OLD) 12 in the previous cycle and the shared data (NEW) 11 in the latest state, instead of sending empty data as differential data, the data transmission unit 14 notifies the clients 21 to 2N that there will be no differential data hereafter.
[0067] FIG. 8 is an example of the differential data 15 transmitted from the server 1 to the clients 21 to 2N at time T. N The difference from FIG. 2 will be described. The differential data 15 at time TN further includes an EoD (End of Data) flag 155. The EoD flag is stored in the header area of the differential data 15, for example.
[0068] The EoD flag is a flag indicating whether differential data will be transmitted after the differential data 15. The EoD flag 155 is set to ON only when the differential data extraction unit 13 determines that there is no difference between the shared data (OLD) 12 in the previous cycle and the shared data (NEW) 11 in the latest state.
[0069] By setting the EoD flag 155, the server 1 does not need to send empty data when there is no differential data, and can reduce the processing load on the server and clients and the network traffic.
[0070] Note that when clients 21 to 2N receive differential data with the EoD flag 155 being ON, they determine that there will be no further differential data hereafter. Also, for example, in step S45, if clients 21 to 2N determine that no next differential data has been received even after a predetermined time has elapsed since they received the differential data, despite the EoD flag 155 of the last received differential data being OFF, they determine that data is missing. As a result, clients 21 to 2N can execute a retransmission request even when data with the EoD flag 155 being ON is missing.
Example
[0071] In the first embodiment, as shown in FIG. 1, the differential buffers 216 of all clients 21 to 2N hold differential data at all times. In this embodiment, however, a different example of the method by which the differential buffer 216 holds data will be described.
[0072] FIG. 9A is an explanatory diagram showing an example of the method by which the differential buffers 216 of clients 21 to 2N hold differential data. In the example of FIG. 9A, the differential data held by each client 21 is dispersed so as not to overlap, and the differential data is stored. As a result, compared to the case where each client holds all the differential data (first embodiment), the amount of differential data held by each client becomes 1 / N, so the period during which retransmission can be supported becomes N times as long.
Example
[0073] In this embodiment, a further different example of the method by which the differential buffer 216 holds data will be described. FIG. 9B is an explanatory diagram showing an example of the method by which the differential buffers 216 of clients 21 to 2N hold differential data. In the example of FIG. 9B, the number of clients N is an even number, and the same differential data is held for each combination of two clients, and the differential data is dispersed and held so that different combinations of clients do not overlap.
[0074] As a result, compared with the case where each client holds all the differential data (Example 1), the period during which retransmission can be supported becomes longer, and compared with the case where the differential data held by each client 21 is dispersed so as not to overlap (Example 4), redundancy can be obtained.
[0075] In the example of FIG. 9B, differential data is dispersed and held for each combination of two clients. However, the number of clients N is a multiple of an arbitrary positive number M, the same differential data is held for each combination of M clients, and the differential data may be dispersed and held so that different combinations of clients do not overlap.
Example
[0076] In this example, the server 1 has a differential buffer 216 similar to those of the clients 21 to 2N. Further, the server 1 receives a retransmission request for differential data and also executes retransmission processing in the same manner as the clients in Example 1 or Example 2. As a result, the number of terminals holding the differential data increases, and the period during which retransmission can be supported becomes longer.
[0077] Note that the present invention is not limited to the above-described examples and includes various modifications. For example, the above-described examples have been described in detail for easy understanding of the present invention and are not necessarily limited to those having all the configurations described. Also, a part of the configuration of one example can be replaced with the configuration of another example, and the configuration of another example can be added to the configuration of one example. Further, for a part of the configuration of each example, addition, deletion, or replacement with other configurations is possible.
[0078] In addition, each of the above-described configurations, functions, processing units, processing means, etc. may be implemented in hardware by designing a part or all of them, for example, by means of an integrated circuit. Further, each of the above-described configurations, functions, etc. may be implemented in software by a processor interpreting and executing a program for realizing each function. Information such as a program, a table, a file, etc. for realizing each function can be placed in a memory, a recording device such as a hard disk, an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, a DVD, etc.
[0079] Also, control lines and information lines show those considered necessary for explanation, and not necessarily all control lines and information lines are shown on the product. In fact, it may be considered that almost all configurations are interconnected.
Explanation of Reference Numerals
[0080] 1 Server, 15 Differential Data, 16 Differential Buffer, 21~2N Clients, 101 CPU, 102 Auxiliary Storage Device, 103 Memory, 107 Communication I / F, 151 Time Data, 152 Data Size, 153 Hash Value, 154 EoD Flag, 154 Data, 211 Data Restoration Unit, 212 Data Processing Unit, 213 Retransmission Request Processing Unit, 215 Receive Buffer, 216 Differential Buffer
Claims
1. A data sharing system including a server and a plurality of clients, wherein the server, generates shared data multiple times, when generating the shared data for the first time, transmits the shared data to the plurality of clients, when generating the shared data for the second time and later, transmits differential data, which is the difference between the generated shared data and the shared data transmitted to the plurality of clients last time, to the plurality of clients, when the plurality of clients determines that the differential data has been received normally, stores the differential data in a buffer that the clients themselves have, a first client included in the plurality of clients, when determining that there is a missing part in the differential data of the buffer that the first client itself has, requests retransmission of the missing differential data from other clients included in the plurality of clients, a client that holds the missing differential data in the buffer that the client itself has among the other clients transmits the missing differential data to the first client, the server holds a buffer that holds the differential data, the first client, when determining that there is a missing part in the differential data of the buffer that the first client itself has, requests retransmission of the missing differential data from other clients included in the plurality of clients and the server, a client among the server or the other clients that holds the missing differential data in the buffer that the client itself has transmits the missing differential data to the first client, a data sharing system.
2. The data sharing system according to claim 1, wherein a client that holds the missing differential data among the other clients transmits a retransmission - possible response indicating that the client can transmit the missing differential data to the first client, the first client instructs retransmission of the missing differential data to a second client that transmitted the earliest - received retransmission - possible response, the second client transmits the missing differential data to the first client, a data sharing system.
3. The data sharing system according to claim 1, The server adds the data size of the differential data and the hash value calculated from the differential data to the differential data, and transmits the differential data to the plurality of clients. The plurality of clients When it is determined that the data size added to the received differential data matches the data size calculated from the received differential data, and When it is determined that the hash value added to the received differential data matches the hash value calculated from the received differential data, A data sharing system that determines that the differential data has been received normally and stores the differential data in the buffer.
4. The data sharing system according to claim 1, The server adds information indicating the time when the differential data was extracted or the time when the differential data was transmitted to the plurality of clients, or a sequence number indicating the transmission order of the differential data, to the differential data, and transmits the differential data to the plurality of clients. The plurality of clients determine whether there is a missing differential data in the buffer they have by comparing the time or sequence number indicated by the information of the plurality of differential data stored in the buffer they have.
5. The data sharing system according to claim 1, The first client When it is determined that there is a missing differential data in the buffer it has, Waits for a random time, If the retransmission of the missing data is not requested during the random time, requests the other clients to retransmit the missing differential data.
6. The data sharing system according to claim 5, Among the other clients, the client that holds the missing differential data in the buffer it has Waits for a random time, If the missing differential data is not received during the random time, transmits the missing differential data to the first client.
7. The data sharing system according to claim 1, When the server last generated shared data, it adds a flag indicating whether to transmit differential data hereafter to the differential data, and transmits the differential data to the plurality of clients. When the plurality of clients determine that, although the flag added to the last received differential data indicates that subsequent differential data will be transmitted, no subsequent differential data has been received after a predetermined time has elapsed since the last received differential data, they determine that there is a gap in the differential data in the buffer they possess. A data sharing system.
8. A data sharing method by a data sharing system including a server and a plurality of clients, The server, Generates shared data multiple times, When generating shared data for the first time, transmits the shared data to the plurality of clients, When generating shared data for the second time and later, transmits differential data, which is the difference between the generated shared data and the shared data transmitted to the plurality of clients last time, to the plurality of clients, When the plurality of clients determine that they have received the differential data normally, they store the differential data in the buffer they possess, The first client included in the plurality of clients, When it determines that there is a gap in the differential data in the buffer it possesses, Requests retransmission of the missing differential data from other clients included in the plurality of clients, Among the other clients, a client that holds the missing differential data in the buffer it possesses transmits the missing differential data to the first client, The server holds a buffer that holds the differential data, The first client, When it determines that there is a gap in the differential data in the buffer it possesses, Requests retransmission of the missing differential data from other clients included in the plurality of clients and the server, The server, or a client among the other clients that holds the missing differential data in the buffer it possesses, transmits the missing differential data to the first client. A data sharing method.
Citation Information
Patent Citations
Moving image transfer method
JP1999355737A
Multicast communication method and system thereof
JP2003209576A
Communication terminal and retransmission request method
JP2008005455A
Data communication method
JP2008085932A
Repeater for multicast communication, and terminal device
JP2009010575A