Data access method based on cloud storage service, and offload card, system and device

By using an offload card in cloud storage services to determine and transmit data access requests, the problem of high memory resource consumption during data interaction between processes in traditional distributed storage systems is solved, and more efficient and accurate data access is achieved.

WO2025025678A1PCT designated stage expired Publication Date: 2025-02-06HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/087588
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-12-08
Filing Date
2024-04-12
Publication Date
2025-02-06

AI Technical Summary

Technical Problem

In traditional distributed storage systems, data interaction between processes consumes more memory resources, affecting the effectiveness of data access.

Method used

By introducing an uninstall card into the cloud storage service, the uninstall card receives the data access request sent by the client, and determines the link based on the identification of the source service thread and the target storage area, and sends a data access request to the second cloud storage server through the link , thereby enabling data access.

Benefits of technology

It reduces the consumption of memory resources, improves the effectiveness and accuracy of data access, and reduces the delay in data access.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024087588_06022025_PF_FP_ABST
    Figure CN2024087588_06022025_PF_FP_ABST
Patent Text Reader

Abstract

The present application relates to the technical field of the Internet. Disclosed are a data access method based on a cloud storage service, and an offload card, a system and a device, which can consume relatively few memory resources and improve the effectiveness of data access. The method comprises: first, an offload card receiving a data access request sent by a client, wherein the data access request comprises an identifier of a source service thread, an identifier of a target storage region in a second cloud storage server, and an identifier of a target object, and the data access request is used for instructing that a preset operation is executed for the target object in the target storage region; then, the offload card determining from an identifier connection relationship a link between the source service thread and the target storage region on the basis of the identifier of the source service thread and the identifier of the target storage region; and finally, the offload card sending the data access request to the second cloud storage server by means of the link between the source service thread and the target storage region.
Need to check novelty before this filing date? Find Prior Art

Description

Data access method, offloading card, system and device based on cloud storage service

[0001] This application claims priority to the Chinese patent application filed with the State Intellectual Property Office on August 1, 2023, with application number 202310960462.7 and application name “A method, device and other equipment for message processing”, and the Chinese patent application filed with the State Intellectual Property Office on December 8, 2023, with application number 202311687305.X and application name “Data access method, offloading card, system and equipment based on cloud storage service”, all contents of which are incorporated by reference into this application. Technical Field

[0002] The present application relates to the field of Internet technology, and in particular to a data access method, offloading card, system, and device based on cloud storage services. Background Art

[0003] In a traditional distributed storage system, different storage nodes (or processes) can exchange data. Specifically, when a process needs to access another process, the service module in that process can send an access request to the network module in that process. The network module then sends the access request to the network module in the other process, so that the service module in the other process can receive the access request and perform operations related to the access request in the service module in the other process.

[0004] However, in the above method, the business module corresponds to the network module one by one, which results in more memory resources being consumed when data is interacted between different processes, affecting the effectiveness of data access.

[0005] Summary of the Invention

[0006] The present application provides a data access method, offload card, system and device based on cloud storage service, which solves the technical problem of excessive memory resource consumption during data interaction between processes.

[0007] In a first aspect, a data access method based on a cloud storage service is provided. The cloud storage service operates on at least two cloud storage servers located in at least one cloud data center in one of multiple regions. An offload card is inserted into a first cloud storage server of the at least two cloud storage servers and a client is installed thereon. The method is performed by the offload card. The method may include: first, the offload card receives a data access request sent by the client. The data access request includes an identifier of a source service thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object. The source service thread is any one of the at least one service threads included in the client. The data access request is used to instruct execution of a preset operation on the target object in the target storage area. The preset operation includes one or a combination of the following operations: a read operation or a write operation. The second cloud storage server is a cloud storage server other than the first cloud storage server among the at least two cloud storage servers. The unloading card then determines the link between the source business thread and the target storage area from the identification connection relationship based on the identification of the source business thread and the identification of the target storage area, and the identification connection relationship includes multiple identification combinations and link connection information corresponding to each identification combination in the multiple identification combinations, wherein the identification combination includes a business thread identification and a storage area identification; finally, the unloading card sends the data access request to the second cloud storage server through the link between the source business thread and the target storage area.

[0008] It is understood that the method described in the first aspect can be executed by a computing device, which can be a terminal, an apparatus including a terminal, or a chip within a terminal. Alternatively, the computing device can be a network device, an apparatus including a network device, or a chip within a network device. For ease of understanding, the following description uses execution by a computing device as an example.

[0009] In the present application, an unloading card can correspond to at least one business thread, and the client (specifically, the source business thread) can send the data access request to the unloading card after receiving the data access request. Since the data access request includes the identifier of the source business thread, the identifier of the target storage area in the second cloud storage server, and the identifier of the target object, the unloading card can determine the link between the source business thread and the target storage area from the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area. Since the link is the only link for data access from the source business thread to the target storage area, the unloading card can send the data access request to the second cloud storage server through the link, thereby being able to access the data in the target storage area, that is, to implement the process of performing a preset operation on the target object in the target storage area. In the present application, since the unloading card only needs to store a link between each business thread in at least one business thread and each storage area in the second cloud storage server, the memory resources consumed (or occupied) are limited, which can improve the effectiveness of data access.

[0010] Optionally, the above-mentioned unloading card determines the link between the source business thread and the target storage area from the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area, specifically including: querying the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area, and determining a target identifier combination that matches the identifier of the source business thread and the identifier of the target storage area from the identifier connection relationship; determining the link connection information corresponding to the target identifier combination as the target link connection information; and determining the link represented by the target link connection information as the link between the source business thread and the target storage area.

[0011] In the present application, since the target link connection information is the link connection information corresponding to the target identifier combination, and the target identifier combination includes the identifier of the source business thread and the identifier of the target storage area, the target link connection information can accurately and effectively reflect the link connection relationship between the source business thread and the target storage area. In this way, the unloading card determines the link represented by the target link connection information as the link between the source business thread and the target storage area, that is, it can accurately and effectively determine the link between each business thread and each storage area, thereby improving the accuracy of data access.

[0012] Optionally, one link connection information is a QP pair.

[0013] In this application, a piece of link connection information is represented by a QP pair. This means that the link between each service thread and each storage area can be represented based on the QP pair. Thus, the offload card can accurately and effectively determine the link between the source service thread and the target storage area based on the QP pair representing the source service thread and the target storage area. This can further improve the efficiency of data access.

[0014] Optionally, the above-mentioned offload card includes at least one cache queue, the data access request is a request included in a target cache queue, and the target cache queue is a cache queue in the at least one cache queue corresponding to the source service thread.

[0015] In this application, for at least one service thread, each service thread corresponds to a cache queue. Data access requests sent by different service threads are included in the cache queues corresponding to the different service threads. Data access requests sent by different service threads can be added to the corresponding cache queues, and the offload card can obtain the corresponding service threads from the different cache queues. This enables orderly allocation and arrangement of each data access request, improving the orderliness of data access.

[0016] Optionally, the data access method further includes: when it is detected that the source service thread is interrupted, performing a reconstruction operation on the source service thread.

[0017] In this application, when the source service thread is detected to be interrupted, it indicates that the source service thread is in an abnormal state. At this time, the offload card performs a reconstruction operation on the source service thread, which can ensure that the source service thread continues to be in a normal state, thereby further improving the effectiveness of data access.

[0018] Optionally, the data access method also includes: the offload card receives an access success response sent by the second cloud storage server, and the access success response is used to notify the offload card that the preset operation is successfully performed on the target object in the target storage area; the offload card sends the access success response to the client.

[0019] In this application, upon receiving a successful access response from the offload card, the client (specifically, the source service thread) can determine that the offload card has successfully performed a preset operation on the target object in the target storage area. Before and after the offload card accesses the data in the target storage area, the client (or source service thread) only sends and receives messages through the offload card, without having to perceive the connection between each service thread and each storage area. This allows for rapid access to relevant service data, reducing latency during data access.

[0020] Optionally, the above-mentioned unloading card includes at least one cache queue. Before determining the link between the source business thread and the target storage area from the identification connection relationship based on the identification of the source business thread and the identification of the target storage area, the data access method also includes: adding the data access request to the target cache queue, which is the cache queue corresponding to the source business thread in the at least one cache queue.

[0021] In this application, after receiving the data access request sent by the client, the unloading card can add the data access request to the target cache queue corresponding to the source business thread, which can ensure that the data access request sent by each business thread can be added to the corresponding cache queue, and can effectively cache each data access request, thereby improving the effectiveness and orderliness of data access.

[0022] Optionally, the above-mentioned determining the link between the source business thread and the target storage area from the identification connection relationship based on the identification of the source business thread and the identification of the target storage area specifically includes: reading the data access request from the target cache queue, and determining the link from the identification connection relationship based on the identification of the source business thread and the identification of the target storage area included in the read data access request.

[0023] In this application, each service thread can follow single-threaded polling. Specifically, a service thread always sends the data access request it obtains to the offload card (specifically, the cache queue corresponding to the service thread in the offload card). The offload card can then read the data access request corresponding to each service thread from the cache queue corresponding to each service thread, thereby implementing the access process of related data. In this way, the offload card and at least one service thread can be combined to form an RTC model, which can reduce the end-to-end latency during the data access process.

[0024] In a second aspect, an offload card based on a cloud storage service is provided, which runs on at least two cloud storage servers located in at least one cloud data center in one of multiple regions. The offload card is inserted into a first cloud storage server among the at least two cloud storage servers and a client is installed. The offload card includes a receiving module, a determining module, and a sending module; the receiving module is used to receive a data access request sent by the client, the data access request includes an identifier of a source business thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object, the source business thread is any one of the at least one business threads included in the client, and the data access request is used to instruct to execute an operation on the target object in the target storage area. A preset operation, which includes one or more of the following operations in combination: a read operation or a write operation, the second cloud storage server is a cloud storage server other than the first cloud storage server among the at least two cloud storage servers; the determination module is used to determine the link between the source business thread and the target storage area from an identification connection relationship based on the identification of the source business thread and the identification of the target storage area, the identification connection relationship includes multiple identification combinations and link connection information corresponding to each identification combination in the multiple identification combinations, wherein the identification combination includes a business thread identification and a storage area identification; the sending module is used to send the data access request to the second cloud storage server through the link between the source business thread and the target storage area.

[0025] Optionally, the determination module is specifically used to query the identification connection relationship based on the identification of the source business thread and the identification of the target storage area, and determine the target identification combination that matches the identification of the source business thread and the identification of the target storage area from the identification connection relationship; the determination module is also specifically used to determine the link connection information corresponding to the target identification combination as the target link connection information; the determination module is also specifically used to determine the link represented by the target link connection information as the link between the source business thread and the target storage area.

[0026] Optionally, one link connection information is a QP pair.

[0027] Optionally, the above-mentioned offload card further includes at least one cache queue, the data access request is a request included in a target cache queue, and the target cache queue is a cache queue in the at least one cache queue corresponding to the source service thread.

[0028] Optionally, the above-mentioned unloading card further includes a reconstruction module; the reconstruction module is used to perform a reconstruction operation on the source service thread when it is detected that the source service thread is interrupted.

[0029] Optionally, the receiving module is further used to receive an access success response sent by the second cloud storage server, and the access success response is used to notify the unloading card that the preset operation on the target object in the target storage area has been successfully performed; the sending module is also used to send the access success response to the client.

[0030] Optionally, the above-mentioned unloading card further includes an adding module; the adding module is used to add the data access request to a target cache queue, and the target cache queue is a cache queue corresponding to the source service thread in the at least one cache queue.

[0031] Optionally, the above-mentioned unloading card also includes a reading module; the reading module is used to read the data access request from the target cache queue; the determination module is specifically used to determine the link from the identification connection relationship based on the identifier of the source business thread and the identifier of the target storage area included in the read data access request.

[0032] In addition, the technical effect of the unloading card described in the second aspect can refer to the technical effect of the method described in the first aspect, and will not be repeated here.

[0033] According to a third aspect, a data access system based on a cloud storage service is provided, wherein the cloud storage service runs on at least two cloud storage servers located in at least one cloud data center in one of multiple regions, and the data access system includes the at least two cloud storage servers, wherein an offload card is inserted into a first cloud storage server of the at least two cloud storage servers and a client is installed thereon; the client sends a data access request to the offload card, wherein the data access request includes an identifier of a source business thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object, wherein the source business thread is any one of the at least one business threads included in the client, and the data access request is used to indicate an offload request to the target object in the target storage area. The method further comprises: executing a preset operation, the preset operation including one or more of the following operations: a read operation or a write operation, the second cloud storage server being a cloud storage server other than the first cloud storage server among the at least two cloud storage servers; the offload card determining a link between the source business thread and the target storage area from an identifier connection relationship according to an identifier of the source business thread and an identifier of the target storage area, and sending the data access request to the second cloud storage server through the link between the source business thread and the target storage area, the identifier connection relationship including multiple identifier combinations and link connection information corresponding to each identifier combination in the multiple identifier combinations, wherein the identifier combination includes a business thread identifier and a storage area identifier.

[0034] In addition, the technical effects of the data access system described in the third aspect can refer to the technical effects of the method described in the first aspect, and will not be repeated here.

[0035] In a fourth aspect, a data access device is provided. The data access device includes: a module for executing the method described in the first aspect, such as a transceiver module and a processing module. For example, the transceiver module is configured to perform the transceiver function of the data access device, and the processing module is configured to perform functions other than the transceiver function of the data access device.

[0036] Optionally, the transceiver module may include a sending module and a receiving module, wherein the sending module is used to implement the sending function of the unloading card described in the second aspect, and the receiving module is used to implement the receiving function of the unloading card described in the second aspect.

[0037] Optionally, the data access device described in the fourth aspect may further include a storage module, wherein the storage module stores a program or instruction. When the processing module executes the program or instruction, the data access device may execute the method described in the first aspect.

[0038] It can be understood that the data access device described in the fourth aspect can be a terminal or a network device, or a chip (system) or other parts or components that can be set in a terminal or a network device, or a device that includes a terminal or a network device. This application does not limit this.

[0039] In addition, the technical effects of the data access device described in the fourth aspect can refer to the technical effects of the other aspects mentioned above, and will not be repeated here.

[0040] In a fifth aspect, a data access device is provided, comprising: a processor configured to execute the method described in the first aspect.

[0041] In one possible design solution, the data access device described in the fifth aspect may further include a transceiver. The transceiver may be a transceiver circuit or an interface circuit. The transceiver may be used for the data access device described in the fifth aspect to communicate with other devices.

[0042] In one possible design, the data access device described in the fifth aspect may further include a memory. The memory may be integrated with the processor or provided separately. The memory may be used to store the computer program and / or data involved in the method described in the first aspect.

[0043] In an embodiment of the present application, the communication device described in the fifth aspect may be the terminal or network device described in the first aspect, or a chip (system) or other parts or components that can be set in the terminal or network device, or a device that includes the terminal or network device.

[0044] In addition, the technical effects of the data access device described in the fifth aspect can refer to the technical effects of the method described in the first aspect, and will not be repeated here.

[0045] In a sixth aspect, a data access device is provided, wherein the communication device comprises: a processor coupled to a memory, the processor being configured to execute a computer program stored in the memory, so that the data access device executes the method described in the first aspect.

[0046] In one possible design solution, the data access device described in the sixth aspect may further include a transceiver. The transceiver may be a transceiver circuit or an interface circuit. The transceiver may be used for the data access device described in the sixth aspect to communicate with other devices.

[0047] In an embodiment of the present application, the data access device described in the sixth aspect can be the terminal or network device described in the first aspect, or a chip (system) or other parts or components that can be set in the terminal or network device, or a device that includes the terminal or network device.

[0048] In addition, the technical effects of the data access device described in the sixth aspect can refer to the technical effects of the method described in the first aspect, and will not be repeated here.

[0049] In a seventh aspect, a data access device is provided, comprising: a processor and a memory; the memory is used to store a computer program, and when the processor executes the computer program, the data access device executes the method described in the first aspect.

[0050] In one possible design solution, the data access device described in the seventh aspect may further include a transceiver. The transceiver may be a transceiver circuit or an interface circuit. The transceiver may be used for the data access device described in the seventh aspect to communicate with other devices.

[0051] In an embodiment of the present application, the data access device described in the seventh aspect can be the terminal or network device described in the first aspect, or a chip (system) or other parts or components that can be set in the terminal or network device, or a device that includes the terminal or network device.

[0052] In addition, the technical effects of the data access device described in the seventh aspect can refer to the technical effects of the method described in the first aspect, and will not be repeated here.

[0053] In an eighth aspect, a computing device cluster is provided, comprising at least one computing device, each computing device comprising a processor and a memory; the processor of the at least one computing device is used to execute instructions stored in the memory of the at least one computing device, so that the computing device cluster executes the method described in the first aspect.

[0054] In a ninth aspect, a computer program product comprising instructions is provided. When the instructions are executed by a computing device cluster, the computing device cluster executes the method described in the first aspect.

[0055] In a tenth aspect, a computer-readable storage medium is provided, comprising computer program instructions. When the computer program instructions are executed by a computing device cluster, the computing device cluster executes the method described in the first aspect. BRIEF DESCRIPTION OF THE DRAWINGS

[0056] FIG1 is a schematic diagram showing a principle of message transmission between different processes provided by an embodiment of the present application;

[0057] FIG2 shows a schematic diagram of a principle of data access provided by an embodiment of the present application;

[0058] FIG3 shows another schematic diagram of the principle of data access provided by an embodiment of the present application;

[0059] FIG4 shows a schematic diagram of a network architecture of a data access system provided in an embodiment of the present application;

[0060] FIG5 is a schematic diagram showing the principle of a data access method provided in an embodiment of the present application;

[0061] FIG6 shows a schematic diagram showing the principle of sending and receiving data access requests based on a cache queue according to an embodiment of the present application;

[0062] FIG7 shows a schematic diagram showing the principle of another data access method provided in an embodiment of the present application;

[0063] FIG8 shows another schematic diagram of the principle of data access provided by an embodiment of the present application;

[0064] FIG9 shows a schematic structural diagram of an uninstall card provided in an embodiment of the present application;

[0065] FIG10 shows a schematic structural diagram of a computing device provided in an embodiment of the present application;

[0066] FIG11 shows a schematic diagram of the structure of a computing device cluster provided in an embodiment of the present application;

[0067] FIG12 shows a schematic diagram of a network architecture of a computing device cluster provided in an embodiment of the present application. DETAILED DESCRIPTION

[0068] To facilitate understanding of the solutions provided in the embodiments of the present application, some concepts involved in the present application are explained before introducing the solutions provided in the embodiments of the present application.

[0069] Remote direct memory access (RDMA) means remote direct address access. Through RDMA, the local node can directly access the memory of the remote node. The so-called direct means that the remote memory can be read and written by bypassing the complex transmission control protocol (TCP) / internet protocol (IP) and other network protocol stacks of traditional Ethernet just like accessing local memory, and the remote end is not aware of this process, and most of the work in the entire reading and writing process is completed by the local hardware. In the embodiment of the present application, the offload card can access the data in the second cloud storage server (specifically the target storage area) by means of RDMA.

[0070] A queue pair (QP pair) is a concept in RDMA, which refers to a group of send and receive queues consisting of a send queue and a receive queue. In the embodiment of the present application, a QP pair is a link connection information, and a link connection information can represent the link between a service thread and a storage area.

[0071] A thread is the smallest unit that an operating system can use to schedule operations, and is an execution unit with a smaller granularity than a process. A process can contain multiple threads, which can share all the resources of the process. In an embodiment of the present application, the offload card can determine the link between the source business thread and the target storage area from the identifier connection relationship based on the identifier of any business thread (i.e., the source business thread) included in the client and the identifier of the target storage area in the second cloud storage server.

[0072] The Run-to-Complete (RTC) model is a fully user-mode scheduling model. A program is typically divided into several distinct logical functions, each of which runs on a single central processing unit (CPU) core. Specifically, a request is processed by a single thread during its lifetime. In embodiments of the present application, an offload card and at least one service thread can be combined to form an RTC model, which reduces end-to-end latency during data access.

[0073] In traditional distributed storage systems, each submodule can be written using a traditional framework, allowing business modules within the basic programming framework to send and receive messages via network threads. To utilize the network communication functionality provided by network threads, a process must register at least two modules: a network module and a business module. Each module's entity is a thread within the process. Specifically, modules can exchange messages with each other, and processes can also exchange messages with each other. When messages are passed between one process and another, they must be relayed through their respective network modules. The general process of message transmission is shown in Figure 1. If business module 101 in process A needs to send an access request to business module 104 in process B, business module 101 must first send the access request to network module 102 in process A. Network module 102 can then send the access request to network module 103 in process B. Finally, network module 103 can send the access request to business module 104, thus enabling data exchange between processes A and B.

[0074] In addition, as shown in Figure 1, for the modules within a process, the business module in the process (such as business module 101) can also send a control message to the network module in the process (i.e., network module 102). The control message is used to control the network module to implement a certain function, such as network link establishment.

[0075] In one possible implementation, the number of business threads configured in the client may be different from the number of network threads. For example, N business threads and M network threads may be configured, where N is an integer greater than or equal to 1, and M is an integer greater than or equal to 1, and N≠M. Exemplarily, as shown in FIG2 , the client includes 5 business threads (i.e., business thread 201, business thread 202, business thread 203, business thread 204, and business thread 205), 6 queues (i.e., queue 206, queue 207, queue 208, queue 209, queue 210, and queue 211), and 6 network threads (i.e., network thread 212, network thread 213, network thread 214, network thread 215, network thread 216, and network thread 217), and one network thread corresponds to one queue. Specifically, after receiving the access request, the business thread 201 determines the network thread (e.g., network thread 214) that receives the access request, and sends the access request and adds it to the queue corresponding to the network thread 214 (i.e., queue 208). Afterwards, the network thread 214 can read the access request from the queue 208 and access the data in the corresponding storage area on the server. In the data access process shown in Figure 2, the requests sent by N business threads can be evenly distributed to M network threads, and the M network threads can evenly share the network pressure. However, the business thread and the network thread run on different CPU cores. The business thread sending an access request to the network thread can be understood as an inter-core task regarding thread switching, and this inter-core task will generate a certain amount of latency overhead, resulting in higher access latency. This affects the data access process in latency-sensitive scenarios (or scenarios with lower latency requirements).

[0076] In another possible implementation, the number of service threads configured in the client and the number of network threads may also be the same. For example, N service threads and N network modules may be configured, i.e., one service thread corresponds to one network module (service thread and network module are bound one to one). Exemplary, as shown in Figure 3, the client includes 4 service threads (i.e., service thread 301, service thread 302, service thread 303, and service thread 304) and 4 network modules (i.e., network module 305, network module 306, network module 307, and network module 308), and one service thread corresponds to (or is bound to) one network module. Specifically, after receiving an access request, service thread 301 sends an access request to the corresponding network module (i.e., network module 305). After receiving the access request, network module 305 can perform data access in the corresponding storage area in the server. In the data access process shown in Figure 3, there's a one-to-one correspondence between service threads and network modules. Both service threads run on the same CPU core. N service threads send access requests through their bound network modules, eliminating thread switching and reducing data access latency. However, this approach consumes a significant amount of memory resources, requiring a solution.

[0077] Based on this, an embodiment of the present application provides a data access method based on a cloud storage service. An offload card can correspond to at least one service thread. After receiving a data access request, the client (specifically, the source service thread) can send the data access request to the offload card. Since the data access request includes the identifier of the source service thread, the identifier of the target storage area in the second cloud storage server, and the identifier of the target object, the offload card can determine the link between the source service thread and the target storage area from the identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area. Since the link is the only link for data access from the source service thread to the target storage area, the offload card can send the data access request to the second cloud storage server through the link, thereby accessing the data in the target storage area, that is, implementing the process of performing a preset operation on the target object in the target storage area. In the embodiment of the present application, since the offload card only needs to store a copy of the link between each service thread in at least one service thread and each storage area in the second cloud storage server, the memory resources consumed (or occupied) are limited, which can improve the effectiveness of data access.

[0078] The cloud storage service-based data access method, offload card, system, and device provided in embodiments of the present application are applicable to data access scenarios (including but not limited to large-scale storage cluster scenarios, latency-sensitive scenarios, and bandwidth-intensive business load scenarios). Upon receiving a data access request from a client, the offload card can determine a link between the source service thread and the target storage area from an identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area, and then send the data access request to a second cloud storage server via the link.

[0079] In order to enable ordinary people in the art to better understand the technical solutions of the present application, the technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the accompanying drawings.

[0080] It is understood that the terms "first," "second," and the like in the specification and claims of this application and the accompanying drawings are used to distinguish similar objects and are not necessarily used to describe a particular order or precedence. It should be understood that the terms used in this manner are interchangeable where appropriate so that the embodiments of the application described herein can be implemented in an order other than those illustrated or described herein. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with the present application. Instead, they are merely examples of apparatus and methods consistent with certain aspects of the present application, as detailed in the appended claims.

[0081] It will also be understood that the term “comprising” indicates the presence of described features, integers, steps, operations, elements and / or components, but does not preclude the presence or addition of one or more other features, integers, steps, operations, elements and / or components.

[0082] The cloud storage service-based data access method, offload card, system, and device provided in the embodiments of the present application can be applied to a data access system. As shown in FIG4 , the data access system includes a computing device 401 and a computing device 402. The computing device 401 has a client 4011 plugged into it and an offload card 4012 installed. Typically, in practical applications, the connections between the aforementioned devices can be wireless. For the convenience of visually representing the connection relationships between the devices, FIG4 uses solid lines to illustrate.

[0083] The client 4011 includes at least one service thread, and the computing device 402 includes one or more storage areas. For example, a storage area included in the computing device 402 can also be understood as a memory (or disk) in the computing device 402. The computing device 402 can also include at least one storage pool, and the one or more storage areas can belong to the same storage pool or different storage pools.

[0084] Specifically, the client 4011 may send a data access request to the offload card 4012. The offload card 4012 then determines the link between the source service thread and the target storage area from the identification connection relationship based on the identification of the source service thread and the identification of the target storage area, and sends the data access request to the computing device 402 via the link.

[0085] Optionally, a server may be installed and run in the computing device 402 .

[0086] In one example, the computing device may be a server, which may be an independent physical server, or a server cluster or distributed system composed of multiple physical servers. It may also be a cloud server that provides basic cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communications, middleware services, domain name services, security services, network acceleration services (content delivery network, CDN), and big data and artificial intelligence platforms.

[0087] It should be understood that the two computing devices shown in FIG. 4 may be deployed in at least one cloud data center, which may belong to one region among multiple regions, and the two computing devices are used to provide cloud storage services.

[0088] It is understandable that the two computing devices shown in Figure 4 are merely an example in the embodiment of the present application. The embodiment of the present application does not specifically limit the number of computing devices included in the data access system.

[0089] In another example, the above-mentioned computing device can also be a terminal, which can also be called user equipment (UE), access terminal, subscriber unit (subscriber unit), user station, mobile station (MS), mobile station, remote station, remote terminal, mobile device, user terminal, terminal, wireless communication device, user agent or user device. The terminal in the embodiments of the present application can be a mobile phone, a cellular phone, a smart phone, a tablet computer, a wireless data card, a personal digital assistant (PDA), a wireless modem, a handheld device (handset), a laptop computer, a machine type communication (MTC) terminal, a computer with wireless transceiver function, a virtual reality (VR) terminal, an augmented reality (AR) terminal, a smart home device (for example, a refrigerator, a television, an air conditioner, an electric meter, etc.), an intelligent robot, a robotic arm, a workshop equipment, a wireless terminal in industrial control, a wireless terminal in self-driving, a wireless terminal in remote medical care, a wireless terminal in a smart grid, a wireless terminal in transportation safety, a wireless terminal in a smart city, a wireless terminal in a smart home, a vehicle-mounted terminal, a roadside unit with terminal function, or a wireless terminal in a smart city. The terminal of the present application may also be an onboard module, onboard module, onboard component, onboard chip or onboard unit built into a vehicle as one or more components or units. The terminal may also be other devices with terminal functions, for example, the terminal may also be a device that functions as a terminal in device-to-device (D2D) communication.

[0090] The embodiments of this application do not limit the device form factor of the terminal. The device used to implement the terminal's function can be a terminal; it can also be a device that supports the terminal in implementing the function, such as a chip system. The device can be installed in the terminal or used in conjunction with the terminal. In the embodiments of this application, the chip system can be composed of a chip or include a chip and other discrete components.

[0091] In conjunction with the description of the above embodiments, embodiments of the present application provide a data access method based on a cloud storage service. The cloud storage service operates on at least two cloud storage servers in at least one cloud data center in one of multiple regions. A first cloud storage server among the at least two cloud storage servers is installed with an offload card and a client. The method is executed by the offload card. Specifically, as shown in FIG5 , the method may include S101-S103.

[0092] S101. The client sends a data access request to the offload card.

[0093] In which, the data access request includes the identifier of the source business thread, the identifier of the target storage area in the second cloud storage server, and the identifier of the target object. The source business thread is any one of the at least one business threads included in the client. The data access request is used to indicate a preset operation on the target object in the target storage area. The preset operation includes one or a combination of the following operations: a read operation or a write operation. The second cloud storage server is a cloud storage server other than the first cloud storage server among the above-mentioned at least two cloud storage servers.

[0094] It should be understood that the first cloud storage server is any one of the at least two cloud storage servers. The second cloud storage server may include at least one storage area, and the target storage area is any one of the at least one storage area.

[0095] It is understood that the client sending the data access request to the offload card can specifically be the source service thread sending the data access request to the offload card. Specifically, a user can initiate a data access request on the client, and then the client sends the data access request to any one of the at least one service threads (i.e., the source service thread) based on a fragmentation algorithm. The source service thread can then receive the data access request and send it to the offload card.

[0096] S102: The offload card determines a link between the source service thread and the target storage area from an identifier connection relationship according to the identifier of the source service thread and the identifier of the target storage area.

[0097] The identification connection relationship includes multiple identification combinations and link connection information corresponding to each identification combination in the multiple identification combinations, and the identification combination includes a service thread identification and a storage area identification.

[0098] In one implementation of the embodiment of the present application, a link can be represented by a piece of link connection information. The offload card can first determine the link connection information that can represent the link between the source service thread and the target storage area, thereby determining the link between the source service thread and the target storage area. That is, the offload card determines the link between the source service thread and the target storage area from the identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area, which can specifically include steps A to C.

[0099] Step A: The offload card queries the identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area, and determines the target identifier combination matching the identifier of the source service thread and the identifier of the target storage area from the identifier connection relationship.

[0100] It should be understood that the identification connection relationship is a mapping relationship pre-stored by the client during the initialization phase, and the link connection information corresponding to an identification combination is used to represent the link between the business thread corresponding to the business thread identifier included in the identification combination and the storage area corresponding to the storage area identifier included in the identification combination.

[0101] Optionally, a link connection information may be a QP pair. In a specific use process, the QP pair may be uniquely identified based on an identifier or a serial number (QPN) of the QP pair.

[0102] Step B: The offload card determines the link connection information corresponding to the target identifier combination as the target link connection information.

[0103] It can be understood that the target link connection information is used to represent the link between the source service thread and the target storage area.

[0104] Illustratively, the following Table 1 is an example of an identification connection relationship provided in an embodiment of the present application. Specifically, the identification connection relationship includes 4 identification combinations (including identification combination 1, identification combination 2, identification combination 3 and identification combination 4) and the link connection information corresponding to each of the 4 identification combinations. Specifically, the link connection information corresponding to identification combination 1 is link connection information 1, the link connection information corresponding to identification combination 2 is link connection information 2, the link connection information corresponding to identification combination 3 is link connection information 3, and the link connection information corresponding to identification combination 4 is link connection information 4. Identification combination 1 includes business thread identification 1 and storage area identification 1, identification combination 2 includes business thread identification 1 and storage area identification 2, identification combination 3 includes business thread identification 2 and storage area identification 1, and identification combination 4 includes business thread identification 2 and storage area identification 2.

[0105] Table 1

[0106] Assuming that the identifier of the source service thread is service thread identifier 1 and the identifier of the target storage area is storage area identifier 2, the offload card determines that the target link connection information is link connection information 2.

[0107] Step C: The offload card determines the link represented by the target link connection information as the link between the source service thread and the target storage area.

[0108] In the embodiment of the present application, since the target link connection information is the link connection information corresponding to the target identifier combination, and the target identifier combination includes the identifier of the source business thread and the identifier of the target storage area, the target link connection information can accurately and effectively reflect the link connection relationship between the source business thread and the target storage area. In this way, the offload card determines the link represented by the target link connection information as the link between the source business thread and the target storage area, that is, it can accurately and effectively determine the link between each business thread and each storage area, thereby improving the accuracy of data access.

[0109] S103: The offload card sends a data access request to the second cloud storage server through the link between the source service thread and the target storage area.

[0110] It is understandable that after receiving the data access request through the link between the source business thread and the target storage area, the second cloud storage server can access the data in the target storage area, specifically perform preset operations on the target object in the target storage area.

[0111] In an embodiment of the present application, an offload card can correspond to at least one business thread, and the client (specifically, the source business thread) can send the data access request to the offload card after receiving the data access request. Since the data access request includes the identifier of the source business thread, the identifier of the target storage area in the second cloud storage server, and the identifier of the target object, the offload card can determine the link between the source business thread and the target storage area from the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area. Since the link is the only link for data access from the source business thread to the target storage area, the offload card can send the data access request to the second cloud storage server through the link, thereby being able to access the data in the target storage area, that is, to implement the process of performing a preset operation on the target object in the target storage area. In an embodiment of the present application, since the offload card only needs to store a copy of the link between each business thread in at least one business thread and each storage area in the second cloud storage server, the memory resources consumed (or occupied) are limited, which can improve the effectiveness of data access.

[0112] In one implementation of the embodiment of the present application, the above-mentioned unloading card includes at least one cache queue, and for the above-mentioned at least one business thread, one business thread corresponds to one cache queue. Before the above-mentioned unloading card determines the link between the source business thread and the target storage area from the identification connection relationship based on the identifier of the source business thread and the identifier of the target storage area, the unloading card can also add the above-mentioned data access request to the target cache queue. The unloading card can then read the data access request from the target cache queue and determine the link between the source business thread and the target storage area from the identification connection relationship based on the identifier of the source business thread and the identifier of the target storage area included in the read data access request.

[0113] Specifically, the target cache queue is a cache queue corresponding to the source service thread in the at least one cache queue, and the data access request is a request included in the target cache queue.

[0114] For example, as shown in FIG6 , the client includes three service threads (i.e., service thread 501, service thread 502, and service thread 503), and the offload card includes three cache queues (i.e., cache queue 504, cache queue 505, and cache queue 506) and four QP pairs (including QP pair 507, QP pair 508, QP pair 509, and QP pair 510), wherein one service thread corresponds to one cache queue, and one QP pair is used to represent the link between one service thread and one storage area.

[0115] Assuming that the source service thread in the client is service thread 502, service thread 502 sends the data access request to the offload card after receiving it. The offload card then adds the data access request to the cache queue corresponding to service thread 502 (specifically, cache queue 505). The offload card then reads the data access request from cache queue 505 and, based on the identifier of service thread 502 and the identifier of the target storage area included in the read data access request, determines the link between service thread 502 and the target storage area (assuming it is the link represented by QP pair 509) from the identifier connection relationship. Finally, the offload card sends the data access request to the second cloud storage server via the link represented by QP pair 509.

[0116] In an embodiment of the present application, after receiving a data access request sent by a client, the unloading card can add the data access request to the target cache queue corresponding to the source business thread. Thus, the unloading card can read the data access request from the target cache queue and determine the link between the source business thread and the target storage area from the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area included in the read data access request. Finally, the unloading card sends the data access request to the second cloud storage server via the link. In an embodiment of the present application, each business thread can follow single-threaded polling, specifically, a business thread always sends the data access request it obtains to the unloading card (specifically, the cache queue corresponding to the business thread in the unloading card). Then the unloading card can read the data access request corresponding to each business thread from the cache queue corresponding to each business thread, thereby realizing the access process of the relevant data. In this way, the unloading card and at least one business thread can be combined to obtain an RTC model, which can reduce the end-to-end delay in the data access process.

[0117] Optionally, the offload card further includes a network processing unit (NPU), wherein the NPU is configured to add the data access request to a target cache queue and read the data access request from the target cache queue.

[0118] In one implementation of the embodiment of the present application, the offload card can perform real-time detection on each of the at least one service thread. When an interruption is detected in any of the at least one service thread (e.g., a source service thread), the offload card can perform a rebuild operation on the source service thread.

[0119] Specifically, the reconstruction operation is an operation for re-establishing the link, and can also be understood as a message keep-alive mechanism. The interruption of a business thread (or single thread) can also be understood as the disconnection of the business thread or the abnormal state of the business thread. In the embodiment of the present application, when the interruption of the source business thread is detected, it indicates that the source business thread is in an abnormal state. At this time, the unload card performs a reconstruction operation on the source business thread, which can ensure that the source business thread continues to be in a normal state, thereby further improving the effectiveness of data access.

[0120] It's worth noting that after the offload card sends a data access request to the second cloud storage server via the link between the source service thread and the target storage area, the offload card may successfully access the data or fail to access the data. In this case, the second cloud storage server can return a corresponding message to the offload card to indicate whether the offload card successfully accessed the data in the target storage area. Based on this, and in conjunction with FIG5 , as shown in FIG7 , the data access method provided in this embodiment of the present application may further include S104-S105.

[0121] S104: The offloading card receives an access success response sent by the second cloud storage server.

[0122] The access success response is used to notify the offloading card that the preset operation is successfully performed on the target object in the target storage area.

[0123] It should be understood that after the offload card sends a data access request to the second cloud storage server via the link between the source service thread and the target storage area, the second cloud storage server can determine whether the offload card can successfully perform the preset operation on the target object in the target storage area. If the offload card successfully performs the preset operation on the target object in the target storage area, the second cloud storage server can send an access success response to the offload card.

[0124] In the embodiment of the present application, the unloading card successfully performing a preset operation on the target object in the target storage area can also be understood as the unloading card successfully accessing the data in the target storage area.

[0125] S105: The uninstall card sends an access success response to the client.

[0126] It is understood that upon receiving the successful access response from the offload card, the client (specifically, the source service thread) can determine that the offload card has successfully performed the preset operation on the target object in the target storage area. Before and after the offload card accesses the data in the target storage area, the client (or source service thread) only sends and receives messages through the offload card, without having to understand the connection between each service thread and each storage area. This allows for rapid access to relevant service data, reducing latency during data access.

[0127] In an optional implementation, if the offload card cannot perform a preset operation on the target object in the target storage area or cannot access data in the target storage area, the second cloud storage server may also send an access failure response to the offload card, informing the offload card that the preset operation cannot be performed on the target object in the target storage area. In this case, the offload card may also send the access failure response to the client (specifically, the source service thread).

[0128] Optionally, the offload card (or NPU) may include a network data module and a network routing module. Specifically, the network data module is configured to receive a data access request sent by the client and receive a successful access response sent by the second cloud storage server. The network routing module is configured to determine a link between the source service thread and the target storage area from an identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area.

[0129] The following is a complete example to illustrate the process of accessing data in the target storage area in an embodiment of the present application:

[0130] As shown in FIG8 , an embodiment of the present application provides a data access system, which includes a first cloud storage server and a second cloud storage server. The first cloud storage server includes a client 60 and an offload card 70. The client 60 includes a service thread 601, a service thread 602, a service thread 603, a service thread 604, and a service thread 605. The second cloud storage server includes a storage pool 801 and a storage pool 802. Storage pool 801 includes storage areas 8011, 8012, and 8013. Storage pool 802 includes storage areas 8021, 8022, and 8023.

[0131] Assume that the source service thread is service thread 601 and the target storage area is storage area 8011. The data access process is as follows: First, after receiving a data access request, service thread 601 in client 60 sends a data access request to offload card 70. This data access request includes the identifier of service thread 601 and the identifier of storage area 8011. Next, offload card 70 determines the link between service thread 601 and storage area 8011 from the identifier connection relationship based on the identifiers of service thread 601 and storage area 8011, and sends the data access request to the second cloud storage server via this link. Next, offload card 70 receives an access success response from the second cloud storage server, notifying offload card 70 that the preset operation on the target object in storage area 8011 has been successfully performed. Finally, offload card 70 sends the access success response to service thread 601 in client 60.

[0132] The present application also provides an offload card based on a cloud storage service, wherein the cloud storage service is operated on at least two cloud storage servers located in at least one cloud data center in one of multiple regions. The offload card is installed on a first cloud storage server of the at least two cloud storage servers and a client is installed. As shown in FIG9 , the offload card 90 includes a receiving module 901, a determining module 902, and a sending module 903.

[0133] Receiving module 901 is used to receive a data access request sent by the client, where the data access request includes an identifier of a source business thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object. The source business thread is any one of at least one business thread included in the client. The data access request is used to indicate that a preset operation is performed on the target object in the target storage area. The preset operation includes one or a combination of the following operations: a read operation or a write operation. The second cloud storage server is a cloud storage server other than the first cloud storage server among the at least two cloud storage servers.

[0134] Determination module 902 is used to determine the link between the source business thread and the target storage area from the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area, wherein the identifier connection relationship includes multiple identifier combinations and link connection information corresponding to each identifier combination in the multiple identifier combinations, wherein the identifier combination includes a business thread identifier and a storage area identifier.

[0135] The sending module 903 is configured to send the data access request to the second cloud storage server through the link between the source service thread and the target storage area.

[0136] Optionally, the determination module 902 is specifically used to query the identifier connection relationship based on the identifier of the source business thread and the identifier of the target storage area, and determine the target identifier combination that matches the identifier of the source business thread and the identifier of the target storage area from the identifier connection relationship.

[0137] The determination module 902 is further specifically configured to determine the link connection information corresponding to the target identifier combination as the target link connection information.

[0138] The determining module 902 is further specifically configured to determine the link represented by the target link connection information as the link between the source service thread and the target storage area.

[0139] Optionally, one link connection information is a QP pair.

[0140] Optionally, the above-mentioned offload card 90 further includes at least one cache queue, the data access request is a request included in a target cache queue, and the target cache queue is a cache queue in the at least one cache queue corresponding to the source service thread.

[0141] Optionally, the above-mentioned unloading card 90 further includes a reconstruction module 904 .

[0142] The reconstruction module 904 is configured to perform a reconstruction operation on the source service thread when it is detected that the source service thread is interrupted.

[0143] Optionally, the receiving module 901 is further configured to receive an access success response sent by the second cloud storage server, where the access success response is used to notify the offloading card that the preset operation is successfully performed on the target object in the target storage area.

[0144] The sending module 903 is further configured to send the access success response to the client.

[0145] Optionally, the above-mentioned uninstall card 90 further includes an adding module 905 .

[0146] The adding module 905 is configured to add the data access request to a target cache queue, where the target cache queue is a cache queue corresponding to the source service thread in the at least one cache queue.

[0147] Optionally, the above-mentioned unloading card further includes a reading module 906 .

[0148] The reading module 906 is configured to read the data access request from the target cache queue.

[0149] The determination module 902 is specifically configured to determine the link according to the identifier of the source service thread and the identifier of the target storage area included in the read data access request.

[0150] The receiving module 901, determining module 902, sending module 903, reconstruction module 904, adding module 905, and reading module 906 can all be implemented via software or hardware. For example, the implementation of determining module 902 will be described below using determining module 902 as an example. Similarly, the implementation of receiving module 901, sending module 903, reconstruction module 904, adding module 905, and reading module 906 can refer to the implementation of determining module 902.

[0151] As an example of a software functional unit, the module 902 can include code running on a computing instance. The computing instance can include at least one of a physical host (computing device), a virtual machine, and a container. Furthermore, the computing instance can be one or more. For example, the module can include code running on multiple hosts / virtual machines / containers. It should be noted that the multiple hosts / virtual machines / containers used to run the code can be distributed in the same region or in different regions. Furthermore, the multiple hosts / virtual machines / containers used to run the code can be distributed in the same availability zone (AZ) or in different AZs, each AZ including one data center or multiple geographically close data centers. Typically, a region can include multiple AZs.

[0152] Similarly, multiple hosts / virtual machines / containers running the code can be distributed within the same virtual private cloud (VPC) or across multiple VPCs. Typically, a VPC is set up within a region. Cross-region communication between two VPCs within the same region, or between VPCs in different regions, requires a communication gateway within each VPC to interconnect the VPCs.

[0153] As an example of a hardware functional unit, the determination module 902 may include at least one computing device, such as a server. Alternatively, the determination module 902 may be implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof.

[0154] The multiple computing devices included in the determination module 902 can be distributed in the same region or in different regions. The multiple computing devices included in the determination module 902 can be distributed in the same AZ or in different AZs. Similarly, the multiple computing devices included in the determination module 902 can be distributed in the same VPC or in multiple VPCs. The multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.

[0155] It should be noted that, in other embodiments, the determination module 902 can be used to execute any step in the data access method, the receiving module 901 can be used to execute any step in the data access method, the sending module 903 can be used to execute any step in the data access method, the reconstruction module 904 can be used to execute any step in the data access method, the adding module 905 can be used to execute any step in the data access method, and the reading module 906 can also be used to execute any step in the data access method. The steps that the receiving module 901, the determination module 902, the sending module 903, the reconstruction module 904, the adding module 905, and the reading module 906 are responsible for implementing can be specified as needed. The receiving module 901, the determination module 902, the sending module 903, the reconstruction module 904, the adding module 905, and the reading module 906 respectively implement different steps in the data access method to achieve the full function of the unloading card.

[0156] This application also provides a computing device 1000. As shown in Figure 10, computing device 1000 includes a bus 1002, a processor 1004, a memory 1006, and a communication interface 1008. Processor 1004, memory 1006, and communication interface 1008 communicate with each other via bus 1002. Computing device 1000 can be a server or a terminal device. It should be understood that this application does not limit the number of processors and memories in computing device 1000.

[0157] Bus 1002 may be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, among others. Buses may be classified as address buses, data buses, control buses, and the like. For ease of illustration, FIG10 illustrates a single bus line, but this does not imply a single bus or type of bus. Bus 1004 may include a path for transmitting information between various components of computing device 1000 (e.g., memory 1006, processor 1004, and communication interface 1008).

[0158] The processor 1004 may include any one or more processors such as a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).

[0159] The memory 1006 may include volatile memory, such as random access memory (RAM). The processor 1004 may also include non-volatile memory, such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (SSD).

[0160] The memory 1006 stores executable program code, and the processor 1004 executes the executable program code to implement the functions of the aforementioned receiving module, determining module, sending module, reconstruction module, adding module, and reading module, thereby implementing the data access method. In other words, the memory 1006 stores instructions for executing the data access method.

[0161] The communication interface 1003 uses a transceiver module such as, but not limited to, a network interface card or a transceiver to implement communication between the computing device 1000 and other devices or a communication network.

[0162] Embodiments of the present application also provide a computing device cluster. The computing device cluster includes at least one computing device. The computing device can be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device can also be a terminal device such as a desktop computer, a laptop computer, or a smartphone.

[0163] As shown in Figure 11, the computing device cluster includes at least one computing device 1000. The memory 1006 in one or more computing devices 1000 in the computing device cluster may store the same instructions for executing the data access method.

[0164] In some possible implementations, the memory 1006 of one or more computing devices 1000 in the computing device cluster may also store partial instructions for executing the data access method. In other words, the combination of one or more computing devices 1000 can jointly execute the instructions for executing the data access method.

[0165] It should be noted that the memory 1006 in different computing devices 1000 in the computing device cluster can store different instructions, each for executing a portion of the functions of the data access device. In other words, the instructions stored in the memory 1006 in different computing devices 1000 can implement the functions of one or more of the receiving module, the determining module, the sending module, the adding module, the reading module, and the reconstruction module.

[0166] In some possible implementations, one or more computing devices in a computing device cluster may be connected via a network. The network may be a wide area network (WAN) or a local area network (LAN), etc. FIG12 shows a possible implementation. As shown in FIG12 , two computing devices 1000A and 1000B are connected via a network. Specifically, the network is connected via a communication interface in each computing device. In this type of possible implementation, the memory 1006 in the computing device 1000A stores instructions for executing the functions of a determination module, an addition module, a reading module, and a reconstruction module. At the same time, the memory 1006 in the computing device 1000B stores instructions for executing the functions of a receiving module and a sending module.

[0167] The connection mode between the computing device clusters shown in FIG12 may be considered to be that the data access method provided in this application requires a large number of receiving and sending processes, so it is considered to delegate the functions implemented by the receiving module and the sending module to the computing device 1000B.

[0168] It should be understood that the functionality of the computing device 1000A shown in FIG12 may also be accomplished by multiple computing devices 1000. Similarly, the functionality of the computing device 1000B may also be accomplished by multiple computing devices 1000.

[0169] The present application also provides another computing device cluster. The connection relationship between the computing devices in this computing device cluster can be similar to the connection method of the computing device cluster described in Figures 11 and 12. However, the memory 1006 in one or more computing devices 1000 in this computing device cluster can store the same instructions for executing the data access method.

[0170] In some possible implementations, the memory 1006 of one or more computing devices 1000 in the computing device cluster may also store partial instructions for executing the data access method. In other words, the combination of one or more computing devices 1000 can jointly execute the instructions for executing the data access method.

[0171] The present application also provides a computer program product comprising instructions. The computer program product may be software or a program product comprising instructions that can be run on a computing device or stored in any available medium. When the computer program product is run on at least one computing device, the computer program product causes the at least one computing device to execute a data access method.

[0172] The present application also provides a computer-readable storage medium. The computer-readable storage medium can be any available medium that can be stored by a computing device or a data storage device such as a data center that contains one or more available media. The available medium can be a magnetic medium (e.g., a floppy disk, a hard disk, a magnetic tape), an optical medium (e.g., a DVD), or a semiconductor medium (e.g., a solid-state drive). The computer-readable storage medium includes instructions that instruct the computing device to execute the data access method.

[0173] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, rather than to limit it. Although the present invention has been described in detail with reference to the aforementioned embodiments, those skilled in the art should understand that they can still modify the technical solutions described in the aforementioned embodiments, or make equivalent replacements for some of the technical features therein. However, these modifications or replacements do not deviate the essence of the corresponding technical solutions from the protection scope of the technical solutions of the various embodiments of the present invention.

Claims

1. A data access method based on cloud storage service, characterized in that: The cloud storage service is run on at least two cloud storage servers located in at least one cloud data center in one of the multiple regions, an offload card is inserted in a first cloud storage server of the at least two cloud storage servers and a client is installed, and the method is performed by the offload card, and the method includes: receiving a data access request sent by the client, the data access request including an identifier of a source service thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object, the source service thread being any one of at least one service thread included in the client, the data access request being used to instruct to perform a preset operation on the target object in the target storage area, the preset operation including one or a combination of the following operations: a read operation or a write operation, the second cloud storage server being a cloud storage server other than the first cloud storage server among the at least two cloud storage servers; Determine a link between the source business thread and the target storage area from an identification connection relationship according to the identification of the source business thread and the identification of the target storage area, wherein the identification connection relationship includes a plurality of identification combinations and link connection information corresponding to each of the plurality of identification combinations, wherein the identification combination includes a business thread identification and a storage area identification; The data access request is sent to the second cloud storage server through a link between the source service thread and the target storage area.

2. The data access method according to claim 1, characterized in that: The determining, from the identifier connection relationship according to the identifier of the source service thread and the identifier of the target storage area, a link between the source service thread and the target storage area comprises: querying the identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area, and determining a target identifier combination matching the identifier of the source service thread and the identifier of the target storage area from the identifier connection relationship; Determine the link connection information corresponding to the target identifier combination as the target link connection information; The link represented by the target link connection information is determined as a link between the source service thread and the target storage area.

3. The data access method according to claim 1 or 2, characterized in that: One link connection information is a queue QP pair.

4. The data access method according to any one of claims 1 to 3, characterized in that: The offload card includes at least one cache queue, the data access request is a request included in a target cache queue, and the target cache queue is a cache queue in the at least one cache queue corresponding to the source service thread.

5. The data access method according to any one of claims 1 to 4, characterized in that: The method further comprises: When the interruption of the source service thread is detected, a reconstruction operation is performed on the source service thread.

6. The data access method according to any one of claims 1 to 5, characterized in that: The method further comprises: receiving an access success response sent by the second cloud storage server, wherein the access success response is used to notify the offloading card that the preset operation is successfully performed on the target object in the target storage area; Sending the access success response to the client.

7. An offloading card based on cloud storage service, characterized in that: The cloud storage service is run on at least two cloud storage servers located in at least one cloud data center in one of the multiple regions, the first cloud storage server among the at least two cloud storage servers is plugged with the offload card and installed with a client, and the offload card includes: a receiving module, a determining module, and a sending module; The receiving module is used to receive a data access request sent by the client, the data access request includes an identifier of a source business thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object, the source business thread is any one of at least one business thread included in the client, the data access request is used to instruct to perform a preset operation on the target object in the target storage area, the preset operation includes one or a combination of the following operations: a read operation or a write operation, the second cloud storage server is a cloud storage server other than the first cloud storage server among the at least two cloud storage servers; The determination module is used to determine the link between the source business thread and the target storage area from the identification connection relationship according to the identification of the source business thread and the identification of the target storage area, wherein the identification connection relationship includes multiple identification combinations and link connection information corresponding to each identification combination in the multiple identification combinations, wherein the identification combination includes the business thread identification and storage area identification; The sending module is used to send the data access request to the second cloud storage server through the link between the source service thread and the target storage area.

8. The uninstall card according to claim 7, characterized in that: The determination module is specifically used to query the identifier connection relationship based on the identifier of the source service thread and the identifier of the target storage area, and determine the target identifier combination matching the identifier of the source service thread and the identifier of the target storage area from the identifier connection relationship; The determination module is further specifically configured to determine the link connection information corresponding to the target identifier combination as the target link connection information; The determining module is further specifically configured to determine the link represented by the target link connection information as the link between the source service thread and the target storage area.

9. The unloading card according to claim 7 or 8, characterized in that: One link connection information is a queue QP pair.

10. The unloading card according to any one of claims 7 to 9, characterized in that: The offload card further includes at least one cache queue, the data access request is a request included in a target cache queue, and the target cache queue is a cache queue in the at least one cache queue corresponding to the source service thread.

11. The unloading card according to any one of claims 7 to 10, characterized in that: The uninstall card also includes a reconstruction module; The reconstruction module is used to perform a reconstruction operation on the source service thread when it is detected that the source service thread is interrupted.

12. The unloading card according to any one of claims 7 to 11, characterized in that: The receiving module is further used to receive an access success response sent by the second cloud storage server, wherein the access success response is used to notify the unloading card that the preset operation is successfully performed on the target object in the target storage area; The sending module is further used to send the access success response to the client.

13. A data access system based on cloud storage service, characterized in that: The cloud storage service is run on at least two cloud storage servers located in at least one cloud data center in one of the multiple regions, the data access system comprises the at least two cloud storage servers, and an offload card is inserted in a first cloud storage server of the at least two cloud storage servers and a client is installed; The client sends a data access request to the offload card, the data access request includes an identifier of a source service thread, an identifier of a target storage area in a second cloud storage server, and an identifier of a target object, the source service thread is any one of at least one service thread included in the client, the data access request is used to instruct to perform a preset operation on the target object in the target storage area, the preset operation includes one or a combination of the following operations: a read operation or a write operation, the second cloud storage server is a cloud storage server other than the first cloud storage server among the at least two cloud storage servers; The unloading card determines the link between the source business thread and the target storage area from the identification connection relationship according to the identification of the source business thread and the identification of the target storage area, and sends the data access request to the second cloud storage server through the link between the source business thread and the target storage area, wherein the identification connection relationship includes multiple identification combinations and link connection information corresponding to each identification combination in the multiple identification combinations, wherein the identification combination includes a business thread identification and a storage area identification.

14. A computing device cluster, characterized in that: comprising at least one computing device, each computing device comprising a processor and a memory; The processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device, so that the computing device cluster executes the data access method according to any one of claims 1 to 6.

15. A computer program product comprising instructions, characterized in that When the instructions are executed by a computing device cluster, the computing device cluster executes the data access method according to any one of claims 1 to 6.

16. A computer-readable storage medium, characterized in that: The method comprises computer program instructions. When the computer program instructions are executed by a computing device cluster, the computing device cluster executes the data access method according to any one of claims 1 to 6.

Citation Information

Patent Citations

  • Data transmission method, chip and equipment

    CN113900972A

  • Data access method and related equipment

    CN114691026A

  • Method and system for secure remote direct memory access

    US7971236B1