IP Library Granted Patent US 11,470,146
Granted Patent B2
US 11,470,146 · App. 16/510,915 · Granted Oct 11, 2022

Managing a cloud-based distributed computing environment using a distributed database

Inventors: Jian Xing (Pleasanton, CA); Qian Zhang (Sunnyvale, CA); Pu Paul Zhang (San Jose, CA)
Assignee: Panzura, LLC
H04L67/1008G06F11/1464G06F11/3476G06F16/2228G06F16/24G06F16/27H04L67/101H04L67/75
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 11,470,146
App. No.
16/510,915
Granted
Oct 11, 2022
Kind
B2
Abstract

The disclosed embodiments disclose techniques for managing a cloud-based distributed computing environment (CBDCE) that comprises multiple geographically-distributed compute nodes. Multiple services simultaneously execute on the CBDCE compute nodes, with each service comprising multiple service instances that simultaneously execute on multiple distinct compute nodes of the CBDCE. During operation, the system uses a distributed database to track the status of the CBDCE to ensure the ongoing stability and scalability of the CBDCE. Upon receiving a request that is associated with the configuration of the CBDCE, a service accesses CBDCE status information from the distributed database to respond to the request.

Claims (104)

1. A computer-implemented method for managing a cloud-based distributed computing environment (CBDCE), wherein the CBDCE comprises multiple geographically-distributed compute nodes, wherein multiple services simultaneously execute on the CBDCE compute nodes, wherein each service comprises multiple service instances that simultaneously execute on multiple distinct compute nodes of the CBDCE, the method comprising:

using a distributed database to track status of the CBDCE to ensure ongoing stability and scalability of the CBDCE, wherein the distributed database comprises multiple, distributed database instances executing on multiple, distinct CBDCE compute nodes, wherein the distributed database tracks a list of pending service instances that are queued to execute in the CBDCE, and wherein the CBDCE compute nodes periodically query the distributed database for changes to the list of pending service instances;

receiving a request that adds an additional instance of a specific distributed service to the list of pending service instances; and

upon detecting attempts from multiple CBDCE nodes to simultaneously execute the additional instance, allowing a specific target CBDCE node to execute the additional instance using a set of global locks in the distributed database, wherein a quorum of the distributed database instances selects and grants the specific target CBDCE node permission to execute the additional instance of the specific distributed service;

wherein the specific target CBDCE node contacts a first distributed database instance of the distributed database to check the list of pending service instances in the same timeframe that a second CBDCE node contacts a second distributed database instance of the distributed database to check the list of pending service instances;

wherein the specific target CBDCE node and the second CBDCE node determine respectively from the first distributed database instance and the second distributed database instance that the additional instance has been added to the list of pending service instances;

wherein the specific target CBDCE node requests via the first distributed database instance to execute the additional instance and the second CBDCE node requests via the second distributed database instance to execute the additional instance;

wherein the first distributed database instance and the second distributed database instance forward multiple execute requests for the additional instance to the multiple, distributed database instances of the distributed database, and the quorum grants the specific target CBDCE node the set of global locks;

wherein, upon receiving the set of global locks, the specific target CBDCE node executes the additional instance and the distributed database removes the additional instance from the list of pending service instances; and

where, upon not receiving the set of global locks, the second CBDCE node subsequently determines from the second distributed database instance that the additional instance is no longer on the list of pending service instances and abandons attempts to execute the additional instance.

2. The computer-implemented method of claim 1 ,

wherein the CBDCE executes one or more services, wherein each service is a distributed application that comprises multiple service instances that simultaneously execute on two or more of the distinct CBDCE compute nodes;

wherein a management service that comprises multiple management service instances simultaneously executes on two or more of the distinct CBDCE compute nodes;

wherein the management service tracks and manages the executing services and their multiple service instances using the distributed database; and

wherein the distributed database serves as a common but distributed, scalable, and fault-tolerant point-of-contact and tracking mechanism for all of the services executing in the CBDCE.

3. The computer-implemented method of claim 2 , wherein tracking the status of the CBDCE further comprises:

creating, monitoring, and maintaining a real-time status view for the CBDCE compute nodes and the services that are executing in the CBDCE;

storing the status view in the distributed database; and

updating the status view on an ongoing basis across changes to current set and status of the CBDCE compute nodes and executing services.

4. The computer-implemented method of claim 3 ,

wherein the request comprises a status query that requests real-time status information for the CBDCE that comprises:

a set of compute nodes participating in the CBDCE;

a set of services and service instances executing on each CBDCE compute node;

current operating status for each compute node in the set of compute nodes participating in the CBDCE;

wherein the management service accesses the status view in the distributed database to provide the requested information.

5. The computer-implemented method of claim 4 , wherein the status query further requests information for a specified service comprising:

number of service instances that are currently executing in the CBDCE for the specified service;

which CBDCE compute nodes the service instances of the specified service are executing on;

the status and load of the service instances for the specified service; and

which of the service instances for the specified service are currently collaborating with each other and with the service instances of other services executing in the CBDCE.

6. The computer-implemented method of claim 3 ,

wherein any service instance that is associated with any of the multiple services executing in the CBDCE is not limited from executing on any of the CBDCE compute nodes;

wherein the management service is a monitoring service that handles service failures and ensures high availability for the multiple services executing in the CBDCE;

wherein the request is received from a monitoring service instance that has determined that the specific distributed service needs additional computing resources; and

wherein the monitoring service adds one or more additional service instances for the specific distributed service to the list of pending service instances to be executed in the CBDCE.

7. The computer-implemented method of claim 6 ,

wherein each CBDCE compute node is a compute resource that executes multiple service instances in at least one of multiple distinct virtual machines or multiple distinct physical processor cores;

wherein each CBDCE compute node is configured to periodically contact any of the multiple distributed database instances to determine whether the list of pending service instances includes any additional service instances that need to be executed for the CBDCE; and

wherein a given CBDCE compute node, upon determining that a pending service instance has been added to the list of pending service instances, considers a set of decision criteria to determine whether the pending service instance should be executed on the given CBDCE compute node.

8. The computer-implemented method of claim 7 , wherein the set of decision criteria comprises:

a set of local resources in the given CBDCE compute node that comprise processing capabilities, memory size and speed, local storage size, and network bandwidth and network latency to one or more other CBDCE compute nodes;

a set of specific resource and location requirements for the pending service instance that are disclosed in the list of pending service instances; and

whether other service instances of the same type as the pending service instance are already executing in the given CBDCE compute node.

9. The computer-implemented method of claim 8 ,

wherein multiple workload service instances for a workload service work together cooperatively to scalably provide a given workload service to clients;

wherein a specific service instance for the workload service does not receive point to point updates from all other peer workload service instances for the workload service, but instead queries the distributed database via any distributed database instance to receive updates from its peer workload service instances; and

wherein the specific service instance, upon determining that it is overloaded, submits a request to instantiate additional instances of the workload service to the list of pending service instances via any of the distributed database instances.

10. The computer-implemented method of claim 9 ,

wherein the workload service is a distributed data storage application that presents client applications with an abstraction of buckets of stored objects and manages how these stored objects are stored in a cloud storage system;

wherein the distributed data storage application uses the distributed database to:

provide a distributed time-series database that provides extended snapshot, roll-back, and clone capabilities for an underlying cloud data storage system; and

track a set of stored objects that are being cached by service instances of a data caching service that is associated with the distributed data storage application, wherein the service instances of the data caching service update the distributed database to reflect the set of stored objects that they are caching and, upon receiving an access request from the distributed data storage application, query the distributed database and communicate among themselves to determine if a requested object is being cached in one of the service instances of the data caching service;

wherein a first portion of the distributed database that provides service-specific capabilities is distinct from and kept separate from a second portion of the distributed database that stores the status view, but both sets of capabilities are accessed via the same distributed database instances.

11. The computer-implemented method of claim 10 , wherein multiple management services execute in parallel with multiple workload services in the CBDCE, with the workload services handling incoming client requests and the management services monitoring, managing, and maintaining efficient operation of the CBDCE nodes and services.

12. The computer-implemented method of claim 11 ,

wherein the monitoring service monitors which services instances are executing on each given node and analyzes the status view to determine whether additional service instances need to be added for each executing service; and

wherein the monitoring service detects a node failure via the status view and, in response to the node failure, determines from the status view a set of service instances that were executing in the failed node, updates the status view to reflect the failed node, and queues additional service instances via the list of pending service instances as needed to maintain efficient operation of the services that are executing in the CBDCE.

13. The computer-implemented method of claim 12 , wherein additional distributed management services executing in the CBDCE comprise:

a policy management service;

a garbage collection service;

a backup service;

a search and indexing service; and

a logging service.

14. The computer-implemented method of claim 13 ,

wherein the policy management service comprises multiple service instances that track and enforce policy parameters for high availability, replication, deduplication, backups, logging, and garbage collection;

wherein new nodes and services being initialized in the CBDCE are configured to query the policy management service to receive a set of policy parameters; and

wherein the policy management service monitors policy adherence by checking the status view and outputs of other services via the distributed database.

15. The computer-implemented method of claim 13 ,

wherein service instances of the garbage collection service cooperatively remove obsolete and unneeded data from the CBDCE and cloud storage system;

wherein the service instances of the garbage collection service determine via the policy management service a policy for determining how old versions of objects should be managed in the cloud storage system; and

wherein the service instances of the garbage collection service scan the distributed database to determine and manage any old, unreferenced objects that are no longer needed based on the policy.

16. The computer-implemented method of claim 15 , wherein the service instances of the garbage collection service communicate via the distributed database to claim and identify different portions of object space that they will be scanning and operating upon to ensure that their respective garbage collection efforts do not collide.

17. The computer-implemented method of claim 13 ,

wherein the CBDCE executes multiple, distinct distributed databases to support different sets of non-overlapping services;

wherein a given CBDCE node executes multiple distributed database service instances that store different data sets and do not interact with each other;

wherein new services that are being initiated are configured with a specific set of contact information that includes look-up information for the set of distributed databases and peer services that a new service will interact with; and

wherein management services simultaneously interact with both of the multiple, distinct distributed databases to ensure efficient resource allocation and operation for the CBDCE.

18. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for managing a cloud-based distributed computing environment (CBDCE), wherein the CBDCE comprises multiple geographically-distributed compute nodes, wherein multiple services simultaneously execute on the CBDCE compute nodes, wherein each service comprises multiple service instances that simultaneously execute on multiple distinct compute nodes of the CBDCE, the method comprising:

using a distributed database to track status of the CBDCE to ensure ongoing stability and scalability of the CBDCE, wherein the distributed database comprises multiple, distributed database instances executing on multiple, distinct CBDCE compute nodes, wherein the distributed database tracks a list of pending service instances that are queued to execute in the CBDCE, and wherein the CBDCE compute nodes periodically query the distributed database for changes to the list of pending service instances;

receiving a request that adds an additional instance of a specific distributed service to the list of pending service instances; and

upon detecting attempts from multiple CBDCE nodes to simultaneously execute the additional instance, determining a specific target CBDCE node that will execute the additional instance using a set of global locks in the distributed database, wherein a quorum of the distributed database instances selects and grants the specific target CBDCE node permission to execute the additional instance of the specific distributed service;

wherein the specific target CBDCE node contacts a first distributed database instance of the distributed database to check the list of pending service instances in the same timeframe that a second CBDCE node contacts a second distributed database instance of the distributed database to check the list of pending service instances;

wherein the specific target CBDCE node and the second CBDCE node determine respectively from the first distributed database instance and the second distributed database instance that the additional instance has been added to the list of pending service instances;

wherein the specific target CBDCE node requests via the first distributed database instance to execute the additional instance and the second CBDCE node requests via the second distributed database instance to execute the additional instance;

wherein the first distributed database instance and the second distributed database instance forward multiple execute requests for the additional instance to the multiple, distributed database instances of the distributed database, and the quorum grants the specific target CBDCE node the set of global locks;

wherein, upon receiving the set of global locks, the specific target CBDCE node executes the additional instance and the distributed database removes the additional instance from the list of pending service instances; and

where, upon not receiving the set of global locks, the second CBDCE node subsequently determines from the second distributed database instance that the additional instance is no longer on the list of pending service instances and abandons attempts to execute the additional instance.

19. A system for a cloud-based distributed computing environment (CBDCE), wherein the CBDCE comprises multiple geographically-distributed compute nodes, wherein multiple services simultaneously execute on the CBDCE compute nodes, wherein each service comprises multiple service instances that simultaneously execute on multiple distinct compute nodes of the CBDCE, comprising:

a compute node comprising: a processor that supports executing multiple different service instances in distinct virtual machines, and a storage management mechanism;

a specific target CBDCE node;

a second CBDCE node;

a first distributed database instance; and

a second distributed database instance,

wherein the processor is configured to:

execute an instance of a management service that uses a distributed database to track status of the CBDCE to ensure ongoing stability and scalability of the CBDCE, wherein the distributed database comprises multiple, distributed database instances executing on multiple, distinct CBDCE compute nodes, wherein the distributed database tracks a list of pending service instances that are queued to execute in the CBDCE, and wherein the CBDCE compute nodes periodically query the distributed database for additions to the list of pending service instances;

cache status information for the CBDCE using the storage management mechanism;

receive a request that adds an additional instance of a specific distributed service to the list of pending service instances; and

upon detecting attempts from multiple CBDCE nodes to simultaneously execute the additional instance, contact the distributed database to determine the specific target CBDCE node that will execute the additional instance using a set of global locks in the distributed database, wherein a quorum of the distributed database instances selects and grants the specific target CBDCE node permission to execute the additional instance of the specific distributed service;

wherein the specific target CBDCE node contacts the first distributed database instance of the distributed database to check the list of pending service instances in the same timeframe that the second CBDCE node contacts the second distributed database instance of the distributed database to check the list of pending service instances;

wherein the specific target CBDCE node and the second CBDCE node determine respectively from the first distributed database instance and the second distributed database instance that the additional instance has been added to the list of pending service instances;

wherein the specific target CBDCE node requests via the first distributed database instance to execute the additional instance and the second CBDCE node requests via the second distributed database instance to execute the additional instance,

wherein the first distributed database instance and the second distributed database instance forward multiple execute requests for the additional instance to the multiple, distributed database instances of the distributed database, and the quorum grants the specific target CBDCE node the set of global locks;

wherein, upon receiving the set of global locks, the specific target CBDCE node executes the additional instance and the distributed database removes the additional instance from the list of pending service instances; and

where, upon not receiving the set of global locks, the second CBDCE node subsequently determines from the second distributed database instance that the additional instance is no longer on the list of pending service instances and abandons attempts to execute the additional instance.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 25, 2023
From: PANZURA, LLC
To: ALTER DOMUS (US) LLC
Reel/Frame 064716/0982 →
RELEASE OF SECURITY INTEREST Recorded Jun 16, 2023
From: CANADIAN IMPERIAL BANK OF COMMERCE
To: PANZURA, LLC
Reel/Frame 064006/0786 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR'S NAME AND EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 059744 FRAME: 0965. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 22, 2023
From: PANZURA, LLC
To: CANADIAN IMPERIAL BANK OF COMMERCE
Reel/Frame 062955/0518 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY DATA FROM PANZURRA, LLC TO PANZURA, LLC AND CORRECT PROPERTY TYPES TO PATENT FOR PROPERTIES 31-34 AND 39 PREVIOUSLY RECORDED ON REEL 059744 FRAME 0965. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Feb 17, 2023
From: PANZURA, LLC
To: CANADIAN IMPERIAL BANK OF COMMERCE
Reel/Frame 062928/0524 →
SECURITY INTEREST Recorded Apr 30, 2022
From: PANZURRA, LLC
To: CANADIAN IMPERIAL BANK OF COMMERCE
Reel/Frame 059744/0965 →
CHANGE OF ADDRESS Recorded Apr 1, 2022
From: PANZURA, LLC
To: PANZURA, LLC
Reel/Frame 059570/0712 →
MERGER Recorded Jan 5, 2022
From: PANZURA, INC.
To: NEW PANZURA, LLC
Reel/Frame 058557/0023 →
CHANGE OF NAME Recorded Jan 5, 2022
From: NEW PANZURA, LLC
To: PANZURA, LLC
Reel/Frame 058645/0527 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2019
From: XING, JIAN; ZHANG, QIAN; ZHANG, PU PAUL
To: PANZURA, INC.
Reel/Frame 049947/0418 →
Continuity (3)
Continuation In Part 16216890 · Dec 11, 2018
Provisional Application 62722892 · Aug 25, 2018
Related Publication 20200068010A1 · Feb 27, 2020