Method, electronic device, and computer program product for backing up data

Backing up data is described. An example method includes acquiring data block deduplication information of source data and pieces of backup node deduplication information of backup nodes in a backup node set. Then, based on the data block deduplication information and the pieces, deduplication rates of the source data are determined relative to the backup nodes in the backup node set. In addition, based on the deduplication rates for the plurality of backup nodes, a target backup node is selected for backing up the source data from the backup node set. Data features of the to-be-backed-up source data are utilized to determine the deduplication rate of the source data relative to each backup node, thereby selecting the target backup node through the deduplication rates of the backup nodes. The space occupation of backup nodes can also be reduced when backing up the source data, thereby achieving better space utilization.

RELATED APPLICATION

The present application claims the benefit of priority to Chinese Patent Application No. 202310836638.8, filed on Jul. 7, 2023, which application is hereby incorporated into the present application by reference herein in its entirety.

TECHNICAL FIELD

Embodiments of the present disclosure generally relate to the technical field of computers, and more specifically to a method, an electronic device, and a computer program product for backing up data.

BACKGROUND

Data backup is an important method for protecting data integrity and recoverability. When source data on a storage device in a storage system is very important, a user may configure a backup service for the important data to ensure that the data can be restored even if the storage device is damaged. Moreover, through data backup, the protected data can also be restored to a specified time node to view the corresponding data.

When backing up data, a plurality of factors often is considered, such as backup speed, backup space, and number of backups, among which the backup space is crucial. By selecting an appropriate backup node for the to-be-backed-up source data, it can save the backup space and thereby reduce storage costs.

SUMMARY

Embodiments of the present disclosure provide a method, an electronic device, and a computer program product for backing up data.

The embodiments of the present disclosure provide a method, an electronic device, and a computer program product for backing up data. The method includes acquiring data block deduplication information of source data and a plurality of pieces of backup node deduplication information of a plurality of backup nodes in a backup node set, wherein backup node deduplication information in the plurality of pieces of backup node deduplication information includes data block deduplication information of backed up data in a corresponding backup node. The method further includes determining, based on the data block deduplication information of the source data and the plurality of pieces of backup node deduplication information, a plurality of deduplication rates of the source data relative to the plurality of backup nodes in the backup node set, wherein a deduplication rate in the plurality of deduplication rates indicates a deduplication ratio of the source data when backing up the source data to the corresponding backup node. Moreover, the method further includes selecting, based on the plurality of deduplication rates for the plurality of backup nodes, a target backup node for backing up the source data from the backup node set.

In another embodiment of the present disclosure, an electronic device is provided. The device includes a processing unit and a memory, wherein the memory is coupled to the processing unit and stores instructions. The instructions, when executed by the processing unit, perform the following actions: acquiring data block deduplication information of source data and a plurality of pieces of backup node deduplication information of a plurality of backup nodes in a backup node set, wherein backup node deduplication information in the plurality of pieces of backup node deduplication information includes data block deduplication information of backed up data in a corresponding backup node; determining, based on the data block deduplication information of the source data and the plurality of pieces of backup node deduplication information, a plurality of deduplication rates of the source data relative to the plurality of backup nodes in the backup node set, wherein a deduplication rate in the plurality of deduplication rates indicates a deduplication ratio of the source data when backing up the source data to the corresponding backup node; and selecting, based on the plurality of deduplication rates for the plurality of backup nodes, a target backup node for backing up the source data from the backup node set.

In still another embodiment of the present disclosure, a computer program product is provided. The computer program product is tangibly stored on a non-transitory computer-readable storage medium and includes computer-executable instructions, the computer-executable instruction, when executed, causing a computer to perform the method or process according to the embodiments of the present disclosure.

This Summary part is provided to introduce relevant concepts in a simplified manner, which will be further described in the Detailed Description below. This Summary part is neither intended to identify key features or essential features of the present disclosure, nor intended to limit the scope of the embodiments of the present disclosure.

DETAILED DESCRIPTION

Preferred embodiments of the present disclosure will be described in more detail below with reference to the accompanying drawings. While some specific embodiments of the present disclosure are shown in the accompanying drawings, it should be understood that the present disclosure may be implemented in various forms, and should not be limited to the embodiments set forth herein. Rather, these embodiments are provided to make the present disclosure more thorough and complete and to fully convey the scope of the present disclosure to those skilled in the art.

The term “include” and variants thereof used in this text indicate open-ended inclusion, that is, “including but not limited to.” Unless specifically stated, the term “or” means “and/or.” The term “based on” means “based at least in part on.” The terms “an example embodiment” and “an embodiment” indicate “at least one example embodiment.” The term “another embodiment” indicates “at least one additional embodiment.” The terms “first,” “second,” and the like may refer to different or identical objects, unless otherwise specifically indicated.

Data backup is an important method of protecting data in a storage system. When performing data backup, for to-be-backed-up source data, a target backup node is selected from a plurality of backup nodes in a backup node set, for backing up the to-be-backed-up source data. When selecting a backup node for the to-be-backed-up source data, existing data backup methods often rely on remaining space of backup nodes or simply performs determination according to a compression rate and a deduplication rate of the source data, resulting in a failure in achieving optimal space utilization. This is because when backing up the source data, the source data may be divided into a plurality of data blocks, and some of these data blocks may already exist on the backup node. Therefore, it is unnecessary to actually store these data blocks during backup, which can thus save space. Therefore, when the data blocks of the source data are not on the selected backup node, it will result in a low space utilization.

To address the above issues, the embodiments of the present disclosure provide a method for backing up data. The method selects an appropriate backup node by utilizing a data feature of the to-be-backed-up source data. Specifically, data block deduplication information of the source data is acquired, the data block deduplication information recording the number of occurrences of each data block in the source data, and by comparing the data block deduplication information of the source data with data block deduplication information of a plurality of backed up data blocks on the backup node, a deduplication rate of the source data relative to each backup node is determined, thereby selecting a target backup node through a plurality of deduplication rates of a plurality of backup nodes. By analyzing the data feature of the to-be-backed-up source data, the embodiments of the present disclosure can reduce the space occupation of backup nodes and achieve better space utilization when backing up the source data.

FIG.1is a schematic diagram of an example environment100in which an embodiment of the present disclosure can be implemented. As shown inFIG.1, an example environment100includes a storage service102, a storage service104, and a storage service106. These storage services may be the same storage service or different storage services, such as different storage services from the same supplier. It should be understood that only 3 storage services are illustrated in the example environment100, but in fact there may be fewer or more storage services.

Each storage service stores some source data, and each piece of source data belongs to a specific tenant. For example, the storage service102stores source data112-1and112-2, the storage service104stores source data114-1and114-2, and the storage service106stores source data116-1,116-2, and116-3. It should be understood that the number of pieces of source data stored on each storage service here is only for example purposes, and in fact, fewer or more pieces of source data may be stored. In some embodiments, each piece of source data may be stored on different storage devices. For example, the source data112-1may be stored in a flash memory, a hard drive, and a file system.

In addition, the example environment100further includes a backup management system120, and enables the selection of a suitable backup node for any source data in the source data through the backup management system120, in order to save the space of backup nodes to the maximum extent. As shown inFIG.1, the backup management system120includes a backup node selection service130, which selects a target backup node based on the deduplication rate of the to-be-backed-up source data relative to each backup node through a deduplication rate calculation service132. For example, when the source data112-1is the to-be-backed-up source data, the backup management system120may obtain data block deduplication information of the source data112-1, which includes key value pairs of data blocks in the source data112-1and the number of occurrences of the data blocks. Then, a plurality of deduplication rates may be calculated through the deduplication rate calculation service132in the backup node selection service130. The data block deduplication information of the source data112-1may be pre-calculated or calculated at the time of initiating a backup request, which is not limited in the present disclosure. In addition, when the data block deduplication information is pre-calculated, it may be stored on the storage device where the source data112-1is located or on the backup management system120, which is not limited in the present disclosure.

In addition, the example environment100further includes a backup node set150, which includes backup nodes152to158. When calculating a plurality of deduplication rates, backup node deduplication data142-1to142-N is obtained from a backup node deduplication database140. For example, the backup node deduplication data142-1is deduplication data of the backup node152, which includes data block deduplication information of each piece of backed up data in backed up data162-1to162-4. It should be understood that the data block deduplication information of the backed up data and the data block deduplication information of the source data are the same in terms of data structure. In addition, the backup node deduplication data142-2is deduplication data of the backup node154, which includes data block deduplication information of each piece of backed up data in backed up data164-1to162-3. Node deduplication data142-3is deduplication data of the backup node156, which includes data block deduplication information of each piece of backed up data in backed up data166-1to166-4. The backup node deduplication data142-4is deduplication data of the backup node158, which includes data block deduplication information of each piece of backed up data in backed up data168-1to162-8. It should be understood that the number of backup nodes here and the number of backed up nodes in each backup node are exemplary, and smaller or larger numbers may be included.

It should be understood that describing the architecture and functionality in the example environment100is for illustrative purposes only and does not imply any limitations to the scope of the present disclosure. The embodiments of the present disclosures may also be applied to other environments with different structures and/or functions.

FIG.2is a flow chart of a method200for backing up data according to some embodiments of the present disclosure. At202, data block deduplication information of source data and a plurality of pieces of backup node deduplication information of a plurality of backup nodes in a backup node set are acquired. Backup node deduplication information in the plurality of pieces of backup node deduplication information includes data block deduplication information of backed up data in a backup node. For example, when backing up the source data to a backup node, the source data is divided into a plurality of data blocks and stored in the form of data blocks on the backup node. When the source data is divided into a plurality of data blocks, because of the duplication of the source data itself, there will be duplication between data blocks. By deduplicating the data blocks and counting the number of occurrences of each deduplicated data block, data block deduplication information of the source data may be obtained. In addition, the deduplication information of the backup node may be obtained with reference toFIG.1. For example, the backup node deduplication data142-1of the backup node152includes data block deduplication information of each piece of the backed up data162-1to162-4. For example, when the backed up data162-4is backed up to the backup node152, its data block deduplication information is also recorded in the backup node deduplication data142of the backup node152.

At204, a plurality of deduplication rates of the source data relative to the plurality of backup nodes in the backup node set is determined based on the data block deduplication information of the source data and the plurality of pieces of backup node deduplication information, wherein a deduplication rate in the plurality of deduplication rates indicates a deduplication ratio of the source data when backing up the source data to the corresponding backup node. For example, referring toFIG.1, when backing up the source data112-1, the deduplication rates of the source data112-1relative to the backup nodes152to158may be calculated based on the data block deduplication information of the source data112-1and the backup node deduplication data142-1to142-4. In other words, when backing up the source data112-1to each backup node, a deduplication ratio for duplicate data blocks may be calculated. Correspondingly, a larger deduplication ratio indicates more storage space saved on the backup node, and it can promote the efficiency of the backup process.

At206, based on the plurality of deduplication rates for the plurality of backup nodes, a target backup node is selected for backing up the source data from the backup node set. For example, referring toFIG.1, when backing up the source data112-1,4deduplication rates of the source data112-1relative to the backup nodes152to158are calculated, and the backup node with the highest deduplication rate is selected as a target backup node of the source data112-1, which can save storage space for the entire backup node set and optimize the backup service.

Therefore, the method200according to some embodiments of the present disclosure calculates the deduplication rate of the source data relative to each backup node by utilizing the data feature of the source data, thereby selecting an appropriate backup node for the source data. Therefore, the backup node with the highest deduplication rate may be selected for the source data, thereby optimizing the space occupation of the backup node and improving the efficiency of the backup process.

FIG.3Ais a flow chart of a process300of acquiring data block deduplication information of source data according to some embodiments of the present disclosure. At302, the source data is divided into a plurality of data blocks, and each data block may have a fixed size, such as 8 KB. For example, the plurality of data blocks of the source data may be b1, b2. . . by. At304, a hash value of each data block in the plurality of data blocks is acquired. For example, when calculating the hash value of each data block, various commonly used hash algorithms such as the SHA2 algorithm may be used to obtain the hash value of the data block. After the hash value of the data block is obtained, it may be determined whether corresponding data blocks are the same by comparing the hash values. For example, it may be difficult to directly compare whether b1and b2are the same data block. However, after a hash value h1of b1and a hash value h2of b2are obtained, the hash values h1and h2may be directly compared to determine whether the data blocks b1and b2are the same.

At306, it is determined whether the hash value of each data block is in a predetermined hash cache, and the predetermined hash cache here is a set of hashes with a high probability of duplication maintained in the storage system. How to maintain the hash cache will be described below with reference toFIG.3B. When it is determined that the hash value is not in the predetermined hash cache, at308, a count value of the hash value is not updated, that is, the count value corresponding to the hash is always 0. When it is determined that the hash value is in the predetermined hash cache, at310, a count value corresponding to the hash value is increased, such as adding 1 to the count value. For example, the hash value h1of the data block b1is not in the predetermined hash cache, and then a count value corresponding to the hash value h1is not updated and is always 0. The hash value h2corresponding to the data block b2is in the predetermined hash cache, and then the count of the hash value h2is increased by 1. It should be understood that there may be another data block bmwhose hash value is also h2(that is, the data block bmand the data block b2are the same data block), so the count value of the hash value h2may further be increased by 1. Finally, the data block deduplication information obtained for the source data is C={(h0, c0), (h1, c1), . . . (hn, cn)}, for example h0is a hash value of a certain data block in the source data, and the hash value is in the predetermined hash cache; c0is the number of times the hash value h0appears in the source data, that is, the number of times the data block corresponding to the hash value h0appears in a plurality of pieces of data of the source data.

Therefore, when obtaining the data block deduplication information of the source data, the process300according to some embodiments of the present disclosure utilizes the predetermined hash cache, and the predetermined hash cache is a set of hashes with a high probability of duplication maintained in the storage system. For example, the source data may have a large number of different hash values, and therefore, the data block deduplication information may be highly redundant, in which many hash values may not be duplicated with the data blocks on the backup node in subsequent backups. Through the predetermined hash cache. Therefore, the acquired data block deduplication information only maintains hash values and their count values that may have a high probability of duplication during backup, thereby optimizing the data block deduplication information.

FIG.3Bis a schematic diagram of a process350of maintaining a hash cache according to some embodiments of the present disclosure. For a primary storage server, deduplication services are usually enabled. Deduplication can reduce the amount of storage used for user data by retaining only a small number of copies (usually only one copy) of data blocks with a given content. The deduplication may be completed in real time when data enters the storage device, known as In-line Deduplication. The in-line deduplication not only can save space, but also can provide additional performance improvement. On the storage system, there is a large amount of write IO, and the in-line deduplication technology may be used to store the corresponding data blocks on the storage device. At352, a host write IO is received. At354, hash values of data blocks in the IO are calculated, wherein various hash algorithms, such as an SHA512 (truncating the first 256 bits of 256 bits) encryption hash function, may be used to calculate the hash values. At356, the hash values are used for updating the hash cache. For example, when a specific hash value does not exist in the hash cache, the specific hash value is written to the hash cache, or when a specific hash value already exists in the hash cache, a count value corresponding to the hash cache is increased by 1. The subsequent steps are routine operations of the write IO, such as determining whether the hash value is in the predetermined cache at358. If it hits, the data blocks are only mapped at360instead of being actually written. If it is missed, the data blocks are compressed and written at362.

Therefore, the hash cache stores hash values and their count values of a large number of data blocks on the storage system. Duplication levels of the hash values may be determined by absolute sizes or relative rankings of the count values, which also indicate the possibility of hash value deduplication. In some embodiments, top hash values with large absolute sizes or relative rankings are selected as the predetermined hash cache used in the process300described inFIG.3Ato obtain the data block deduplication information of the source data. It should be understood that the top hash values with large absolute size or relative rankings mentioned here are not a limitation. Those skilled in the art can select more or fewer hash values as needed.

FIG.4is a schematic diagram of a process400of calculating a deduplication rate according to some embodiments of the present disclosure. As shown inFIG.4, a block402is data block deduplication information of to-be-backed-up source data, and the data block deduplication information includes data block hash values of the source data and corresponding count values thereof. For example, the data block deduplication information402includes the hash values H0 to H6 of the source data, and corresponding count values are C0 to C6, respectively.

In addition,FIG.4includes backup nodes412to416, and during backup, a deduplication rate of the source data is calculated relative to each backup node. Taking the calculation of a deduplication rate430of the source data relative to the backup node414(that is, equivalent to the backup node154inFIG.1) as an example, the deduplication node414includes a plurality of pieces of backed up data (that is, equivalent to the plurality of pieces of backed up data164-1to161-3inFIG.1), and each piece of backed up data has data block deduplication information, which is in the same form as that of the data block deduplication information402of the source data. By using the data block deduplication information of the backed up data of the backup node414, a stored hash set of the backup node414may be obtained to determine whether each hash value in the data block deduplication information402is on the backup node414.

As shown inFIG.4, the hash value H0 is in the stored hash set of the backup node414, and therefore the hash value H0 is added to a hit set422. The hash value H1 is not in the stored hash set of the backup node414, and therefore the hash value H1 is added to a missed set424. When calculating the deduplication rate430, deduplication values, namely C0+C3+C4+ . . . , corresponding to the hash values in the missed set422may be determined, and deduplication values (C1-1)+ (C2-1)+ (C5-1)+ (C6-1) . . . corresponding to the hash values in the missed set422may be determined. Here, the data block corresponding to the hash value H1 is not on the backup node414, so the data block needs to be written to the backup node414only once, and therefore, its corresponding deduplication value is (C1-1), and other parts also have the same meaning. More generally, the deduplication rate Rimay be calculated as shown in Formula 1:

Ri=(∑j=0u⁢xj+∑k=0w⁢(yk-1))*Block_SizeTotal_Primary⁢_Data⁢_Size(1)
wherein xjis the count value of the hash value in the hit set422(that is, the count value of the hash value in the data block deduplication information of the source data), ykis the count value of the hash value in the missed set424, Block_Size represents the size of the data block (for example, 8 KB), and Total_Primary_Data_Size represents the size of the source data.

FIG.5is a schematic diagram of a process500of maintaining backup node duplication data of a backup node according to some embodiments of the present disclosure. As shown inFIG.5, a backup node deduplication database510and a backup node set520are included. For illustrative purposes, the backup node deduplication database510only shows backup node deduplication data512, and the backup node set520only shows a backup node522. At the beginning, the backup node522includes backed up data522-1to522-4, and data block deduplication information corresponding to each piece of backed up data is stored in the backup node deduplication data512, that is, deduplication information512-1to512-4. At a certain moment, the backed up data522-2in the backup node522is removed, and then its corresponding deduplication information512-2also needs to be removed in the backup node deduplication data512. At another moment, new backup data, that is, backed up data525-N, is added to the backup node522, and then its corresponding deduplication information512-N may also be added to the backup node deduplication data512.

FIG.6is a flow chart of a method600for backing up data according to some embodiments of the present disclosure. At602, a source data backup request is received. At604, it is determined whether the source data is in a backup database. In addition, it may also be determined whether data block deduplication information of the source data is in a backup data deduplication database. Because the source data may have been backed up to a backup node at a previous moment, it is a good choice to directly back up the source data to the previous backup node when there is little change in the source data between the current moment and the previous moment. Therefore, a determination is performed at604to determine whether the source data is in the database. When it is determined at604that the source data is in the backup node, that is, the source data is backed up not for the first time, the process proceeds to606to determine whether a change rate of the deduplication information of the source data is less than a predetermined threshold. The reason for performing the determination is that when the source data is backed up not for the first time, but the source data has a significant change compared with the previous backup, it is still appropriate to select a suitable backup node for the source data. When the change is not significant, the source data is directly backed up to the original backup node, which can achieve the maximum deduplication rate. When it is determined at606that the change rate of the deduplication information of the source data is less than the predetermined threshold, the process proceeds to608to select the original backup node for this backup.

When it is determined at604that the source data is not in the backup node, that is, the source data is backed up for the first time, the process proceeds to610. When it is determined at606that the change rate of the deduplication information of the source data is greater than the predetermined threshold, that is, the change rate of the source data compared with the previous backup is large, the process also proceeds to610. At610, it is determined whether all backup nodes are blank backup nodes. When it is determined at610that all backup nodes are blank backup nodes, the process proceeds to612to select the backup node based on remaining storage space of the backup node. When all backup nodes have the same remaining storage space, a backup node may be randomly selected as the target backup node. Since all backup nodes are blank backup nodes, it is easy to understand that when the source data is backed up to any backup node, the deduplication rate is the same.

When it is determined at610that not all backup nodes are blank backup nodes, the process proceeds to614. At614, a deduplication rate of the source data relative to each backup node is calculated. At616, it is determined whether there is a blank backup node. When there is a blank backup node, the deduplication rate of the source data relative to the blank backup node may be lower than that of other backup nodes, which may cause the blank node to be unusable. Therefore, at616, it is determined whether there is a blank backup node to solve this problem. When it is determined at616that there is a blank backup node, the process proceeds to618. At618, it is determined whether the deduplication rates are all lower than the predetermined threshold. The purpose of the determination is to assume that the deduplication rate of the source data relative to each backup node is relatively low when the deduplication rates are all lower than the predetermined threshold. Therefore, a blank backup node may be selected as the target backup node to assist in cold starting the blank backup node. When it is determined at618that the deduplication rates are all lower than the predetermined threshold, the process proceeds to620. At620, a blank backup node is selected as the target backup node. When it is determined at618that not all the deduplication rates are lower than the predetermined threshold, the process proceeds to622. At622, the backup node with the highest deduplication rate is selected, and at the same time, the backup node needs to have enough remaining space to back up the source data. Finally, the source data is backed up to the selected target backup node at624.

FIG.7is a schematic block diagram of a device700that may be used to implement an embodiment of the present disclosure. The device600may be the device or apparatus described in the embodiments of the present disclosure. As shown inFIG.7, the device700includes a central processing unit (CPU)701that may perform various appropriate actions and processing according to computer program instructions stored in a read-only memory (ROM)702or computer program instructions loaded from a storage unit708to a random access memory (RAM)703. Various programs and data required for the operation of the device700may also be stored in the RAM703. The CPU701, the ROM702, and the RAM703are connected to each other through a bus704. An Input/Output (I/O) interface705is also connected to the bus704. Although not shown inFIG.6, the device700may also include a co-processor.

A plurality of components in the device700are connected to the I/O interface705, including: an input unit706, such as a keyboard and a mouse; an output unit707, such as various types of displays and speakers; a storage unit708, such as a magnetic disk and an optical disc; and a communication unit709, such as a network card, a modem, and a wireless communication transceiver. The communication unit709allows the device700to exchange information/data with other devices via a computer network, such as the Internet, and/or various telecommunication networks.

The various methods or processes described above may be performed by the processing unit701. For example, in some embodiments, the method may be implemented as a computer software program that is tangibly included in a non-transitory machine-readable storage medium, such as the storage unit708. In some embodiments, part or all of the computer programs may be loaded and/or installed onto the device700via the ROM702and/or the communication unit709. When the computer program is loaded into the RAM703and executed by the CPU701, one or more steps or actions of the methods or processes described above may be performed.

In some embodiments, the methods and processes described above may be implemented as a computer program product. The computer program product may include a non-transitory computer-readable storage medium on which computer-readable program instructions for performing various embodiments of the present disclosure are loaded.

These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or another programmable data processing apparatus to produce a machine, such that these instructions, when executed by the processing unit of the computer or another programmable data processing apparatus, generate an apparatus for implementing the functions/actions specified in one or more blocks in the flow charts and/or block diagrams. The computer-readable program instructions may also be stored in a non-transitory computer-readable storage medium. These instructions cause a computer, a programmable data processing apparatus, and/or another device to operate in a particular manner, such that the non-transitory computer-readable storage medium storing the instructions includes an article of manufacture which includes instructions for implementing various embodiments of the functions/actions specified in one or more blocks in the flow charts and/or block diagrams.

The computer-readable program instructions may also be loaded onto a computer, another programmable data processing apparatus, or another device, such that a series of operation steps are performed on the computer, another programmable data processing apparatus, or another device to produce a computer-implemented process. Thus, the instructions executed on the computer, another programmable data processing apparatus, or another device implement the functions/actions specified in one or more blocks in the flowcharts and/or block diagrams.

The flow charts and block diagrams in the accompanying drawings show the architectures, functions, and operations of possible implementations of the device, the method, and the computer program product according to a plurality of embodiments of the present disclosure. In this regard, each block in the flow charts or block diagrams may represent a module, a program segment, or part of an instruction, the module, program segment, or part of an instruction including one or more executable instructions for implementing specified logical functions. In some alternative implementations, the functions denoted in the blocks may also occur in a sequence different from that shown in the figures. For example, two consecutive blocks may in fact be executed substantially concurrently, and sometimes they may also be executed in a reverse order, depending on the functions involved. It should be further noted that each block in the block diagrams and/or flow charts as well as a combination of blocks in the block diagrams and/or flow charts may be implemented by a dedicated hardware-based system executing specified functions or actions, or by a combination of dedicated hardware and computer instructions.

The embodiments of the present disclosure have been described above. The above description is illustrative, rather than exhaustive, and is not limited to the disclosed various embodiments. Numerous modifications and alterations are apparent to persons of ordinary skill in the art without departing from the scope and spirit of the illustrated embodiments. The selection of terms as used herein is intended to best explain the principles and practical applications of the various embodiments or the technical improvements to technologies on the market, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed here.