Bidirectional command protocol via a unidirectional communication connection for reliable distribution of tasks
Abstract
The present disclosure relates to techniques for handling of bidirectional command protocols via a unidirectional communication connection established between a client computing environment and a cloud-services computing environment. In one embodiment, a command request message is pushed from a service component of the cloud-services computing environment to a client gateway of the client computing environment via the unidirectional communication connection. A token indicating routing information to the service component is embedded in the pushed command request message. A command response message is received at the cloud gateway from the client gateway via a bidirectional communication connection established between the client computing environment and the cloud-services computing environment. The command response message includes the token and data associated with executing the command request message at the client computing environment. Based on the token, the command response message is routed to the service component.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method for handling request-response command protocols for communication between a first gateway of a first computing environment and a second gateway of a second computing environment, the method comprising:
at the first computing environment having a unidirectional communication connection between the first gateway and the second gateway as well as a bidirectional communication connection between the first gateway and the second gateway, the unidirectional communication connection being a connection that does not permit messages to be sent from the second gateway to the first gateway, and the bidirectional communication connection being a connection that does not permit request messages initiated by the first gateway to be sent to the second gateway:
generating, by a first component of the first computing environment, a command request message directed to a second component of the second computing environment;
in accordance with determining that the unidirectional communication connection is open, pushing, from the first component to the second gateway, the command request message via the unidirectional communication connection, wherein a token indicating routing information to the first component is embedded in the pushed command request message;
receiving, at the first gateway via the bidirectional communication connection, a command response message from the second gateway, wherein the command response message includes the token and data associated with executing the command request message at the second computing environment; and
sending, based on the token, the command response message to the first component.
2 . The method of claim 1 , wherein the first computing environment is a public computing environment and the second computing environment is a private computing environment.
3 . The method of claim 1 , wherein the first computing environment is a cloud computing environment and the second computing environment is a client computing environment.
4 . The method of claim 1 , wherein the bidirectional communication connection is a persistent communication connection that is part of a data ingestion pipeline configured to transfer streams of collected data from the second computing environment to the first computing environment.
5 . The method of claim 1 , wherein the first gateway comprises a plurality of gateway nodes, wherein the unidirectional communication connection is established between the second gateway and a first gateway node of the plurality of gateway nodes, and wherein the method further comprises:
storing, at a resources manager of the first computing environment, connection information associated with the established unidirectional communication connection, the connection information including identification information of the second gateway and second routing information to the first gateway node.
6 . The method of claim 5 , further comprising:
at the resources manager:
determining a state of the unidirectional communication connection; and
in accordance with determining, at a first time, that the state of the unidirectional communication connection is open, sending, based on the connection information, the command request message to the first gateway node, wherein the first gateway node routes the command request message to the second gateway via the unidirectional communication connection.
7 . The method of claim 6 , further comprising:
in accordance with determining, at the first time, that the state of the unidirectional communication connection is not open:
storing the command request message at the resources manager; and
upon detecting, at a second time after the first time, a change in the state of the unidirectional communication connection from not open to open, sending, based on the connection information, the stored command request message to the first gateway node, wherein the first gateway node routes the stored command request message to the second gateway via the unidirectional communication connection.
8 . The method of claim 5 , wherein the resources manager receives the command request message from the first component via a communication connection established between the first component and the resources manager, and wherein the communication connection between the first component and the resources manager remains open at least until the resources manager sends the command response message to the first component.
9 . The method of claim 5 , wherein the first gateway routes the command response message to a port of the resources manager according to the second routing information.
10 . The method of claim 1 , wherein the command request message causes the second gateway to invoke an API call to the second component, and wherein the data is obtained from the second component according to the API call.
11 . The method of claim 1 , wherein a resources manager of the first computing environment stores a plurality of pending command request messages generated by one or more additional service components of the first computing environment, and wherein the method further comprises:
pushing at least two pending command request messages of the plurality of pending command request messages to the second gateway via the unidirectional communication connection.
12 . The method of claim 11 , further comprising:
determining, based on a priority policy stored on the resources manager, an order to push the at least two pending command request messages, wherein the at least two pending command request messages are pushed to the second gateway according to the determined order.
13 . The method of claim 12 , wherein the resources manager forgoes pushing at least one of the plurality of pending command request messages to the second gateway in accordance with the priority policy.
14 . The method of claim 1 , wherein the command request message includes third routing information indicating a location of the second component in the client computing environment.
15 . A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a first computing environment, wherein the one or more programs include instructions for:
at the first computing environment, the first computing environment having a unidirectional communication connection between the first gateway and a second gateway of a second computing environment as well as a bidirectional communication connection between the first gateway and the second gateway, the unidirectional communication connection being a connection that does not permit messages to be sent from the second gateway to the first gateway, and the bidirectional communication connection being a connection that does not permit request messages initiated by the first gateway to be sent to the second gateway:
generating, by a first component of the first computing environment, a command request message directed to a second component of the second computing environment;
in accordance with determining that the unidirectional communication connection is open, pushing, from the first component to the second gateway, the command request message via the unidirectional communication connection, wherein a token indicating routing information to the first component is embedded in the pushed command request message;
receiving, at the first gateway via the bidirectional communication connection, a command response message from the second gateway, wherein the command response message includes the token and data associated with executing the command request message at the second computing environment; and
sending, based on the token, the command response message to the first component.
16 . The non-transitory computer-readable storage medium of claim 15 , wherein the first computing environment is a cloud computing environment and the second computing environment is a client computing environment.
17 . The non-transitory computer-readable storage medium of claim 15 , wherein the bidirectional communication connection is a persistent communication connection that is part of a data ingestion pipeline configured to transfer streams of collected data from the second computing environment to the first computing environment.
18 . A first computing environment implementing a first gateway and a first component, the first computing environment comprising:
one or more processors; and memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for:
at the first computing environment, the first computing environment having a unidirectional communication connection between the first gateway and a second gateway of a second computing environment as well as a bidirectional communication connection between the first gateway and the second gateway, the unidirectional communication connection being a connection that does not permit messages to be sent from the second gateway to the first gateway, and the bidirectional communication connection being a connection that does not permit request messages initiated by the first gateway to be sent to the second gateway:
generating, by a first component of the first computing environment, a command request message directed to a second component of the second computing environment;
in accordance with determining that the unidirectional communication connection is open, pushing, from the first component to the second gateway, the command request message via the unidirectional communication connection, wherein a token indicating routing information to the first component is embedded in the pushed command request message;
receiving, at the first gateway via the bidirectional communication connection, a command response message from the second gateway, wherein the command response message includes the token and data associated with executing the command request message at the second computing environment; and
sending, based on the token, the command response message to the first component.
19 . The first computing environment of claim 18 , wherein the first computing environment is a cloud computing environment and the second computing environment is a client computing environment.
20 . The first computing environment of claim 18 , wherein the bidirectional communication connection is a persistent communication connection that is part of a data ingestion pipeline configured to transfer streams of collected data from the second computing environment to the first computing environment.Join the waitlist — get patent alerts
Track US2023379401A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.