In distributed storage systems, each data block may be stored as multiple replicates and when the data block is updated, the same update needs to be implemented among the replicates as well. The update among replicates can be implemented by a coordinator. In a master-slave replication system, the coordinator can be a master server and update process can be: the coordinator sequences updates data blocks, assigns new data versions, generates update requests, and sends the requests to slave servers. The update request can comprise two parts: data update and control information update. The control information update includes the new data version and metadata of the data block, such as a data block identification, the original version of the data block, the new version of the data block, and metadata information for other slave servers. Each slave server receives and processes the update request and then replies to the coordinator. The coordinator determines, according to a number of normal responses from the slave servers, the number of update requests sent, and a data consistency protocol, whether the data update is successful. If yes, it will modify the data block to the new version.
In the process of updating the data, the new version is generated based on the current version of the data block. Thus, the version monotonically increases and only one latest version is included in the update requests. If, instead, the slave server receives update requests including multiple new versions, the complexity will increase for maintaining consistency in updating the data. Therefore, in the update process, if the coordinator receives multiple update requests to the same data block, the request has to be queued and only after completing a current update request, it will process the next.
In order to achieve consistency in updating replicates of the data block, update requests of the same data block are sequenced, i.e., in serial execution of the data update requests. The data update process includes: network transmission, logic processing of the request, and write disk IO parts. At present, the disk can be solid state discs (SSD) and cluster write performance is relatively high. But carrying, in an update request, multiple data updates as batch processing can have the data update requests processed at once, reducing delay in the logic processing. The main bottleneck of data updates is in transmission network: the batch processing contains multiple updates and the amount of data transmission is large, causing a significant transmission delay.