IP Library Granted Patent US 12,284,247
Granted Patent B2
US 12,284,247 · App. 18/508,201 · Granted Apr 22, 2025

State management and object storage in a distributed cloud computing network

Inventors: Kenton Taylor Varda (Palo Alto, CA); Kyle Kloepper (Champaign, IL)
Assignee: CLOUDFLARE, INC.
H04L67/1095H04L67/01H04L67/34
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,284,247
App. No.
18/508,201
Granted
Apr 22, 2025
Kind
B2
Abstract

A first compute server of a distributed cloud computing network receives a request from a first client device for an object to be handled by an object worker that includes a single instantiation of a piece of code that solely controls reading and writing access to the first object. A determination is made that the object worker is instantiated for the object and is currently running in the first compute server, and the piece of code processes the first request. The first compute server receives a message to be processed by the first object worker from a second compute server. The message includes a second request for the object from a second client device connected to the second compute server. The piece of code processes the message and transmits a reply to the second compute server.

Claims (53)

1. A method, comprising:

instantiating, at a first one of a plurality of compute servers of a distributed cloud computing network, a first single piece of code that solely controls reading and writing to an object, wherein while instantiated at the first one of the plurality of compute servers, other entities of the distributed cloud computing network communicate with the instantiation of the first single piece of code;

receiving a plurality of first requests for the object and processing the plurality of first requests with the instantiated first single piece of code at the first one of the plurality of compute servers;

determining, by the first one of a plurality of compute servers, that the object has not been requested by client devices connected to the first one of the plurality of compute servers for a first period of time; and

automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to a second one of the plurality of compute servers in response to the determining that the object has not been requested by client devices connected to the first one of the plurality of compute servers for the first period of time.

2. The method of claim 1 , wherein automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers comprises:

instantiating the first single piece of code at the second one of the plurality of compute servers and modifying a directory service to specify that the second one of the plurality of compute servers has sole control for reading and writing to the object.

3. The method of claim 2 , further comprising:

receiving, at the first one of the plurality of compute servers, a second request for the object after instantiating the first single piece of code at the second one of the plurality of compute servers and prior to modifying the directory service to specify that the second one of the plurality of compute servers has sole control for the reading and the writing to the object; and

redirecting the second request to the second one of the plurality of compute servers.

4. The method of claim 1 , wherein automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers comprises:

maintaining a tracking of one or more compute servers requesting the object over a second period of time, the one or more compute servers including the second one of the plurality of compute servers; and

identifying the second one of the plurality of compute servers as having a highest number of requests for the object over the second period of time.

5. The method of claim 1 , wherein the first single piece of code is instantiated at the first one of the plurality of compute servers as a result of the first one of the plurality of compute servers receiving a first request for the object from a client device, wherein the first one of the plurality of compute servers is closest to the client device in terms of an anycast implementation.

6. The method of claim 1 , wherein automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers comprises:

evaluating a set of one or more parameters associated with the plurality of compute servers, wherein the instantiated first single piece of code is automatically migrated to the second one of the plurality of compute servers based on the set of one or more parameters associated with the plurality of compute servers.

7. The method of claim 6 , wherein the set of one or more parameters includes a minimum total latency, wherein the second one of the plurality of compute servers has the minimum total latency of the plurality of compute servers.

8. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processing system, cause the processing system to perform operations comprising:

instantiating, at a first one of a plurality of compute servers of a distributed cloud computing network, a first single piece of code that solely controls reading and writing to an object, wherein while instantiated at the first one of the plurality of compute servers, other entities of the distributed cloud computing network communicate with the instantiation of the first single piece of code;

receiving a plurality of first requests for the object and processing the plurality of first requests with the instantiated first single piece of code at the first one of the plurality of compute servers;

determining, by the first one of a plurality of compute servers, that the object has not been requested by client devices connected to the first one of the plurality of compute servers for a first period of time; and

automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to a second one of the plurality of compute servers in response to the determining that the object has not been requested by client devices connected to the first one of the plurality of compute servers for the first period of time.

9. The non-transitory machine-readable storage medium of claim 8 , wherein automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers comprises:

instantiating the first single piece of code at the second one of the plurality of compute servers and modifying a directory service to specify that the second one of the plurality of compute servers has sole control for reading and writing to the object.

10. The non-transitory machine-readable storage medium of claim 9 , wherein the operations further comprise:

receiving, at the first one of the plurality of compute servers, a second request for the object after instantiating the first single piece of code at the second one of the plurality of compute servers and prior to modifying the directory service to specify that the second one of the plurality of compute servers has sole control for the reading and the writing to the object; and

redirecting the second request to the second one of the plurality of compute servers.

11. The non-transitory machine-readable storage medium of claim 8 , wherein automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers comprises:

maintaining a tracking of one or more compute servers requesting the object over a second period of time, the one or more compute servers including the second one of the plurality of compute servers; and

identifying the second one of the plurality of compute servers of the one or more compute servers as having a highest number of requests for the object over the second period of time.

12. The non-transitory machine-readable storage medium of claim 8 , wherein the first single piece of code is instantiated at the first one of the plurality of compute servers as a result of the first one of the plurality of compute servers receiving a first request for the object from a client device, wherein the first one of the plurality of compute servers is closest to the client device in terms of an anycast implementation.

13. The non-transitory machine-readable storage medium of claim 8 , wherein automatically migrating the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers comprises:

evaluating a set of one or more parameters associated with the plurality of compute servers, wherein the instantiated first single piece of code is automatically migrated to the second one of the plurality of compute servers based on the set of one or more parameters associated with the plurality of compute servers.

14. The non-transitory machine-readable storage medium of claim 13 , wherein the set of one or more parameters includes a minimum total latency, wherein the second one of the plurality of compute servers has the minimum total latency of the plurality of compute servers.

15. An apparatus, comprising:

a processing system; and

a non-transitory machine-readable storage medium coupled with the processing system and that provides instructions that, if executed by the processing system, cause the apparatus to perform operations including:

instantiate, at a first one of a plurality of compute servers of a distributed cloud computing network, a first single piece of code that solely controls reading and writing to an object, wherein while instantiated at the first one of the plurality of compute servers, other entities of the distributed cloud computing network communicate with the instantiation of the first single piece of code;

receive a plurality of first requests for the object and process the plurality of first requests with the instantiated first single piece of code at the first one of the plurality of compute servers;

determine, by the first one of a plurality of compute servers, that the object has not been requested by client devices connected to the first one of the plurality of compute servers for a first period of time; and

automatically migrate the instantiated first single piece of code from the first one of the plurality of compute servers to a second one of the plurality of compute servers in response to the determination that the object has not been requested by client devices connected to the first one of the plurality of compute servers for the first period of time.

16. The apparatus of claim 15 , wherein automatic migration of the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers further causes the apparatus to perform operations including:

instantiate the first single piece of code at the second one of the plurality of compute servers and modify a directory service to specify that the second one of the plurality of compute servers has sole control for reading and writing to the object.

17. The apparatus of claim 16 , wherein the instructions further cause the apparatus to perform operations including:

receive, at the first one of the plurality of compute servers, a second request for the object after instantiating the first single piece of code at the second one of the plurality of compute servers and prior to modification of the directory service to specify that the second one of the plurality of compute servers has sole control for the reading and the writing to the object; and

redirect the second request to the second one of the plurality of compute servers.

18. The apparatus of claim 15 , wherein automatic migration of the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers further causes the apparatus to perform operations including:

maintain a tracking of one or more compute servers requesting the object over a second period of time, the one or more compute servers including the second one of the plurality of compute servers; and

identify the second one of the plurality of compute servers of the one or more compute servers as having a highest number of requests for the object over the second period of time.

19. The apparatus of claim 15 , wherein the first single piece of code is instantiated at the first one of the plurality of compute servers as a result of the first one of the plurality of compute servers receiving a first request for the object from a client device, wherein the first one of the plurality of compute servers is closest to the client device in terms of an anycast implementation.

20. The apparatus of claim 15 , wherein automatic migration of the instantiated first single piece of code from the first one of the plurality of compute servers to the second one of the plurality of compute servers further causes the apparatus to perform operations including:

evaluate a set of one or more parameters associated with the plurality of compute servers, wherein the instantiated first single piece of code is to be automatically migrated to the second one of the plurality of compute servers based on the set of one or more parameters associated with the plurality of compute servers.

21. The apparatus of claim 20 , wherein the set of one or more parameters includes a minimum total latency, wherein the second one of the plurality of compute servers has the minimum total latency of the plurality of compute servers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2024
From: VARDA, KENTON TAYLOR; KLOEPPER, KYLE
To: CLOUDFLARE, INC.
Reel/Frame 069656/0866 →
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
Continuity (5)
Continuation 17958087 · Sep 30, 2022
Continuation 17346746 · Jun 14, 2021
Continuation 16696879 · Nov 26, 2019
Continuation 16425415 · May 29, 2019
Related Publication 20240089320A1 · Mar 14, 2024
References Cited (53)
US 5892900A · Ginter et al. · 1999 [cited by applicant]
US 8458125B1 · Chong, Jr. · 2013 [cited by examiner]
US 8601134B1 · Sorenson, III · 2013 [cited by examiner]
US 8639921B1 · Sorenson, III · 2014 [cited by examiner]
US 8793343B1 · Sorenson, III · 2014 [cited by examiner]
US 9411671B1 · Johnson · 2016 [cited by examiner]
US 9628473B1 · Odom · 2017 [cited by examiner]
US 9852149B1 · Taylor · 2017 [cited by examiner]
US 10152467B2 · Chan et al. · 2018 [cited by applicant]
US 10333711B2 · Fleischman · 2019 [cited by examiner]
US 10819576B2 · Seshadri et al. · 2020 [cited by applicant]
US 11070621B1 · Tornow et al. · 2021 [cited by applicant]
US 20040107342A1 · Pham et al. · 2004 [cited by applicant]
US 20090282273A1 · Hamilton, II · 2009 [cited by examiner]
US 20130117252A1 · Samaddar · 2013 [cited by examiner]
US 20140123316A1 · Leggette · 2014 [cited by examiner]
US 20140149794A1 · Shetty · 2014 [cited by examiner]
US 20140215574A1 · Erb · 2014 [cited by examiner]
US 20170318093A1 · Muhlestein et al. · 2017 [cited by applicant]
US 20170330149A1 · Hunter et al. · 2017 [cited by applicant]
US 20180114015A1 · Nuseibeh · 2018 [cited by examiner]
US 20180114334A1 · Desai et al. · 2018 [cited by applicant]
US 20180146069A1 · Du et al. · 2018 [cited by applicant]
US 20200026732A1 · Bequet et al. · 2020 [cited by applicant]
US 20200053397A1 · Zhou · 2020 [cited by examiner]
US 20200204651A1 · Xi · 2020 [cited by examiner]
US 20210026611A1 · Bequet et al. · 2021 [cited by applicant]
US 20210406381A1 · Heisrath et al. · 2021 [cited by applicant]
EP 1914655A2 · 2008 [cited by applicant]
EP 3933630A1 · 2022 [cited by applicant]
KR 1020180032524A · 2018 [cited by applicant]
WO WO2017096920A1 · 2017 [cited by examiner]
Ayache et al., “Access Control Policies Enforcement in a Cloud Environment: Openstack”, IEEE, 2015 11th International Conference on Information Assurance and Security (IAS), 2015, pp. 26-31 (7 pages). [cited by applicant]
Cabrera et al., “Softwarization and Network Coding in the Mobile Edge Cloud for the Tactile Internet”, Proceedings of the IEEE, 2018, pp. 1-14. [cited by applicant]
European search report and Search Opinion, EP App. No. 21901618.5, Oct. 10, 2024, 06 pages. [cited by applicant]
Ex Parte Quayle Action, U.S. Appl. No. 17/566,539, Dec. 22, 2023, 6 pages. [cited by applicant]
Final Office Action, U.S. Appl. No. 17/346,746, May 2, 2022, 16 pages. [cited by applicant]
How Sandstorm Works: Containerize data, not services, Feb. 28, 2019, 12 pages, downloaded at: https://web.archive.org/web/20190228074058/https:/sandstom.io/how-it-works. [cited by applicant]
International Preliminary Report on Patentability, PCT App. No. PCT/US2019/063428, Dec. 9, 2021, 6 pages. [cited by applicant]
International Search Report and Written Opinion, PCT App No. PCT/US2019/063428, Mar. 27, 2020, 9 pages. [cited by applicant]
International Search Report and Written Opinion, PCT App. No. PCT/US2021/062071, Apr. 15, 2022, 8 pages. [cited by applicant]
Joshua Fox, “When is a Singleton not a Singleton?”, Java World , Jan. 2001, 9 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 16/696,879, Aug. 18, 2020, 10 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/346,746, Feb. 22, 2022, 13 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/958,087, Mar. 15, 2023, 19 pages. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 16/425,415, mailed Aug. 1, 2019, 13 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 16/425,415, Oct. 17, 2019, 5 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 16/696,879, Feb. 11, 2021, 9 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/346,746, Sep. 13, 2022, 7 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/484,807, Dec. 15, 2021, 8 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/566,539, Mar. 13, 2024, 5 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/566,539, Mar. 20, 2024, 12 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/958,087, Jul. 12, 2023, 7 pages. [cited by applicant]