Communication system, communication method, and apparatus
By adding priority identifiers to substreams in co-flow services and adjusting the processing order of the receiving nodes, the problems of resource waste and processing time differences in co-flow services are solved, and resource utilization efficiency is improved, especially in distributed storage and cloud computing systems.
Patent Information
- Application Number
- PCT/CN2024/110149
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-29
- Filing Date
- 2024-08-06
- Publication Date
- 2025-07-03
AI Technical Summary
In co-flow services, the prior art is difficult to effectively improve resource utilization efficiency, especially when multiple receiving nodes process substreams, there are problems of resource waste and processing time differences.
By carrying the priority identifier in the substream, the receiving nodes are allowed to process according to the priority identifier. Some nodes prioritize high-priority substreams, and some nodes push back to process low-priority substreams, thereby shortening the processing time difference between each node.
The time difference between different receiving nodes completing processing substreams is reduced, and the efficiency of resource utilization is improved. Especially in distributed storage systems and cloud computing systems, the resource utilization of storage nodes and computing nodes is optimized.
Smart Images

Figure CN2024110149_03072025_PF_FP_ABST
Abstract
Description
Communication system, communication method and device
[0001] This application claims priority to the Chinese patent application filed with the China Patent Office on December 29, 2023, with application number 202311863142.6 and application name “Communication System, Communication Method and Device”, the entire contents of which are incorporated by reference into this application. Technical Field
[0002] This application relates to the field of communications, and in particular to a communication system, a communication method, and a device. Background Art
[0003] A coflow is a collection of collaborative data flows. Each independent data flow in a coflow is called a subflow of the coflow. The coflow completion time (CCT) is determined by the latest completion time of each subflow.
[0004] Compared to the transmission process of a single data stream, the transmission process of a co-stream is more complex and consumes more resources because it includes multiple sub-streams that work together. Therefore, how to improve resource utilization efficiency when executing co-stream services is a problem that needs to be solved.
[0005] Summary of the Invention
[0006] The present application provides a communication system, a communication method, and an apparatus for improving resource utilization efficiency during execution of collaborative flow services.
[0007] In a first aspect, a communication system is provided, which includes a sending node, a first receiving node, and a second receiving node. The sending node is used to send a first substream to the first receiving node, and the first substream includes a first priority identifier. The sending node is also used to send a second substream to the second receiving node, and the second substream includes a second priority identifier. The first substream and the second substream belong to the same coflow. The first receiving node is used to give priority to processing the first substream according to the first priority corresponding to the first priority identifier. The second receiving node is used to postpone processing the second substream according to the second priority corresponding to the second priority identifier. So that the time difference between the first receiving end completing processing the first substream and the second receiving end completing processing the second substream satisfies: less than the time difference between the first receiving node and the second receiving node completing processing the first substream and the second substream according to the first priority, and less than at least one of the time difference between the first receiving node and the second receiving node completing processing the first substream and the second substream according to the second priority.
[0008] In the above method of the present application, when the sending node sends a substream to each receiving node, it can carry a priority identifier in the substream. Furthermore, the receiving node can process the substream according to the priority corresponding to the priority identifier. On the one hand, some receiving nodes can prioritize substreams according to higher priorities (i.e., the first receiving node prioritizes substreams according to the first priority corresponding to the first priority identifier); on the other hand, another part of the receiving nodes can postpone processing substreams according to lower priorities (i.e., the second receiving node postpones processing substreams according to the second priority corresponding to the second priority identifier). Thus, the time difference between the first receiving node completing processing the first substream and the second receiving node completing processing the second substream satisfies: less than the time difference between the first receiving node and the second receiving node completing processing the first substream and the second substream according to the first priority, and less than at least one of the time difference between the first receiving node and the second receiving node completing processing the first substream and the second substream according to the second priority. In this way, compared to the first receiving node and the second receiving node processing substreams according to the same priority, the above method of the present application can reduce the time difference between different receiving nodes completing processing substreams, thereby improving the resource utilization efficiency of the receiving nodes.
[0009] In one implementation, the communication system is a distributed storage system, wherein the first receiving node and the second receiving node are storage nodes in the distributed storage system respectively.
[0010] In the above implementation, it is taken into consideration that: in a distributed storage system, a co-flow method can be used to store data in multiple storage nodes in the distributed storage system. For example, when storing data in a multi-copy method, a co-flow method can be used to send multiple data copies to different storage nodes for storage. For another example, when storing data in an erasure code (EC) method, a co-flow method can be used to send the data blocks and check blocks in the EC code block to different storage nodes for storage. Therefore, when the first receiving node and the second receiving node are respectively storage nodes in the distributed storage system, the distributed storage system can reduce the time difference between the first receiving node and the second receiving node in storing data in the storage node including the first receiving node and the second receiving node in a co-flow method, thereby improving the resource utilization efficiency of the storage node.
[0011] In one implementation, the above-mentioned distributed storage system includes a hard disk. The hard disk includes a network card, a processor, and a storage medium. The first receiving node and / or the second receiving node is a hard disk in the distributed storage system. In the case where the first receiving node is the first hard disk in the distributed storage system, the network card in the first hard disk is used to receive the first sub-stream, the processor in the first hard disk is used to prioritize the first sub-stream according to the first priority identifier, and the storage medium in the first hard disk is used to store the data in the first sub-stream. In the case where the second receiving node is the second hard disk in the distributed storage system, the network card in the second hard disk is used to receive the second sub-stream, the processor in the second hard disk is used to postpone the processing of the second sub-stream according to the second priority identifier, and the storage medium in the second hard disk is used to store the data in the first sub-stream.
[0012] Through the above implementation method, when the distributed storage system stores data in a storage node including a hard disk in a co-flow manner, it can reduce the time difference between the hard disk and other storage nodes in storing data, thereby improving the resource utilization efficiency of the hard disk and other storage nodes.
[0013] In one implementation, the communication system is a distributed storage system, and the first receiving node and the second receiving node are transmission nodes connected to the storage node in the distributed storage system.
[0014] In the above implementation, it is taken into consideration that: when a storage node is connected to a distributed storage system through a transmission node, each transmission node can process the sub-stream according to the priority corresponding to the priority identifier in the sub-stream after receiving the sub-stream sent to each storage node (for example, send the sub-stream to the storage node according to the priority corresponding to the priority identifier in the sub-stream), thereby improving the utilization efficiency of the scheduling resources of each transmission node and each storage node.
[0015] In one implementation, the sending node is further used to determine the first priority identifier based on the historical flow completion time (FCT) when the n receiving nodes corresponding to the co-flow respectively process the data flow from the sending node, where n is a positive integer greater than 1.
[0016] Through the above implementation, the priority identifier included in the substream (specifically, the first priority identifier included in the first substream) is determined based on the historical FCTs of the n receiving nodes corresponding to the co-stream K when they each processed the data stream from the sending node. This allows the first receiving node to complete processing of the first substream according to the priority level corresponding to the first priority identifier at a time close to the time taken by the other receiving nodes in the n receiving nodes to complete processing the substreams, thereby reducing the time difference in completing processing of the substreams. This, in turn, improves the resource utilization efficiency of each receiving node.
[0017] In one implementation, the sending node is further configured to determine a first priority identifier based on the historical FCTs when the n receiving nodes corresponding to the co-flow respectively processed the data stream from the sending node, including: the sending node is further configured to determine a reference duration based on the historical FCTs when the n receiving nodes corresponding to the co-flow respectively processed the data stream from the sending node; the reference duration is used to indicate the CCT of the co-flow. The sending node is further configured to determine a first FCT in the first FCT set that is less than the reference duration and closest to the reference duration. The first FCT set includes: historical FCTs corresponding to when the first receiving node processed the data stream from the sending node according to different priorities. The sending node is further configured to determine a first priority identifier based on the priority corresponding to the first FCT.
[0018] In the above implementation, the following considerations are taken into account: Firstly, the historical FCTs of the co-flow's n receiving nodes when they each processed the data stream from the sending node can be used to predict the CCT of the co-flow, thereby determining a reference duration for indicating the CCT of the co-flow. Secondly, the FCT of each sub-flow processed by each receiving node can be made smaller than the reference duration and as close to it as possible. This can reduce the time difference between the completion of processing of each sub-flow in the co-flow K. Furthermore, in the above implementation, firstly, the reference duration is determined based on the historical FCTs of the n receiving nodes when they each processed the data stream from the sending node. Secondly, a first FCT smaller than the reference duration and closest to the reference duration is selected from a first FCT set, and a first priority identifier is determined based on the priority level of the first FCT. In this way, when the first receiving node processes the first sub-flow according to the first priority identifier, the FCT of the first sub-flow can be made as close to the reference duration as possible. When the FCTs of multiple sub-flows are all as close to the reference duration as possible using the above method, the time difference between the completion of processing of each sub-flow can be reduced. This can improve the resource utilization efficiency of each receiving node.
[0019] In a second aspect, a communication method is provided, which is applied to a communication system, wherein the communication system includes a sending node, a first receiving node, and a second receiving node. The method includes: the sending node sends a first substream to the first receiving node, the first substream including a first priority identifier. The sending node sends a second substream to the second receiving node, the second substream including a second priority identifier, and the first substream and the second substream belong to the same costream. The first receiving node preferentially processes the first substream according to a first priority corresponding to the first priority identifier. The second receiving node postpones processing of the second substream according to a second priority corresponding to the second priority identifier, so that the time difference between the first receiving node completing processing of the first substream and the second receiving node completing processing of the second substream satisfies: less than the time difference between the first receiving node and the second receiving node completing processing of the first substream and the second substream according to the first priority, and less than at least one of the time difference between the first receiving node and the second receiving node completing processing of the first substream and the second substream according to the second priority.
[0020] In one implementation, the method further includes: the sending node determining a first priority identifier according to historical FCTs when n receiving nodes corresponding to the co-flow respectively process the data flow from the sending node, where n is a positive integer greater than 1.
[0021] In one implementation, a sending node determines a first priority identifier based on historical FCTs when n receiving nodes corresponding to the coflow each processed a data stream from the sending node. This includes: the sending node determines a reference duration based on the historical FCTs when the n receiving nodes corresponding to the coflow each processed a data stream from the sending node; the reference duration is used to indicate the CCT of the coflow. The sending node determines a first FCT in a first FCT set that is less than the reference duration and closest to the reference duration; the first FCT set includes historical FCTs corresponding to when the first receiving node processed data streams from the sending node according to different priorities. The sending node determines the first priority identifier based on the priority corresponding to the first FCT.
[0022] In one implementation, the communication system is a distributed storage system, and the first receiving node and the second receiving node are storage nodes in the distributed storage system.
[0023] In one implementation, the communication system is a distributed storage system, and the first receiving node and the second receiving node are transmission nodes connected to the storage node in the distributed storage system.
[0024] According to a third aspect, a communication system is provided, which includes a first receiving node and a second receiving node, wherein: the first receiving node is used to receive a first substream from a sending node, the first substream including a first priority identifier. The second receiving node is used to receive a second substream from the sending node, the second substream including a second priority identifier, and the first substream and the second substream belong to the same costream; the first receiving node is also used to preferentially process the first substream according to a first priority corresponding to the first priority identifier. The second receiving node is also used to postpone processing of the second substream according to a second priority corresponding to the second priority identifier, so that the time difference between the first receiving node completing processing of the first substream and the second receiving node completing processing of the second substream satisfies: less than the time difference between the first receiving node and the second receiving node completing processing of the first substream and the second substream according to the first priority, and less than at least one of the time difference between the first receiving node and the second receiving node completing processing of the first substream and the second substream according to the second priority.
[0025] In one implementation, the communication system is a distributed storage system, wherein the first receiving node and the second receiving node are storage nodes in the distributed storage system respectively.
[0026] In one implementation, the above-mentioned distributed storage system includes a hard disk. The hard disk includes a network card, a processor, and a storage medium. The first receiving node and / or the second receiving node is a hard disk in the distributed storage system. In the case where the first receiving node is the first hard disk in the distributed storage system, the network card in the first hard disk is used to receive the first sub-stream, the processor in the first hard disk is used to prioritize the first sub-stream according to the first priority identifier, and the storage medium in the first hard disk is used to store the data in the first sub-stream. In the case where the second receiving node is the second hard disk in the distributed storage system, the network card in the second hard disk is used to receive the second sub-stream, the processor in the second hard disk is used to postpone the processing of the second sub-stream according to the second priority identifier, and the storage medium in the second hard disk is used to store the data in the first sub-stream.
[0027] In one implementation, the communication system is a distributed storage system, and the first receiving node and the second receiving node are transmission nodes connected to the storage node in the distributed storage system.
[0028] In a fourth aspect, a communication method is provided, which is applied to a communication system, wherein the communication system includes a first receiving node and a second receiving node. The method includes: the first receiving node receives a first substream from a sending node, the first substream including a first priority identifier. The second receiving node receives a second substream from the sending node, the second substream including a second priority identifier, and the first substream and the second substream belong to the same costream. The first receiving node preferentially processes the first substream according to the first priority corresponding to the first priority identifier. The second receiving node postpones processing of the second substream according to the second priority corresponding to the second priority identifier, so that the time difference between the first receiving node completing processing of the first substream and the second receiving node completing processing of the second substream satisfies: less than the time difference between the first receiving node and the second receiving node completing processing of the first substream and the second substream according to the first priority, and less than at least one of the time difference between the first receiving node and the second receiving node completing processing of the first substream and the second substream according to the second priority.
[0029] In one implementation, the communication system is a distributed storage system, wherein the first receiving node and the second receiving node are storage nodes in the distributed storage system respectively.
[0030] In one implementation, the above-mentioned distributed storage system includes a hard disk. The hard disk includes a network card, a processor, and a storage medium. The first receiving node and / or the second receiving node is a hard disk in the distributed storage system. In the case where the first receiving node is the first hard disk in the distributed storage system, the network card in the first hard disk is used to receive the first sub-stream, the processor in the first hard disk is used to prioritize the first sub-stream according to the first priority identifier, and the storage medium in the first hard disk is used to store the data in the first sub-stream. In the case where the second receiving node is the second hard disk in the distributed storage system, the network card in the second hard disk is used to receive the second sub-stream, the processor in the second hard disk is used to postpone the processing of the second sub-stream according to the second priority identifier, and the storage medium in the second hard disk is used to store the data in the first sub-stream.
[0031] In one implementation, the communication system is a distributed storage system, and the first receiving node and the second receiving node are transmission nodes connected to the storage node in the distributed storage system.
[0032] In a fifth aspect, a computer-readable storage medium is provided, which stores a computer program. When the computer program is executed by a sending node and a receiving node in a communication system, the method of the second aspect or any implementation method in the second aspect or the fourth aspect or any implementation method in the fourth aspect is implemented.
[0033] In the sixth aspect, a computer program product is provided, which includes instructions. When the instructions are run on a sending node and a receiving node in a communication system, the method of the second aspect or any implementation method in the second aspect or the fourth aspect or any implementation method in the fourth aspect is implemented. BRIEF DESCRIPTION OF THE DRAWINGS
[0034] FIG1 is a schematic diagram of a structure of a communication system according to an embodiment of the present application;
[0035] FIG2 is a schematic diagram of one of the operation flow charts of a communication system provided in an embodiment of the present application;
[0036] FIG3 is a second schematic diagram of an operation flow of a communication system provided in an embodiment of the present application;
[0037] FIG4 is a third schematic diagram of an operation flow of a communication system provided in an embodiment of the present application;
[0038] FIG5 is a fourth schematic diagram of an operation flow of a communication system provided in an embodiment of the present application;
[0039] FIG6 is a second structural diagram of a communication system provided in an embodiment of the present application;
[0040] FIG7 is a schematic diagram of a distributed storage system according to an embodiment of the present application;
[0041] FIG8 is a second structural diagram of a distributed storage system provided in an embodiment of the present application;
[0042] FIG9 is a third structural diagram of a distributed storage system provided in an embodiment of the present application;
[0043] FIG10 is a fifth schematic diagram of an operation flow of a communication system provided in an embodiment of the present application;
[0044] FIG11 is a sixth schematic diagram of the operation flow of a communication system provided in an embodiment of the present application. DETAILED DESCRIPTION
[0045] The technical solutions in the embodiments of the present application will be described below in conjunction with the drawings in the embodiments of the present application.
[0046] At present, with the development of computer technology, many businesses are implemented in a coflow manner. For example, in cloud computing, a coflow approach can be used to implement collaborative computing of multiple computing nodes. Specifically, in a cloud computing system, a sending node (for example, the sending node can be a management node in the cloud computing system) can send a subflow to multiple computing nodes. After that, the multiple computing nodes process the subflow and send a feedback message to the sending node after completing the processing. After receiving the feedback message from each computing node, the sending node determines that the coflow is completed and releases memory resources. The coflow completion time (CCT) of the coflow depends on the time when the latest processing is completed among the multiple computing nodes.
[0047] The following describes the implementation process of co-flow in related technologies using the communication system shown in Figure 1 as an example. As shown in Figure 1, the communication system 10 includes a sending node 110 and multiple receiving nodes (receiving nodes 121, 122, and 123 are used as examples in the figure).
[0048] When the communication system 10 is applied in a cloud computing scenario, the sending node 110 may be a management node in the cloud computing system for sending computing tasks to each computing node, and each receiving node may be a computing node in the cloud computing system. The execution process of the cooperative flow is shown in FIG2 and includes:
[0049] S201: The sending node 110 occupies memory resources and sends sub-flows (ie, sub-flow a, sub-flow b, and sub-flow c) to each receiving node respectively.
[0050] Each sub-flow may be composed of one or more data packets.
[0051] S202: Each receiving node processes the received sub-flow according to the priority in the scheduling policy.
[0052] Specifically, when a receiving node needs to process multiple tasks simultaneously, each receiving node can determine the priority of the data packets in each task according to the corresponding scheduling strategy (for example, strict priority (SP) scheduling strategy, weighted round robin (WRR) scheduling strategy or differential weighted round robin (DWRR) scheduling strategy, etc.), and process the data packets according to the priority.
[0053] Among them, when each receiving node processes the received sub-streams according to the same priority in the scheduling strategy, for different sub-streams in the co-stream, due to factors such as the different load sizes of each receiving node, it is possible that some receiving nodes process the sub-streams earlier and other receiving nodes process the sub-streams later.
[0054] For example, in the scenario shown in Figure 2, assume that receiving node 123 has the highest load, receiving node 122 has the lowest load, and receiving node 121 has a load somewhere in between. When the three receiving nodes process subflows a, b, and c with the same priority according to the scheduling policy, the order in which each receiving node processes the subflows is as follows: 1. Receiving node 121 processes the first two packets (indicated by shaded blocks in the figure) before processing subflow a; 2. Receiving node 122 can directly process subflow b without waiting; 3. Receiving node 123 processes the first four packets (indicated by shaded blocks in the figure) before processing subflow c.
[0055] S203 . After completing data processing, each receiving node sends a feedback message to the sending node 110 .
[0056] For example, after receiving node 121 completes processing substream a, it sends a feedback message to sending node 110; after receiving node 122 completes processing substream b, it sends a feedback message to sending node 110; and after receiving node 123 completes processing substream c, it sends a feedback message to sending node 110. Specifically, in the example of FIG2 , receiving node 122 will complete data processing the earliest, and therefore, receiving node 122 will send a feedback message to sending node 110 the earliest; receiving node 123 will complete data processing the latest, and therefore, receiving node 123 will send a feedback message to sending node 110 the latest; the time when receiving node 121 sends a feedback message to sending node 110 is between the two times.
[0057] S204 : After receiving the feedback messages from each receiving node, the sending node 110 determines that the co-flow is completed and releases memory resources.
[0058] It can be seen that during the execution of the co-flow shown in Figure 2, there is a time difference between the completion time of each receiving node processing the sub-flow. In this case, for the receiving node that completes data processing earlier, there may be a waste of scheduling resources.
[0059] Taking receiving node 122 as an example: because sending node 110 releases memory resources only after confirming that all receiving nodes have completed data processing (i.e., the CCT of the co-flow depends on the latest completion time of each sub-flow), the CCT of the co-flow does not decrease just because receiving node 122 can process sub-flow b earlier. In other words, if receiving node 122 can process data packets of other services first (for example, receiving node 122 first processes data packets 1, 2, and 3 in Figure 2), and then processes sub-flow b when other receiving nodes are processing sub-flows (for example, when receiving node 123 is processing sub-flow c), this can increase the speed at which receiving node 122 can process other services without increasing the CCT of the co-flow, thereby improving the efficiency of scheduling resources in receiving node 122.
[0060] In response to the above problems, an embodiment of the present application provides a technical solution. In this technical solution, when executing a cooperative flow service, when a sending node sends a sub-flow to each receiving node, a priority identifier can be carried in the sub-flow. Furthermore, the receiving node can process the sub-flow according to the priority corresponding to the priority identifier. On the one hand, some receiving nodes can give priority to processing sub-flows according to higher priorities (for example, receiving nodes with high loads can give priority to processing sub-flows according to higher priorities); on the other hand, another part of the receiving nodes can postpone processing sub-flows according to lower priorities (for example, receiving nodes with low loads can postpone processing sub-flows according to lower priorities). In this way, the time difference between different receiving nodes in completing the processing of sub-flows can be reduced. Thereby improving the efficiency of resource utilization.
[0061] For example, as shown in (a) of Figure 3, when the co-flow service includes sub-flow a sent by the sending node 110 to the receiving node 121 and sub-flow b sent by the sending node 110 to the receiving node 122, as shown in (b) of Figure 3, it is assumed that at this time the FCT when the sending node 110 sends data to the receiving node 121 and the receiving node 121 processes the data according to priority 1 in the scheduling policy is 10us (it can be understood that at this time the time from the sending node 110 sending data to the receiving node completing data processing is 10us); the FCT when the sending node 110 sends data to the receiving node 121 and the receiving node 121 processes the data according to priority 2 in the scheduling policy is 16us; the FCT when the sending node 110 sends data to the receiving node 122 and the receiving node 122 processes the data according to priority 1 in the scheduling policy is 20us; the FCT when the sending node 110 sends data to the receiving node 121 and the receiving node 122 processes the data according to priority 2 in the scheduling policy is 26us.
[0062] In this embodiment of the present application, substream a sent by sending node 110 to receiving node 121 may include a priority 2 identifier, and substream b sent by sending node 110 to receiving node 122 may include a priority 1 identifier. Furthermore, after receiving substream a, receiving node 121 may prioritize processing substream a based on priority 2; and after receiving substream b, receiving node 122 may postpone processing substream b based on priority 1.
[0063] It can be seen that compared with the time difference of 10us (i.e. 20us-10us) when both receiving nodes complete the processing of sub-stream a and sub-stream b according to priority 1 and the time difference of 10us (i.e. 26us-16us) when both receiving nodes complete the processing of sub-stream a and sub-stream b according to priority 2, the above process of the embodiment of the present application can reduce the time difference between the two receiving nodes in completing the processing of the sub-streams to 4us (i.e. 20us-16us).
[0064] As another example, as shown in (a) of Figure 4, in the case where the co-flow service includes sub-flow c sent by the sending node 110 to the receiving node 121, sub-flow d sent by the sending node 110 to the receiving node 122, and sub-flow e sent by the sending node 110 to the receiving node 123, it is assumed that the FCT of each receiving node when processing data according to different priorities in the scheduling strategy is as shown in (b) of Figure 4.
[0065] Then, in this embodiment of the present application, substream c sent by sending node 110 to receiving node 121 may include a priority 3 identifier, substream d sent by sending node 110 to receiving node 122 may include a priority 2 identifier, and substream e sent by sending node 110 to receiving node 123 may include a priority 1 identifier. Furthermore, after receiving substream c, receiving node 121 may process substream c according to priority 3; after receiving substream d, receiving node 122 may process substream d according to priority 2; and after receiving substream e, receiving node 123 may process substream e according to priority 1.
[0066] Similar to the example shown in FIG3 , in the example of FIG4 , compared with each receiving node processing sub-streams according to the same priority, the above process of the embodiment of the present application can reduce the time difference between different receiving nodes in processing sub-streams.
[0067] Based on the above, an embodiment of the present application provides a communication system. The structure of the communication system can be shown as communication system 10 in FIG1 . The communication system 10 can include a sending node 110 and multiple receiving nodes (using three receiving nodes: receiving node 121, receiving node 122, and receiving node 123 as an example in FIG1 ).
[0068] The sending node 110 may send the substreams in the costream to each receiving node in the manner provided below in the embodiment of the present application. Each receiving node may process the received substreams in the manner provided below in the embodiment of the present application.
[0069] In actual applications, in the communication system 10 provided in the embodiments of the present application, the functions of the sending node 110 and each receiving node can be implemented by electronic devices such as personal computers (including desktop computers, laptop computers, handheld computers, and notebook computers), ultra-mobile personal computers (UMPCs), network cards, or servers. Alternatively, the functions of the sending node 110 and each receiving node can be implemented by hardware devices (such as chips) or software devices (such as virtual machines) running in the above electronic devices.
[0070] In addition, the sending node 110 and each receiving node may be connected via a transmission network. The structure and type of the transmission network are not limited in the embodiments of the present application.
[0071] The following is a detailed description of the operation process of the communication system 10 when executing the cooperative flow service in the embodiment of the present application. As shown in Figure 5, the operation process of the communication system 10 may include:
[0072] S301: The sending node 110 obtains each sub-flow included in the co-flow K.
[0073] For example, the sending node 110 may obtain data that needs to be collaboratively processed by multiple receiving nodes from a related application program at the application layer, and process the data to obtain each sub-stream in the collaborative stream K.
[0074] For another example, the sending node 110 may also receive multiple sub-streams included in the co-stream K from other nodes. For example, when the sending node 110 is a control node in a cloud computing system, the sending node 110 may receive multiple sub-streams included in the co-stream K from a client that has established a connection with the cloud computing system.
[0075] S302: The sending node 110 sends a sub-flow to multiple receiving nodes.
[0076] Each sub-flow includes a priority identifier, which is used to instruct the receiving node to process the sub-flow according to the priority corresponding to the priority identifier.
[0077] For example, in the example shown in Figure 3, the sub-stream a sent by the sending node 110 to the receiving node 121 includes a priority 2 identifier, which is used to instruct the receiving node 121 to process the sub-stream according to priority 2; the sub-stream b sent by the sending node 110 to the receiving node 122 includes a priority 1 identifier, which is used to instruct the receiving node 122 to process the sub-stream according to priority 1.
[0078] For example, in the example shown in Figure 4, the sub-stream c sent by the sending node 110 to the receiving node 121 includes a priority 3 identifier, the sub-stream d sent by the sending node 110 to the receiving node 122 includes a priority 2 identifier, and the sub-stream e sent by the sending node 110 to the receiving node 123 includes a priority 1 identifier.
[0079] In addition, the process of how the sending node 110 determines the priority identifier of each sub-flow will be described in detail below through S601-S602, but will not be described in detail here.
[0080] S303: Each receiving node processes the sub-flow according to the priority corresponding to the priority identifier included in the sub-flow.
[0081] For example, in the example shown in Figure 3, the receiving node 121 processes substream a according to priority 2 (i.e., the priority corresponding to the priority identifier included in substream a); the receiving node 122 processes substream b according to priority 1 (i.e., the priority corresponding to the priority identifier included in substream b).
[0082] For another example, in the example shown in Figure 4, the receiving node 121 processes sub-stream c according to priority 3 (i.e., the priority corresponding to the priority identifier included in sub-stream c); the receiving node 122 processes sub-stream d according to priority 2 (i.e., the priority corresponding to the priority identifier included in sub-stream d); and the receiving node 123 processes sub-stream e according to priority 1 (i.e., the priority corresponding to the priority identifier included in sub-stream e).
[0083] In the embodiment of the present application, depending on the scheduling strategy adopted by the receiving node, the priority corresponding to the priority identifier may be the priority in different scheduling strategies.
[0084] For example, when each receiving node uses the SP scheduling policy to determine the order in which to process data, the priority corresponding to the priority identifier can be a priority in the SP scheduling policy. For example, priority 1 and priority 2 in the example shown in FIG3 , and priority 1, priority 2, and priority 4 in the example shown in FIG4 , can each be a priority in the SP scheduling policy. Furthermore, each receiving node can process the subflow according to the priority corresponding to the priority identifier in the SP scheduling policy.
[0085] Similarly, when the receiving node adopts WRR scheduling strategy or other scheduling strategies such as DWRR, the priority corresponding to the priority identifier may be the priority in other scheduling strategies such as DWRR. In the embodiment of the present application, there is no restriction on the scheduling strategy adopted by each receiving node.
[0086] In addition, in an embodiment of the present application, processing sub-streams can be understood as: the receiving node determines the order of processing the sub-stream according to the corresponding priority (that is, the priority corresponding to the priority identifier included in the sub-stream received by the receiving node) and the scheduling strategy, and performs subsequent operations on the sub-stream according to the scheduling order (for example, sending the data in the sub-stream to the application layer for calculation, storage, etc.).
[0087] In the embodiment of the present application, in the process of each receiving node processing a substream, the process of at least two receiving nodes processing the substream may be consistent with the following process S3031-S3032 of the first receiving node processing the first substream and the second receiving node processing the second substream:
[0088] S3031. The first receiving node preferentially processes the first substream according to the first priority corresponding to the first priority identifier (ie, the priority identifier included in the first substream).
[0089] S3032: The second receiving node postpones processing of the second substream according to the second priority corresponding to the second priority identifier (ie, the priority identifier included in the second substream).
[0090] The time difference T1 between the first receiving node completing processing of the first sub-stream and the second receiving node completing processing of the second sub-stream meets the target condition.
[0091] Among them, the target conditions include: less than the time difference T2 between the first receiving node and the second receiving node to complete processing the first sub-stream and the second sub-stream according to the first priority, and less than at least one of the time difference T3 between the first receiving node and the second receiving node to complete processing the first sub-stream and the second sub-stream according to the second priority.
[0092] For example, the first receiving node may be the receiving node 122 in FIG3 , and the second receiving node may be the receiving node 121 in FIG3 . Receiving node 122 prioritizes processing substream b (i.e., the first substream) based on priority 1; receiving node 121 postpones processing substream a (i.e., the second substream) based on priority 2. The time difference T1 between when receiving node 122 completes processing substream b and when receiving node 121 completes processing substream a is 4 us (i.e., 20 us - 16 us). The time difference T1 is smaller than the time difference T2 (20 us - 10 us = 10 us) when both receiving nodes complete processing substream b and substream a based on priority 1, and the time difference T3 (26 us - 16 us = 10 us) when both receiving nodes complete processing substream b and substream a based on priority 2.
[0093] For another example, the first receiving node may be the receiving node 123 in FIG4 , and the second receiving node may be the receiving node 122 in FIG4 . Receiving node 123 prioritizes processing substream e (i.e., the first substream) based on priority 1; receiving node 122 postpones processing substream d (i.e., the second substream) based on priority 2. The time difference between when receiving node 123 completes processing substream e and when receiving node 122 completes processing substream d is 4 us (i.e., 30 us - 26 us). The time difference T1 is smaller than the time difference T2 (30 us - 20 us = 10 us) when both receiving nodes complete processing substream e and substream d based on priority 1, and the time difference T3 (36 us - 26 us = 10 us) when both receiving nodes complete processing substream e and substream d based on priority 2.
[0094] For another example, the first receiving node may be the receiving node 122 in FIG. 4 , and the second receiving node may be the receiving node 121 in FIG. In this case, the receiving node 122 prioritizes processing of substream d (i.e., the first substream) based on priority 2; the receiving node 121 postpones processing of substream c (i.e., the second substream) based on priority 3. In this case, the time difference between when the receiving node 122 completes processing of substream d and when the receiving node 121 completes processing of substream c is 0 us (i.e., 26 us - 26 us). In this case, the time difference T1 is smaller than the time difference T2 (26 us - 16 us = 10 us) when both receiving nodes complete processing of substream d and substream c based on priority 2, and the time difference T3 (36 us - 26 us = 10 us) when both receiving nodes complete processing of substream d and substream c based on priority 2.
[0095] For another example, the first receiving node may be the receiving node 123 in FIG. 4 , and the second receiving node may be the receiving node 121 in FIG. Receiving node 123 prioritizes processing substream e (i.e., the first substream) based on priority 1; receiving node 121 postpones processing substream c (i.e., the second substream) based on priority 3. The time difference between when receiving node 121 completes processing substream e and when receiving node 121 completes processing substream c is 4 us (i.e., 30 us - 26 us). The time difference T1 is smaller than the time difference T2 (30 us - 10 us = 20 us) when both receiving nodes complete processing substream e and substream c based on priority 1, and the time difference T3 (46 us - 26 us = 20 us) when both receiving nodes complete processing substream e and substream c based on priority 2.
[0096] In one possible design, on the one hand, the time difference T2 between the first receiving node and the second receiving node completing processing of the first sub-stream and the second sub-stream according to the first priority can be specifically: the time difference T2 between the first receiving node completing processing of the first sub-stream and the second receiving node completing processing of the first data.
[0097] The first data is data carrying the second priority identifier and received by the first receiving node before or after receiving the first sub-stream.
[0098] Taking the receiving node 122 as the first receiving node and the receiving node 121 as the second receiving node in Figure 3 as an example: the time difference T2 between the receiving node 122 and the receiving node 121 completing the processing of sub-stream a and sub-stream b according to priority 1 can be specifically: the time difference between the receiving node 122 completing the processing of sub-stream a according to priority 1 and the receiving node 121 completing the processing of the first data according to priority 1 (the first data can be the business data including priority 1 received before or after the receiving node 121 receives sub-stream b).
[0099] On the other hand, the time difference T3 between the first receiving node and the second receiving node in completing processing of the first substream and the second substream according to the second priority can be specifically: the time difference T2 between the first receiving node completing processing of the second data and the second receiving node completing processing of the second substream.
[0100] The second data is data carrying the first priority identifier and received by the second receiving node before or after receiving the second sub-stream.
[0101] Continuing with the example of receiving node 122 as the first receiving node and receiving node 121 as the second receiving node in Figure 3: the time difference T2 between receiving node 122 and receiving node 121 completing the processing of substream a and substream b according to priority 2 can be specifically: the time difference between receiving node 122 completing the processing of the second data according to priority 2 (the second data can be the business data including priority 2 received before or after receiving node 122 receives substream a) and receiving node 121 completing the processing of substream b according to priority 2.
[0102] The above design takes into account that, in actual applications, when processing substreams, receiving nodes only need to process substreams according to one priority level (i.e., the priority level corresponding to the priority identifier carried in the substream). For example, when the first receiving node prioritizes processing the first substream according to the first priority level (i.e., S3031), the first receiving node does not need to process the first substream again according to the second priority level. Similarly, when the second receiving node prioritizes processing the second substream according to the second priority level (i.e., S3032), the second receiving node does not need to process the second substream again according to the first priority level.
[0103] Therefore, when the first receiving node prioritizes processing the first sub-stream according to the first priority, the time when the first receiving node completes processing other business data according to the second priority (for example, the other business data can be business data carrying the second priority identifier received by the first receiving node before or after receiving the first sub-stream) can be used to reflect the time when the first receiving node completes processing the first sub-stream according to the second priority.
[0104] Take the receiving node 122 as the first receiving node and the receiving node 121 as the second receiving node in Figure 3 as an example: where, when the receiving node 122 preferentially processes sub-stream a according to priority 1, the time when the receiving node 122 completes processing other business data according to priority 2 (the business data can be business data including priority 2 received before or after the receiving node 122 receives sub-stream a) can be used to reflect the time when the receiving node 122 completes processing sub-stream a according to priority 2.
[0105] Similarly, when the second receiving node prioritizes processing the second sub-stream according to the second priority, the time when the second receiving node completes processing other business data according to the first priority (for example, the other business data may be business data carrying the first priority identifier received by the second receiving node before or after receiving the second sub-stream) can be used to reflect the time when the second receiving node completes processing the first sub-stream according to the first priority.
[0106] Continuing with the example of receiving node 122 as the first receiving node and receiving node 121 as the second receiving node in Figure 3: where, when receiving node 121 prioritizes processing sub-stream a according to priority 2, the time when receiving node 121 completes processing other business data according to priority 1 (the business data may be business data including priority 1 received before or after receiving node 121 receives sub-stream b) can be used to reflect the time when receiving node 122 completes processing sub-stream a according to priority 2.
[0107] After each receiving node completes processing of each sub-flow, the following steps may also be performed:
[0108] S304 : After completing processing of each sub-flow, each receiving node sends a feedback message to the sending node 110 .
[0109] For example, in the example shown in FIG3 , after receiving nodes 121 and 122 have completed processing sub-flows a and b, they can send feedback messages to sending node 110 to indicate that the sub-flows have been processed. For another example, in the example shown in FIG4 , after receiving nodes 121, 122, and 123 have completed processing sub-flows c, d, and e, they can send feedback messages to sending node 110 to indicate that the sub-flows have been processed.
[0110] S305 : After receiving the feedback messages sent by each receiving node, the sending node releases the resources corresponding to the co-flow K.
[0111] For example, after receiving the feedback messages sent by all the receiving nodes, the sending node determines that the execution of the co-flow K is completed, and then releases the memory resources occupied by the co-flow K.
[0112] FIG5 above mainly uses the structure of the communication system 10 shown in FIG1 as an example to describe the operation process of the communication system provided by the embodiment of the present application. In the communication system 10 shown in FIG1, the sending node 110 and multiple receiving nodes can each be a component of the communication system 10. In another implementation, the communication system provided by the embodiment of the present application may not include the software / hardware device that performs the functions of the sending node 110. For example, FIG6 shows a schematic diagram of the structure of another communication system provided by the embodiment of the present application.
[0113] The communication system 40 includes multiple receiving nodes (taking receiving node 401 , receiving node 402 and receiving node 403 as examples in the figure).
[0114] The functions of each receiving node can be implemented by an electronic device such as a personal computer (including desktop computers, laptop computers, handheld computers, and notebook computers), an ultra-mobile personal computer (UMPC), a network card, or a server. Alternatively, the functions of each receiving node can be implemented by a hardware device (e.g., a chip) or a software device (e.g., a virtual machine) running in the above electronic devices.
[0115] Each receiving node can interact with a sending node 41 outside the communication system 40 through the transmission network. For example, the sending node 41 can be a client with access rights to the communication system 40, and the client can interact with each receiving node through the transmission network.
[0116] When the communication system 40 is used to perform the co-flow service, the sending node 41 can refer to the contents of S301 above to obtain each sub-flow in the co-flow, and refer to the contents of S302 above to send the sub-flow including the priority identifier to each receiving node in the communication system 40. In addition, the sending node 110 can also refer to the contents of S601-S602 below to determine the priority identifier included in each sub-flow.
[0117] After receiving the subflow from the sending node 41, each receiving node in the communication system 40 may refer to the above-described S303 and process the subflow according to the priority corresponding to the priority identifier included in the subflow. The subflow processing process of at least two receiving nodes in the communication system 40 may conform to the contents of S3031 and S3032.
[0118] In addition, after processing the sub-flow, each receiving node may refer to the above S304 to send a feedback message to the sending node 41. After receiving the feedback message from the receiving node, the sending node 41 may refer to the above S305 to release resources.
[0119] In one implementation, it is considered that in a distributed storage system, data can be stored in multiple storage nodes in the distributed storage system using a co-streaming approach. For example, when storing data using multiple copies, a co-streaming approach can be used to send multiple data copies to different storage nodes for storage. For another example, when storing data using erasure codes (EC), a co-streaming approach can be used to send data blocks and check blocks in an EC code block to different storage nodes for storage.
[0120] Therefore, the operation process of the communication system shown in FIG5 above can be applied to a distributed storage system, thereby improving resource utilization efficiency when storing data in a co-streaming manner in the distributed storage system.
[0121] As shown in Figure 7, it is a schematic diagram of the structure of a distributed storage system provided in an embodiment of the present application. The distributed storage system 50 includes: a plurality of storage nodes for storing data (taking 4 storage nodes: storage node 501, storage node 502, storage node 503 and storage node 504 as an example in the figure), and one or more computing nodes for providing computing power (taking 1 computing node: computing node 505 as an example in the figure). Among them, each storage node and computing node can be connected through a transmission network 506. In actual application, each storage node and computing node in the distributed storage system 50 can be a server, desktop computer and other devices.
[0122] It will be understood that FIG7 only provides an exemplary system architecture of a distributed storage system. In the specific implementation process, the distributed storage system that applies the technical solution provided by the embodiment of the present application may also adopt other system architectures. For example, when the storage node in the distributed storage system is a device that has both computing power and storage power, the function of the computing node 505 can be realized by the storage node. In this case, the computing node 505 may not be included in the distributed storage system. In addition, when the storage node in the distributed storage system is a device that has both computing power and storage power, the computing node 505 can also run on the storage node in the form of a virtual machine. In this case, the distributed storage system may also not include a computing node independent of the storage node. The technical solution provided by the embodiment of the present application can be applied to distributed storage systems with different system architectures.
[0123] In addition, when the distributed storage system 50 is running, on the one hand, the computing node 505 can send the data generated during the operation to the storage node for storage, and the computing node 505 can read the data required for the operation from the storage node. On the other hand, each storage node can also receive access requests from devices other than the computing node, and read and write data according to the access requests. For example, each storage node can receive access requests from other storage nodes in the distributed storage system, and read and write data according to the access requests. For another example, each storage node can receive access requests from devices outside the distributed storage system, and read and write data according to the access requests.
[0124] The following describes the implementation process of applying the operation process of the communication system shown in Figure 5 above to a distributed storage system through three implementation processes:
[0125] In the first implementation process, when in the distributed storage system 50, the computing node 505 sends data to multiple storage nodes and the data is stored by multiple storage nodes, the computing node 505 can be used to implement the function of the sending node 110 in Figure 5, and each storage node can be used to implement the function of each receiving node in Figure 5.
[0126] Specifically, the computing node 505 may refer to the above S301 to obtain each substream in the co-stream (for example, when the storage node uses a multi-copy method for data storage, each substream may include replica data; for another example, when the storage node uses an EC method for data storage, each substream may include a partial data block or a check block) and refer to the above S302 to send the substream including the priority identifier to each storage node in the distributed storage system 50. In addition, the computing node 505 may also refer to the following S601-S602 to determine the priority identifier included in each substream.
[0127] After receiving the substream from the computing node 505, each storage node in the distributed storage system 50 can refer to the content of S303 above and process the substream according to the priority corresponding to the priority identifier included in the substream (wherein, processing the substream can include: the storage node determines the order of the substream according to the priority corresponding to the priority identifier included in the substream, and writes the data in the substream to the storage medium in this order). Among them, each storage node in the distributed storage system 50 can include at least two storage nodes whose substream processing process complies with the contents of S3031 and S3032. In addition, after completing data writing, each storage node can refer to the content of S304 above to send a feedback message to the computing node 505. After receiving the feedback message from the storage node, the computing node 505 can release resources with reference to the content of S305 above.
[0128] In the second implementation, consider that in a distributed storage system, a single storage node can send data to multiple other storage nodes, and the data can be stored by multiple storage nodes. For example, when a storage node has computing power, it can send the data generated by the computation to multiple storage nodes for storage. For another example, when a computing node needs to store data, it can first send the data to a single storage node in the distributed storage system, which can then send the data to multiple storage nodes for storage.
[0129] Therefore, in an embodiment of the present application, the process shown in Figure 5 can be referred to, and data can be sent from one storage node to multiple other storage nodes and stored by multiple storage nodes.
[0130] For example, storage node 501 sends data to storage node 502, storage node 503, and storage node 504, and storage node 502, storage node 503, and storage node 504 store the data.
[0131] On the one hand, the storage node 501 can refer to the contents of S301-S302 above to determine each sub-stream in the co-stream and send the sub-stream including the priority identifier to each storage node in the distributed storage system 50 (for example, when the storage node uses a multi-copy method for data storage, each sub-stream can respectively include a priority identifier and replica data; for another example, when the storage node uses an EC method for data storage, each sub-stream can respectively include a priority identifier and a data block or a check block). In addition, the storage node 501 can also refer to the contents of S601-S602 below to determine the priority identifier included in each sub-stream.
[0132] On the other hand, after receiving the substream from the storage node 501, the storage node 502, the storage node 503 and the storage node 504 can refer to the content of S303 above and process the substream according to the priority corresponding to the priority identifier included in the substream (wherein, processing the substream can include: the storage node determines the order of the substream according to the priority corresponding to the priority identifier included in the substream, and writes the data in the substream into the storage medium in this order). The process of processing the substream by at least two storage nodes can comply with the contents of S3031 and S3032. In addition, after completing the data writing, each storage node can send a feedback message to the storage node 501 with reference to the content of S304 above. After receiving the feedback message from the storage node, the storage node 501 can release resources with reference to the content of S305 above.
[0133] In the third implementation process, it is taken into account that: data can be sent from a device outside the distributed storage system to multiple other storage nodes and stored by multiple storage nodes. Therefore, in an embodiment of the present application, the execution process shown in Figure 5 can be referred to, and data can be sent from a device outside the distributed storage system to multiple other storage nodes and stored by multiple storage nodes. The specific process can refer to the process in which the computing node 505 sends data to multiple storage nodes and the data is stored by multiple storage nodes, or the process in which the storage node 501 sends data to multiple storage nodes and the data is stored by multiple storage nodes. The repeated content will not be repeated here.
[0134] In addition, in one possible design, the functions of some or all storage nodes in the distributed storage system in the embodiments of the present application can be implemented by hard disks with data processing and communication capabilities. For example, as shown in Figure 8, in a distributed storage system 50, storage node 502 and storage node 503 can be hard disk 502 and hard disk 503, respectively.
[0135] The hard disk 502 may include a network card 5021 for communicating with other nodes in the distributed storage system, a processor 5022 for data processing, and a storage medium 5023 for storing data. Similarly, the hard disk 503 may include a network card 5031 for communicating with other nodes in the distributed storage system, a processor 5032 for data processing, and a storage medium 5033 for storing data.
[0136] It should be noted that in FIG8 , hard disk 502 and hard disk 503 each include an independent processor (i.e., processor 5022 and processor 5032). In actual application, when the network cards (i.e., network card 5021 and network card 5031) in hard disk 502 and hard disk 503 have built-in processors, data processing tasks can also be performed by network card 5021 and network card 5031. In this case, processor 5022 can be built into network card 5021, and processor 5032 can be built into network card 5031.
[0137] When the operation process of the communication system shown in FIG. 5 is applied to a distributed storage system, hard disk 502 and hard disk 503 can be used to implement the function of the receiving node in FIG. 5 .
[0138] For example, in the first implementation process described above, after receiving a substream from the computing node 505, the hard disk 502 and the hard disk 503 can each refer to the content of S303 above and process the substream according to the priority level corresponding to the priority identifier included in the substream. For another example, in the second implementation process described above, after receiving a substream from the storage node 501, the hard disk 502 and the hard disk 503 can each refer to the content of S303 above and process the substream according to the priority level corresponding to the priority identifier included in the substream. For another example, in the third implementation process described above, after receiving a substream from a device outside the distributed storage system 50, the hard disk 502 and the hard disk 503 can each refer to the content of S303 above and process the substream according to the priority level corresponding to the priority identifier included in the substream.
[0139] On the one hand, when the first receiving node in S3031 is a hard disk serving as a storage node in a distributed storage system, for example, when the first receiving node is hard disk 502:
[0140] The network card 5021 in the hard disk 502 is used to receive the first sub-stream including the first priority identifier from the sending node (in this case, the sending node can specifically be the computing node 505, other storage nodes in the distributed storage system 50, or a device outside the distributed storage system 50).
[0141] The processor 5022 is configured to process the substream according to the first priority corresponding to the first priority identifier. For example, the processor 5023 is configured to determine the order of processing the first substream according to the first priority and write the data in the first substream to the storage medium 5023 according to the order.
[0142] The storage medium 5023 is used to store the data in the first sub-stream.
[0143] On the other hand, when the second receiving node in S3032 is a hard disk serving as a storage node in the distributed storage system, for example, when the second receiving node is hard disk 503:
[0144] The network card 5031 in the hard disk 503 is used to receive the second sub-stream including the second priority identifier from the sending node (in this case, the sending node can specifically be the computing node 505, other storage nodes in the distributed storage system 50, or a device outside the distributed storage system 50).
[0145] The processor 5032 is configured to process the substream according to the second priority corresponding to the second priority identifier. For example, the processor 5033 is configured to determine the order of processing the second substream according to the second priority and write the data in the second substream to the storage medium 5033 according to the order.
[0146] The storage medium 5033 is used to store the data in the second sub-stream.
[0147] In addition, in a possible design, it is taken into consideration that: when a storage node accesses a distributed storage system through a transmission node, for example, storage node 501, storage node 502, storage node 503 and storage node 504 in Figure 9 can be connected to transmission node 5051, transmission node 5052, transmission node 5053 and transmission node 5054 respectively to access the distributed storage system 50. After receiving the sub-stream sent to each storage node, each transmission node can process the sub-stream according to the priority corresponding to the priority identifier in the sub-stream according to the content of S303 above, thereby improving the utilization efficiency of the scheduling resources of each transmission node and each storage node.
[0148] As shown in FIG. 9 , transmission node 5051 , transmission node 5052 , transmission node 5053 , and transmission node 5054 may constitute a transmission network 505 .
[0149] Taking the distributed storage system 50 in FIG9 as an example, the following describes a specific process in which a sending node (specifically, a computing node 504, a storage node in the distributed storage system 50, or a device outside the distributed storage system 50) sends data to storage nodes 501, 502, 503, and 504 in the distributed storage system 50, and each storage node stores the data:
[0150] First, the sending node may refer to the contents of S301 and S302 above to obtain each sub-stream in the co-stream and send the sub-stream including the priority identifier to each storage node (ie, storage node 501, storage node 502, storage node 503 and storage node 504).
[0151] Afterward, when each substream is transmitted to each transmission node (i.e., transmission node 5051, transmission node 5052, transmission node 5053, and transmission node 5054), each transmission node may refer to the contents of S303 above and process the substream according to the priority corresponding to the priority identifier included in the substream. Processing the substream may specifically include: the transmission node determining the order in which to send the substreams based on the priorities corresponding to the priority identifiers included in the substreams, and sending the substreams to the corresponding storage nodes in that order.
[0152] Among the transmission nodes 5051, 5052, 5053 and 5054, at least two transmission nodes may be included in the process of processing the sub-flow in accordance with the contents of S3031 and S3032.
[0153] In actual applications, the transmission nodes connected to the storage nodes (e.g., transmission node 5051, transmission node 5052, transmission node 5053, and transmission node 5054) may specifically be switches (e.g., top of rack (TOR) switches or spine switches), routers, or virtual switches. The specific form of the transmission nodes is not limited in the embodiments of the present application.
[0154] The following describes the process in which the sending node 110 determines the priority identifiers included in each sub-flow during the operation of the communication system shown in FIG5 , with reference to an example:
[0155] In the embodiment of the present application, it is considered that the FCT of the data stream from the sending node 110 processed by each receiving node before the sending node 110 sends the co-stream K (hereinafter referred to as the historical FCT) can be used to predict the FCT of each receiving node when processing the sub-stream in the co-stream K. Exemplarily, before the receiving node 121 receives the sub-stream in the co-stream K, the FCT of the data stream from the sending node 110 processed by the receiving node 121 according to a certain priority level (taking priority level 1 as an example) in the scheduling policy is 10 us. In the case where the load of the receiving node 121 does not change drastically, the FCT of the sub-stream in the co-stream K processed by the receiving node 121 according to priority level 1 is also approximately 10 us.
[0156] Furthermore, when determining the priority identifiers included in each subflow in co-flow K, the priority identifiers included in each subflow can be determined based on the historical FCTs of multiple receiving nodes corresponding to co-flow K (for example, n receiving nodes, where n is a positive integer greater than 1) when they respectively process the data stream from sending node 110. In this way, the completion time of each receiving node processing the subflow according to the priority corresponding to the priority identifier can be close to the completion time of other receiving nodes in the n receiving nodes, thereby reducing the time difference in completing the processing of each subflow.
[0157] Specifically, as shown in FIG10 , the operation process of the communication system 10 may include:
[0158] S601: The sending node 110 obtains the FCT when each receiving node processes the data stream from the sending node 110.
[0159] In one possible design, the FCT of the receiving node processing the data stream from the sending node 110 can be determined based on the time difference between the sending node 110 sending the data stream to the receiving node and the sending node 110 receiving a feedback message from the receiving node (the feedback message indicating that the processing of the data stream is completed).
[0160] As shown in Figure 10, when sending node 110 sends data stream a to receiving node 121, it records timestamp t1. Furthermore, when sending node 110 receives a feedback message from receiving node 121, it records timestamp t2. The FCT of data stream a processed by receiving node 121 from sending node 110 can be represented by t2 - t1.
[0161] Similarly, in FIG10 , the receiving node 122 processes the FCT of the data stream b from the sending node 110 , which can be represented by t4 - t3 ; the receiving node 122 processes the FCT of the data stream c from the sending node 110 , which can be represented by t6 - t5 .
[0162] In addition, the FCT acquired by the sending node 110 may specifically include: the FCT when the receiving node processes the data stream from the sending node 110 according to different priorities.
[0163] For example, when sending node 110 sends data stream a to receiving node 121, data stream a includes a priority identifier. Receiving node 121 can process data stream a according to the priority level (assuming priority 1) corresponding to the priority identifier and send a feedback message after processing data stream a. In this way, t2-t1 can represent the FCT when receiving node 121 processes the data stream from sending node 110 according to priority 1.
[0164] Exemplarily, the FCT obtained by the sending node 110 when each receiving node processes the data stream from the sending node 110 can be expressed as shown in the following Table 1:
[0165] Table 1
[0166] Among them, T 11 represents the FCT when the receiving node 121 processes the data flow from the sending node 110 according to priority 1, T 21 It represents the FCT when the receiving node 121 processes the data flow from the sending node 110 according to priority 2, and so on.
[0167] S602: The sending node 110 determines the priority identifier of each sub-flow according to the historical FCT when each receiving node processes the data flow from the sending node 110.
[0168] The following describes the implementation of S602 by taking the process of the sending node 110 determining the priority identifier (hereinafter referred to as priority identifier p1) included in the sub-flow (hereinafter referred to as sub-flow f1) received by the receiving node 121 as an example. Specifically, S602 may include:
[0169] S602a: The sending node 110 determines the priority identifier p1 included in the sub-flow f1 received by the receiving node 121 according to the historical FCTs when the n receiving nodes (where n is a positive integer greater than 1) corresponding to the co-flow K respectively process the data flow from the sending node 110.
[0170] The following describes the S602a process through two implementation processes:
[0171] In the first implementation process, the embodiment of the present application takes into account: on the one hand, the historical FCT of the n receiving nodes corresponding to the co-flow when they respectively process the data stream from the sending node 110 can be used to predict the CCT of the co-flow, thereby determining a reference duration for indicating the CCT of the co-flow K. On the other hand, the FCT of the sub-flow processed by each receiving node can be made less than the reference duration and as close to the reference duration as possible. In this way, the time difference between the completion of processing of each sub-flow in the co-flow K can be reduced. Therefore, S602a can be implemented through the following process S602a1-S602a3:
[0172] S602a1 : The sending node 110 determines a reference duration T according to historical FCTs when the n receiving nodes corresponding to the co-flow respectively process the data flow from the sending node 110 .
[0173] The reference duration T is used to indicate the CCT of the co-flow K.
[0174] In a possible design, the reference time T can satisfy the following formula (1): T = min (t c1 ,t c2 ,...,t cm ) Formula (1)
[0175] Among them, t cx It represents the maximum value of the historical FCT when each receiving node processes the data stream from the sending node 110 according to the priority x. For example, in combination with Table 1, t c1 Satisfies the following formula (2): c1 =max(T 11 ,T 12 ,T 13 ) Formula (2)
[0176] t c2 Satisfies the following formula (3): c2 =max(T 21 ,T 22 ,T 23 ) Formula (3)
[0177] t cm Satisfies the following formula (4): cm =max(T m1 ,T m2 ,T m3 ) Formula (4)
[0178] For example, assuming that receiving nodes 121, 122, and 123 respectively process the data stream from sending node 110, the historical FCTs are shown in Table 2 below:
[0179] Table 2
[0180] It can be seen that the maximum historical FCT value when the three receiving nodes process the data stream from the sending node 110 according to priority 1 is 30us (i.e., max(10us, 20us, 30us) max(30us, 36us, 46us)); the maximum historical FCT value when the three receiving nodes process the data stream from the sending node 110 according to priority 2 is 36us (i.e., max(16us, 26us, 36us)); and the maximum historical FCT value when the three receiving nodes process the data stream from the sending node 110 according to priority 3 is 46us (i.e., max(26us, 36us, 46us)). Therefore, the reference time T is 30us (i.e., max(30us, 36us, 46us)).
[0181] S602a2: The sending node 110 determines a first FCT in the FCT set (hereinafter referred to as the first FCT set for ease of description) that is smaller than the reference duration T and closest to the reference duration T.
[0182] The first FCT set includes: historical FCTs when the receiving node 121 processes the data stream from the sending node 110 according to different priorities.
[0183] For example, in Table 1, the historical FCT when the receiving node 121 processes the data stream from the sending node 110 according to priority 1 is T 11 The historical FCT when the receiving node 121 processes the data stream from the sending node 110 according to priority 2 is T 21 , and so on. Then the first FCT set may include: T in Table 1 11 ,T 21 ,...,T m1 .
[0184] Furthermore, the first FCT may specifically be T 11 ,T 21 ,...,T m1 The one that is smaller than the reference duration T and closest to the reference duration T.
[0185] Continuing with the example shown in Table 2, the reference duration T is 30 us, and the first FCT set includes: 10 us, 16 us, and 26 us. Then, the first FCT that is smaller than 30 us and closest to 30 us is 26 us.
[0186] S602a3: The sending node 110 determines the priority identifier p1 included in the sub-flow f1 received by the receiving node 121 in the co-flow K according to the priority corresponding to the first FCT.
[0187] For example, assuming the first FCT is T in Table 1 11 , then the priority corresponding to the first FCT is priority 1, and then the priority identifier p1 can be determined as the identifier corresponding to priority 1.
[0188] Continuing with the example shown in Table 2, the priority corresponding to the first FCT (ie, 26 us) is priority 3, and the priority identifier p1 is determined to be the identifier corresponding to priority 3.
[0189] After determining the priority identifier included in each sub-flow by referring to the above-mentioned process of S602a1-S602a3, the co-flow service can be executed by referring to the contents of S301-S305.
[0190] In the second implementation process, it is taken into account that: in actual application, the sending node 110 may not fully obtain the historical FCT when n receiving nodes process the data stream from the sending node 110 according to different priorities. For example, there is a case where some data is missing in Table 1 or Table 2. In this case, the reference duration T calculated by the above formula (1) may not accurately indicate the CCT of the co-flow. Then, as shown in Figure 11, S602a can be implemented by the following process S602a4-S602a6:
[0191] S602a4: The sending node 110 determines a reference duration T' according to the historical FCTs when the n receiving nodes corresponding to the co-flow respectively process the data flow from the sending node 110.
[0192] The reference duration T' is used to indicate the CCT of the co-flow K.
[0193] The calculation process of the reference duration T' can refer to the process of calculating the reference duration T through the above formula (1). Missing data may not be included in the calculation.
[0194] For example, taking n receiving nodes including receiving node 121, receiving node 122, and receiving node 123 as an example, the historical FCTs when the three receiving nodes respectively process the data stream from the sending node 110 are shown in Table 3 below:
[0195] Table 3
[0196] Among them, the historical FCT of the receiving node 121 when processing the data stream from the sending node 110 according to priority 3 and the historical FCT of the receiving node 123 when processing the data stream from the sending node 110 according to priority 2 are missing. Then, the reference duration T' is calculated using other data. For example, when the maximum value t of the historical FCT of each receiving node when processing the data stream from the sending node 110 according to priority 1 is calculated according to formula (2), c1 When T 11 If missing, you can use t cm =max(T m2 ,T m3 ) Determine t cm Similarly, when calculating t according to formula (3) c2 You can use t c2 =max(T 21 ,T 22 ) Determine t c2 Then, when using formula (1) to calculate the reference time length T', the above t c1 and t c2 Perform calculations.
[0197] S602a5: The sending node 110 determines a second FCT in the FCT set (hereinafter referred to as the second FCT set for ease of description), which is closest to the reference duration T'.
[0198] The second FCT set includes: the historical FCTs when the receiving node 121 processes the data stream from the sending node 110 according to different priorities. For example, in Table 3, the second FCT set includes: T 21 ,...,T m1 Furthermore, the second FCT may be specifically T 21 ,...,T m1 The one closest to the reference duration T.
[0199] In addition, when the sending node 110 cannot obtain the historical FCT when the receiving node 121 processes the data stream from the sending node 110 according to different priorities, for example, the FCT obtained by the sending node 110 is as shown in Table 4:
[0200] Table 4
[0201] Among them, the table entries corresponding to the receiving node 121 are all missing. At this time, the priority identifier of the preset priority can be used as the priority identifier p1. For example, the priority in the middle of the m priorities can be The corresponding preset priority identifier is used as the priority identifier p1.
[0202] S602a6: The sending node 110 determines the priority identifier p1 included in the sub-flow f1 received by the receiving node 121 in the co-flow K in one of the following three ways.
[0203] Method 1: When the second FCT is much shorter than the reference duration T' and the second FCT set does not include the FCT corresponding to the first target priority, the priority identifier p1 is determined to be the priority identifier corresponding to the first target priority.
[0204] The first target priority is one level lower than the priority corresponding to the second FCT.
[0205] That is to say, when the second FCT is much smaller than the reference duration T' and the FCT corresponding to the first target priority is missing in the second FCT set, it is necessary to lower the priority of the receiving node 121 in processing the sub-flow f1, and then use the priority identifier corresponding to the first target priority as the priority identifier p1.
[0206] In one implementation, the second FCT is much smaller than the reference duration T', which may specifically include: the second FCT satisfies the following formula (5): Second FCT < D k<T' Formula (5)
[0207] Among them, D k Satisfies the following formula (6): D k =α1×t d1 +α1×t d2 +...+α m ×t dm Formula (6)
[0208] Among them, t dx represents the mean of the historical FCT when each receiving node processes the data stream from the sending node 110 according to the priority x. d1 Satisfies the following formula (7): d1 =avg(T 11 ,T 12 ,T 13 ) Formula (7)
[0209] t c2 Satisfies the following formula (3): d2 =avg(T 21 ,T 22 ,T 23 ) Formula (8)
[0210] t cm Satisfies the following formula (4): dm =avg(T m1 ,T m2 ,T m3 ) Formula (9)
[0211] α x represents the weight of priority x in the scheduling policy. For example, when each receiving node processes each sub-flow in the co-flow according to the priority in the SP scheduling policy, α1, α2, ..., α m are the weights of priority 1, priority 2, ..., priority m in the SP scheduling policy.
[0212] Method 2: When the second FCT is greater than the reference duration T' and the second FCT set does not include the FCT corresponding to the second target priority, the priority identifier p1 is determined to be the priority identifier corresponding to the second target priority.
[0213] The first target priority is one level higher than the priority corresponding to the second FCT.
[0214] That is to say, when the second FCT is longer than the reference duration T' and the FCT corresponding to the second target priority is missing in the second FCT set, it is necessary to increase the priority of the receiving node 121 in processing the sub-flow f1, and then use the priority identifier corresponding to the second target priority as the priority identifier p1.
[0215] Mode 3: When the second FCT does not meet the conditions in Mode 1 and Mode 2, the priority identifier p1 included in the sub-flow f1 received by the receiving node 121 in the co-flow K is determined according to the priority corresponding to the second FCT.
[0216] That is, when the second FCT does not meet the conditions in the first and second methods, the priority identifier corresponding to the priority corresponding to the second FCT may be used as the priority identifier p1.
[0217] After the priority identifier included in each sub-flow is determined by referring to the above-mentioned process of S602a4-S602a6, the co-flow service can be executed by referring to the contents of S301-S305.
[0218] In addition, in a possible design, after the sending node 110 determines the priority identifiers included in each substream in the co-stream K according to the contents of S601-S602 above, the priority identifiers included in each substream in the co-stream K can be recorded in a preset data set. So that when other co-streams (which can be called co-stream K1) are subsequently sent to each receiving node in the co-stream K, the priority identifiers included in each substream in the co-stream K in the preset data set can be used as the priority identifiers included in each substream in the co-stream K1. This avoids the need to determine the priority identifiers included in each substream in the co-stream K according to the contents of S601-S602 above each time a co-stream is sent.
[0219] For example, the preset data set may be as shown in Table 5 below:
[0220] Table 5
[0221] Table 5 records the priority identifiers in the substreams corresponding to each receiving node when sending a costream to different receiving nodes. For example, when sending node 110 sends a costream to receiving nodes 121, 122, and 123, a table lookup shows that the substream corresponding to receiving node 121 includes priority identifier p1, the substream corresponding to receiving node 122 includes priority identifier p2, and the substream corresponding to receiving node 123 includes priority identifier p3. For another example, when sending node 110 sends a costream to receiving nodes 121 and 122, a table lookup shows that the substream corresponding to receiving node 121 includes priority identifier p4, and the substream corresponding to receiving node 122 includes priority identifier p5.
[0222] In addition, an embodiment of the present application also provides a computer-readable storage medium, which stores instructions. When the instructions are run on the sending node and the receiving node of the communication system, the communication system can follow all or part of the content of the method provided in S301-S305 or S601-S602 above in the embodiment of the present application.
[0223] The present application also provides a computer program product including instructions. When the computer program product is executed on a transmitting node and a receiving node of a communication system, the communication system may perform all or part of the method described in S301-S305 or S601-S602 above.
[0224] The functions, actions, operations, steps, etc. in the above embodiments can be implemented in whole or in part by software, hardware, firmware, or any combination thereof. When implemented using a software program, they can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the processes or functions described in the embodiments of the present application are generated in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via a wired (e.g., coaxial cable, optical fiber, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) method. The computer-readable storage medium can be any available medium that can be accessed by a computer or a data storage device such as a server or data center that can be integrated with the medium. The available medium may be a magnetic medium (eg, a floppy disk, a hard disk, a magnetic tape), an optical medium (eg, a DVD), or a semiconductor medium (eg, a solid state disk (SSD)).
[0225] The terms "first", "second", "third", "fourth" etc. (if any) in the specification and claims of this application and the above-mentioned drawings are used to distinguish similar objects and are not necessarily used to describe a specific order or sequential order. It should be understood that the data used in this way can be interchangeable under appropriate circumstances, so that the embodiments described herein can be implemented in a sequence other than the content illustrated or described here. In addition, the terms "including" and "having" and any of their variations are intended to cover non-exclusive inclusions. For example, a process, method, system, product or device that includes a series of steps or units is not necessarily limited to those steps or units clearly listed, but may include other steps or units that are not clearly listed or that are inherent to these processes, methods, products or devices. In addition, in the present embodiment, "at least one" refers to one or more, "a plurality" refers to two or more, and other quantifiers are similar thereto. "And / or" describes the association relationship of associated objects, indicating that three relationships can exist. For example, A and / or B can represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, for elements appearing in the singular form "a", "an" and "the", unless the context clearly dictates otherwise, they do not mean "one or only one", but rather "one or more than one". For example, "a device" means one or more such devices. Furthermore, "at least one of..." means one or any combination of the subsequent associated objects, for example, "at least one of A, B and C" includes A, B, C, AB, AC, BC, or ABC. In the textual description of this embodiment, the character " / " generally indicates that the previous and next associated objects are in an "or" relationship; in the formula of this embodiment, the character " / " indicates that the previous and next associated objects are in a "division" relationship.
Claims
1. A communication system, characterized in that, The communication system includes a sending node, a first receiving node, and a second receiving node, where: The sending node is configured to send a first sub - flow to the first receiving node, and the first sub - flow includes a first priority identifier; The sending node is further configured to send a second sub - flow to the second receiving node, and the second sub - flow includes a second priority identifier. The first sub - flow and the second sub - flow belong to the same co - flow Coflow; The first receiving node is configured to preferentially process the first sub - flow according to the first priority corresponding to the first priority identifier; The second receiving node is configured to delay processing the second sub - flow according to the second priority corresponding to the second priority identifier, so that the time difference between the first receiving node completing the processing of the first sub - flow and the second receiving node completing the processing of the second sub - flow satisfies: less than at least one of the time differences between the first receiving node and the second receiving node completing the processing of the first sub - flow and the second sub - flow according to the first priority, and less than the time differences between the first receiving node and the second receiving node completing the processing of the first sub - flow and the second sub - flow according to the second priority.
2. The communication system according to claim 1, wherein The communication system is a distributed storage system, and the first receiving node and the second receiving node are respectively storage nodes in the distributed storage system.
3. The communication system according to claim 2, characterized in that The distributed storage system includes hard disks; each hard disk includes a network card, a processor, and a storage medium; the first receiving node and / or the second receiving node is a hard disk in the distributed storage system; When the first receiving node is the first hard disk in the distributed storage system, the network card in the first hard disk is configured to receive the first sub - flow, the processor in the first hard disk is configured to preferentially process the first sub - flow according to the first priority identifier, and the storage medium in the first hard disk is configured to store the data in the first sub - flow; When the second receiving node is the second hard disk in the distributed storage system, the network card in the second hard disk is configured to receive the second sub - flow, the processor in the second hard disk is configured to delay processing the second sub - flow according to the second priority identifier, and the storage medium in the second hard disk is configured to store the data in the first sub - flow.
4. The communication system according to claim 2 or 3, characterized in that The communication system is a distributed storage system, and the first receiving node and the second receiving node are respectively transmission nodes connected to the storage nodes in the distributed storage system.
5. The communication system according to any one of claims 1 - 4, wherein The sending node is further configured to determine the first priority identifier according to the historical flow completion time FCT when the n receiving nodes corresponding to the co - flow respectively process the data flow from the sending node, where n is a positive integer greater than 1.
6. The communication system according to claim 5, wherein The sending node is further configured to determine the first priority identifier according to the historical flow completion time FCT when the n receiving nodes corresponding to the co - flow respectively process the data flow from the sending node, including: The sending node is further configured to determine a reference duration according to the historical flow completion time (FCT) when the n receiving nodes corresponding to the coflow respectively process the data stream from the sending node; the reference duration is used to indicate the coflow's completion time target (CCT). The sending node is further configured to determine a first FCT in the first FCT set that is less than and closest to the reference duration; wherein, the first FCT set includes: the historical FCTs respectively corresponding to the first receiving node when processing the data stream from the sending node according to different priorities. The sending node is further configured to determine the first priority identifier according to the priority corresponding to the first FCT.
7. A communication method, characterized in that, The communication method is applied to a communication system, the communication system includes a sending node, a first receiving node and a second receiving node, and the method includes: The sending node sends a first sub-stream to the first receiving node, and the first sub-stream includes a first priority identifier. The sending node sends a second sub-stream to the second receiving node, the second sub-stream includes a second priority identifier, and the first sub-stream and the second sub-stream belong to the same coflow. The first receiving node preferentially processes the first sub-stream according to the first priority corresponding to the first priority identifier. The second receiving node delays processing the second sub-stream according to the second priority corresponding to the second priority identifier, so that the time difference between the first receiving node completing processing the first sub-stream and the second receiving node completing processing the second sub-stream satisfies: less than the time difference between the first receiving node and the second receiving node completing processing the first sub-stream and the second sub-stream according to the first priority, and less than at least one of the time differences between the first receiving node and the second receiving node completing processing the first sub-stream and the second sub-stream according to the second priority.
8. The communication method according to claim 7, wherein The method further includes: The sending node determines the first priority identifier according to the historical flow completion time (FCT) when the n receiving nodes corresponding to the coflow respectively process the data stream from the sending node. n is a positive integer greater than 1.
9. The communication method according to claim 8, wherein The sending node determines the first priority identifier according to the historical flow completion time (FCT) when the n receiving nodes corresponding to the coflow respectively process the data stream from the sending node, including: The sending node determines a reference duration according to the historical FCT when the n receiving nodes corresponding to the coflow respectively process the data stream from the sending node; the reference duration is used to indicate the coflow's completion time target (CCT). The sending node determines a first FCT in the first FCT set that is less than and closest to the reference duration; wherein, the first FCT set includes: the historical FCTs respectively corresponding to the first receiving node when processing the data stream from the sending node according to different priorities. The sending node determines the first priority identifier according to the priority corresponding to the first FCT.
10. The communication method according to any one of claims 7-9, characterized in that, The communication system is a distributed storage system, and the first receiving node and the second receiving node are respectively storage nodes in the distributed storage system.
11. The communication method according to claim 10, wherein The communication system is a distributed storage system, and the first receiving node and the second receiving node are respectively transmission nodes in the distributed storage system that are connected to storage nodes.
12. A computer-readable storage medium, characterized in that, The storage medium stores a computer program. When the computer program is executed by a sending node and a receiving node in the communication system, the communication system executes the method according to any one of claims 7-11.
13. A computer program product, characterized in that, The computer program product includes instructions. When the instructions run on a sending node and a receiving node in the communication system, the communication system executes the method according to any one of claims 7-11.
Citation Information
Patent Citations
Communication system, communication method and device
CN120238508A
Scheduling method and device of TCP co-flows in data center network
CN105827545A
Collaborative flow identification method, system and server using said method
CN107181724A
Cloud computing multistage scheduling method and system and storage medium
CN112468414A
Coflow scheduling system based on TD3 algorithm
CN116582502A