Patent ID: 12204556

DETAILED DESCRIPTION

Embodiments of the disclosure provide a system and/or a method to provide multiple applications on multiple edge devices to receive notifications (e.g., published events) regarding files that are automatically downloaded to local storage on behalf of the applications. The multiple applications are generally not directly addressable to each other. The disclosure provides a file transfer process from applications and/or services that simplifies a use case of sending an event that has an associated file and sending the associated file to the local storage.

Referring toFIG.1, a schematic diagram illustrating a context of a system80is shown in accordance with one or more exemplary embodiments. The system80generally includes a source edge device120, a cloud device140, multiple destination edge devices160(one shown), and a communication network180. One or more files110are transferred via the communication network180.

The source edge device120implements a computer. In various embodiments, the source edge computer may be a server computer. The source edge device120(or source circuit or source edge circuit) is operational to generate a file110associated with a source event, store the file110at a source storage location, uploading the file110to the cloud device140, generate a cloud event by changing a path referenced in the source event in the source edge device120to point to a cloud storage location of the file110in the cloud device140, and transfer the cloud event to the cloud device140.

The cloud device140implements another computer. In various embodiments, the cloud computer may be a server computer. The cloud device140is in communication with the source edge device120and the destination edge device160via the communication network180. The cloud device140is remotely located (e.g., another room to another city) from the source edge device120and the destination edge device160. The cloud device140(or cloud circuit) is operational to receive the file110from the source edge device120, store the file110at the cloud storage location in the cloud device140, receive the cloud event from the source edge device120, transfer the file110to the destination edge device160, and transfer the cloud event to the destination edge device160.

The destination edge device160implements yet another computer. In various embodiments, the destination edge computer may be a server computer. The destination edge device160(or destination circuit or destination edge circuit) is operational to download the file110from the cloud device140, store the file110at a destination storage location in the destination edge device160, receive the cloud event from the cloud device140, generate a destination event by changing the path referenced in the cloud event to point to the destination storage location of the file110in the destination edge device160, publishing an availability of the file110in the destination edge device160to multiple destination subscribers in response to the destination event, and transferring the file110from the destination storage location to one or more of the destination subscribers.

The communication network180implements one or more digital communication networks. The communication network180is generally operational to transfer data between the source edge device120, the cloud device140and the destination edge device160. The communication network180may include one or more wired networks and/or one or more wireless networks. In various embodiments, the communication network180may include the Internet, cellular networks, Wi-Fi networks, Ethernet networks, and the like.

Referring toFIG.2, a schematic diagram of an example implementation of an edge-to-edge file event90in shown in accordance with one or more exemplary embodiments. The edge-to-edge file event90is implemented by the system80. The edge-to-edge file event90is illustrated transferring a file event in the source edge device120(e.g., a Device2) to the destination edge device160(e.g., a Device 1).

At a start91, the destination edge device160may subscribe92to a file-based event produced in the source edge device120through normal publication-subscription design patterns. The subscription92from the destination edge device160is sent to the source edge device120via the cloud device140(not shown) and registered94at a service bus of the source edge device120. At a later time, a producer process in the source edge device120publishes96a file event with a local file reference (or location or address). The source edge device120automatically uploads98one or more files associated with the file event and subsequently sends a notification to the destination edge device160. The destination edge device160receives the notification that the file event has occurred and automatically downloads100the files to local storage location(s). The destination edge device160updates the file event with a new local path to the file and a re-publishes102the event to any applications that are currently subscribed92to the file event.

Referring toFIG.3, a schematic diagram of an example implementation of an edge-to-edge transfer is shown in accordance with one or more exemplary embodiments. The edge-to-edge transfer is implemented by the system80.

Referring toFIG.3andFIG.1, an edge file upload process190occurs in the source edge device120to upload a file110to the cloud device140in response to a source event in the source edge device120. Once the upload has completed, an edge file download process192begins. The edge file download process192downloads the file110from the cloud device140to the destination edge device160.

After the download has completed, the cloud device140may clean up a temporary storage location where the file110was stored in the cloud device140. An attributes of the file event may be a time-to-live (TTL). When the time-to-live of the event has expired, the destination edge device160flushes the downloaded file110from the local memory. The uploading190to the cloud device140and the downloading192from the cloud device140may be implemented using one or more standard protocols, such as the secure file transfer protocol (SFTP) or the hypertext transfer protocol (HTTP). Other transfer protocols supported by the communication network180may be implemented to meet the design criteria of a particular implementation.

Referring toFIG.4, a schematic diagram of an example implementation of an edge upload is shown in accordance with one or more exemplary embodiments. The edge-upload is implemented by the source edge device120and the cloud device140in communication with each other via the communication network180(FIG.1).

The source edge device120includes a source producer122, a source event122bus, a source streamer126, and a source file-streamer128. The cloud device140includes a cloud event bus144, a cloud streamer146, a cloud file-streamer148, and optionally one or more cloud subscribers150.

The source producer122implements one or more software programs. The source producer122is operational to generate a source event132and publish the source event132to the source event132bus. The source producer122is also operational to generate one or more files110associated with the source event132(one shown). The file110may have a file path112to a source storage location134in the source edge device120.

The source event bus124is operational to route the source event132to the source streamer126.

The source streamer126is operational to detect if the source event132is of a particular type (e.g., a file.v1 type). The particular type indicates that the file110is associated with (e.g., referenced in) the source event132. In response to the detection, the source streamer126issues a source command138(CMD1) to the source file-streamer128. The source command138triggers the upload190of the file110to the cloud device140. Once the upload190of the file110is complete, the source streamer126is further operational to generate a cloud event152by changing the file path112referenced in the source event132to point to a cloud storage location of the file110in the cloud device140. As such, the cloud event152references the cloud storage location154of the file110as stored in the cloud device140. The source streamer126subsequently transfers the cloud event152to the cloud device140via the source file-streamer128.

The source file-streamer128is operational to communicate with the cloud file-streamer148in the cloud device140. The source file-streamer128may upload the file110to the cloud file-streamer148in response to the source command138from the source streamer126. The files110associated with the file event are uploaded using file transfer software such as SFTP or HTTP. Other file transfer protocols may be implemented to meet the design criteria of a particular application. Once the upload is complete136(Complete1), the source streams notifies the source streamer126. The source file-streamer128may also transfer the cloud event152to the cloud file-streamer148.

The cloud file-streamer148is operational to communicate with the source file-streamer128in the source edge device120. The cloud file-streamer148may receive the file110from the source file-streamer128, and transfer the file110to the cloud streamer146. The cloud file-streamer148may also receive the cloud event152from the source file-streamer128, and transfer the cloud event152to the cloud streamer146.

The cloud streamer146is operational to transfer the cloud event152as received from the cloud file-streamer148to the cloud event bus144. The cloud streamer146is also operational to store the file110at the cloud storage location. In response to expiration of the time-to-live timer of the cloud event152, the cloud streamer146flushes (or deletes)194the file110from local memory.

The cloud event bus144is operational to route the cloud event152the cloud subscribers150that have subscribed to the source event132in the source edge device120. The cloud subscribers150may receive the cloud event152as a substitute for the original source event132. The cloud event152contains the new cloud storage location154into the cloud memory where the files110are located. The cloud subscribers150may access the files110from the (local) cloud storage location154.

The cloud subscribers150implement one or more software programs. The cloud subscribers150are operational to subscribe to the source event132and access the file110from the cloud storage location154in response to the source event132being published.

An example pseudo code for the file upload may be as follows:

// File eventSE: {“id” : “203ccbe6-d1e6-41c9-abe0-123456789abc”,“source” : “ultifi://SourceEdgeDevice/service/1/file_event”,“specversion” : “1”,“type” : “file.v1”,“data” : “file:///tmp/dump.txt”}// Same as SE with change belowCE: {“data” : “file:///tmp/0HZBtvqwRm3TTPjjWKoz.txt”}//CMD: PULLsftp tmp/dump.txt USERINFO@CloudDevice/tmp/0HZBtvqwRm3TTPjjWKoz.txt

Referring toFIG.5, a schematic diagram of an example implementation of an edge download is shown in accordance with one or more exemplary embodiments. The edge download is implemented by the cloud device140and the destination edge device160in communication with each other via the communication network180(FIG.1).

The destination edge device160includes a source producer122, a destination event bus164, a destination streamer166, a destination file-streamer168, and one or more destination subscribers170. The cloud device140may also include a cloud producer142.

The cloud producer142implements one or more software programs. In various situations, the cloud producer142is operational to generate the cloud event152and publish the cloud event152to the cloud event bus144. The cloud producer142is also operational to generate the one or more files110associated with the cloud event152(one shown). The file110may have the file path112to the cloud storage location in the cloud device140. In other situations, the cloud event152and the file110may be received from the source edge device120, as shown inFIG.4.

The cloud event bus144is operational to route the cloud event152from the cloud producer142to the cloud streamer146.

The cloud streamer146is operational to send the cloud event152and the file110to the destination edge device160via the cloud file-streamer148.

The cloud file-streamer148is operational to communicate with the destination file-streamer168in the destination edge device160. The destination file-streamer168may download192the file110to the destination file-streamer168. The files110associated with the file event are downloaded using file transfer software such as SFTP or HTTP. Other file transfer protocols may be implemented to meet the design criteria of a particular application.

The destination file-streamer168is operational to communicate with the cloud file-streamer148in the cloud device140. The destination file-streamer168may also receive the cloud event152from the cloud file-streamer148, and transfer the cloud event152to the destination streamer166. The destination file-streamer168may receive (download) the file110from the cloud file-streamer148, and transfer the file110to the destination streamer166. Once the download is complete176(Complete2), the destination file-streamer168notifies the destination streamer166.

The destination streamer166is operational to store the file110at the destination storage location174. The destination streamer166is also operational to detect if the cloud event152is of a particular type (e.g., a file.v1 type). The particular type indicates that the file110is associated with (e.g., referenced in) the cloud event152. In response to the detection, the destination streams issues a destination command178(CMD2) to the destination file-streamer168. The destination command178triggers the download of the file110to the destination edge device160. Once the download of the file110is complete176, the destination streamer166is further operational to generate a destination event172by changing the file path112referenced in the cloud event152to point to the destination storage location174of the file110in the destination edge device160. As such, the destination event172references the destination storage location174of the file110as stored in the destination edge device160. The destination streamer166subsequently transfers the destination event172to the destination event bus164. In response to expiration of the time-to-live timer of the cloud event152, the destination streamer166flushes (or deleted)196the file110from the local memory.

The destination event bus172is operational to route the destination event172the destination subscribers170that have subscribed to the cloud event152in the cloud device140. The destination subscribers170may receive the destination event172as a substitute for the original cloud event152. The destination event172contains the new destination storage location174into the destination memory where the files110are located. The destination subscribers170may access files110from the (local) destination storage location174.

The destination subscribers170implement one or more software programs. The destination subscribers170are operational to subscribe to the source event132and access the file110from the destination storage location174in response to the source event132being published.

An example pseudo code for the file download may be as follows:

// File eventCE: {“id” : “203ccbe6-d1e6-41c9-abe0-123456789abc”,“source” : “ultifi://CloudDevice/service/1/file_event”,“specversion” : “1”,“type” : “file.v1”,“data” : “file:///tmp/dump.txt”}// Same as CE with change belowDE: {“data” : “file:///tmp/0HZBtvqwRm3TTPjjWKoz.txt”}//CMD2: PULLsftp DestEdgeDevice/tmp/dump.txt /tmp/0HZBtvqwRm3TTPjjWKoz.txt

Referring toFIG.6, a flow diagram of an example method200for end-to-end event flows that contain file locations is shown in accordance with one or more exemplary embodiments. The method (or process)200is implemented by the system80. The method200generally includes steps202to220, as illustrated. The sequence of steps is shown as a representative example. Other step orders may be implemented to meet the criteria of a particular application.

Referring toFIGS.3to6, in the step202the file110associated with the source event132is stored at a source storage location134in the source edge device120. The file110is uploaded in the step204from the source edge device120to the cloud device140. The file110is stored at the cloud storage location in the cloud device140in the step206.

In the step208, the source edge device120generate a cloud event152by changing the file path112referenced in the source event132to point to the cloud storage location of the file110in the cloud device140. The cloud event152is transferred in the step210from the source edge device120to the cloud device140. The cloud event152is subsequently transferred in the step212from the cloud device140to the destination edge device160. The destination edge device160downloads the file110from the cloud device140in the step214.

In the step216, the destination edge device160generates a destination event172by changing the file path112referenced in the cloud event152to point to the designation storage location of the file110in the destination edge device160. The availability222of the file110in the destination edge device160is published in the step218to the destination subscribers170in response to the destination event172. The file110is transferred to the destination storage location174in the destination edge device160to one or more of the destination subscribers170seeking in the step220.

Referring toFIG.7, a flow diagram of an example method for end-to-end event uploading flows that contain file locations is shown in accordance with one or more exemplary embodiments. The method (or process)240is implemented by the system80. The method240generally includes steps242to272, as illustrated. The sequence of steps is shown as a representative example. Other step orders may be implemented to meet the criteria of a particular application.

Referring toFIG.7andFIG.4, in the step242the source producer122may generate the source event132. The file110associated with the source event132is stored in the step244at a source storage location134in the source edge device120. The source event132is published to the source event bus124in the step246.

In the step248, the source event132is routed to the source streamer126. The source streamer126detects in the step250that the file110is associated with the source event132. In response to the detection, the source file-streamer128uploads the file110to the cloud file-streamer148in the step252.

In the step254, upon detecting the completion136of the upload of the file110from the source edge device120to the cloud device140, the source file-streamer128notifies the source streamer126. The generating of the cloud event152in the source edge device120is in response to the completion136as detected. The cloud event152is sent in the step256from the source streamer126to the source file-streamer128. The source file-streamer128uploads the file110from the source storage location134to the cloud file-streamer148in the step258.

In the step260, the cloud file-streamer148stores the file110received from the source file-streamer128at the cloud storage location in the cloud device140. A cloud event152is generated by the source streamer126in the step262by changing the file path112referenced in the source event132to point to the cloud storage location of the file110in the cloud device140. The cloud event152is transferred from the source edge device120(the source streamer126) to the cloud device140in the step264.

In the step266, the cloud device140receives the cloud event152from the source edge device120. The cloud event152is sent in the step268from the cloud streamer146to the cloud event bus. The availability282of the file110in the cloud device140is transferred from the cloud event bus to the cloud subscribers150in response to the cloud event152in the step270. The file110is transferred in the step272from the cloud storage location to one or more of the cloud subscribers150seeking the file110.

Referring toFIG.8, a flow diagram of an example method for end-to-end event downloading flows that contain file locations is shown in accordance with one or more exemplary embodiments. The method (or process)300is implemented by the system80. The method300generally includes steps302to324, as illustrated. The sequence of steps is shown as a representative example. Other step orders may be implemented to meet the criteria of a particular application. The method begins with the cloud event152and the file110being initially generated within the cloud device140. Alternatively, the cloud event152and the file110are received by the cloud device140from the source edge device120.

Referring toFIG.8andFIG.5, in the step302a cloud producer142generates a cloud event152. The file110associated with the cloud event152is stored in the step304at the cloud storage location in the cloud device140. The cloud event152is published to the cloud event bus144in the step306. The cloud event152is routed to the cloud streamer146in the step308.

In the step310, the cloud streamer146transfers the cloud event152to the destination streamer166in the destination edge device160. The destination streamer166detects in the step312that the file110is associated with the cloud event152. The detection triggers the download of the file110from the cloud file-streamer148to the destination file-streamer168in the step314.

In the step316, the destination streamer166detects the completion176of the download of the file110from the cloud device140to the destination edge device160. The file110is stored in the step318at the destination storage location174in the destination edge device160. The destination event172is generated destination edge device160by changing the file path112referenced in the cloud event152to point to the destination storage location174of the file110in the destination edge device160in the step320.

In the step322, the destination streamer166publishes the availability222of the file110in the destination edge device160to the destination subscribers170in response to the destination event172. The file110is transferred in the step324from the destination storage location174to one or more of the destination subscribers170that seek the file110.

Embodiments of the disclosure combines event transfers and file transfers, as part of a single notification process among edge devices in a communication network180. File information is transferred seamlessly to the producers and consumers making the file110available to multiple consumers without each consumer requesting the content.

Embodiments of the disclosure generally provide a method for end-to-end event flows that contain file locations. Between a source edge device and a cloud device, the method includes storing a file associated with a source event at a source storage location in the source edge device, uploading the file from the source edge device to the cloud device, storing the file at a cloud storage location in the cloud device, generating a cloud event by changing a file path referenced in the source event in the source edge device to point to the cloud storage location of the file in the cloud device, and transferring the cloud event from the source edge device to the cloud device. Between the cloud device and a destination edge device, the method further includes transferring the cloud event from the cloud device to the destination edge device, downloading the file from the cloud device to the destination edge device, generating a destination event by changing the file path referenced in the cloud event to point to a destination storage location of the file in the destination edge device, publishing an availability of the file in the destination edge device to a plurality of destination subscribers in response to the destination event, and transferring the file from the destination storage location to one or more of the plurality of destination subscribers.

Numerical values of parameters (e.g., of quantities or conditions) in this specification, including the appended claims, are to be understood as being modified in each instance by the term “about” whether or not “about” actually appears before the numerical value. “About” indicates that the stated numerical value allows some slight imprecision (with some approach to exactness in the value; about or reasonably close to the value; nearly). If the imprecision provided by “about” is not otherwise understood in the art with this ordinary meaning, then “about” as used herein indicates at least variations that may arise from ordinary methods of measuring and using such parameters. In addition, disclosure of ranges includes disclosure of values and further divided ranges within the entire range. Each value within a range and the endpoints of a range are hereby disclosed as a separate embodiment.

While the best modes for carrying out the disclosure have been described in detail, those familiar with the art to which this disclosure relates will recognize various alternative designs and embodiments for practicing the disclosure within the scope of the appended claims.