IP Library Granted Patent US 11,070,634
Granted Patent B2
US 11,070,634 · App. 16/659,853 · Granted Jul 20, 2021

Highly available private cloud service

Inventors: Kiran Bondalapati (Los Altos, CA); Ajay Gulati (Santa Clara, CA)
Assignee: Lenovo Enterprise Solutions (Singapore) Pte. Ltd.
H04L67/16H04L67/10H04L67/02
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,070,634
App. No.
16/659,853
Granted
Jul 20, 2021
Kind
B2
Abstract

A first cluster of servers maintains a shared database that stores, for each of a plurality of cloud service consumers, user interface data for the cloud service consumer, wherein each server in the first cluster can read and write to the shared database. The first cluster further receives, from a customer computer, a request to access services of an identified cloud service consumer among the plurality of cloud service consumers, wherein the customer computer is associated with a customer of the identified cloud service consumer. Still further, the first cluster retrieves the user interface data of the identified cloud service consumer from the shared database; retrieves, from a second cluster of servers maintained by the identified cloud service consumer, user data required in response to the request; and provides the user interface data of the identified cloud service consumer and the user data to the customer computer.

Claims (60)

1. One or more non-transitory machine-readable storage mediums storing one or more sequences of program instructions for operating a first cluster of servers, the program instructions being configured to be executable by one or more processors of the first cluster of servers to perform operations comprising:

maintaining a shared database that stores, for each of a plurality of cloud service consumers, user interface data that describes an appearance of a user interface for the cloud service consumer, wherein each server in the first cluster can read and write to the shared database;

receiving, from a customer computer, a request to access services of an identified cloud service consumer among the plurality of cloud service consumers, wherein the customer computer is associated with a customer of the identified cloud service consumer;

retrieving the user interface data of the identified cloud service consumer from the shared database;

retrieving, from a second cluster of servers maintained by the identified cloud service consumer, user data required in response to the request; and

providing the user interface data of the identified cloud service consumer and the user data to the customer computer.

2. The one or more non-transitory computer-readable storage mediums of claim 1 , the operations further comprising:

storing, for a plurality of messages being communicated between the cluster of servers maintained by one of the cloud service consumers and one of the customer computers through the first cluster, each message in the shared database; and

resending any of the stored messages that have not been acknowledged as having been received within a timeout period.

3. The one or more non-transitory computer-readable storage mediums of claim 1 , the operations further comprising:

running one or more first software modules on each node of the first cluster, wherein, for each of the one or more first software modules on each node, the first software module is responsible for communicating with the first software modules on other nodes of the first cluster; and

running one or more second software modules on each node of the first cluster, wherein, for each of the one or more second software modules on each node, the second software module is responsible for communicating with the second software modules on a node of the second cluster.

4. The one or more non-transitory computer-readable storage mediums of claim 3 , the operations further comprising:

running a third software module on each node of the first cluster, wherein, for each node of the first cluster, the third software module is responsible for monitoring operation of the first and second software modules on the node.

5. The one or more non-transitory computer-readable storage mediums of claim 4 , wherein the third software module executes in a host operating system of the node.

6. The one or more non-transitory machine-readable storage mediums of claim 4 , the operations further comprising:

the third software module assuring that at least a specified number of instances of the first and second software modules are executing in the first cluster or on each node of the first cluster; and

the third software module restarting an instance of the first or second software module in response to detecting that the instance of the first or second software module has ceased execution, wherein the first or second software module may be restarted on the same or different node within the first cluster.

7. The one or more non-transitory machine-readable storage mediums of claim 1 , the operations further comprising:

performing a service on each node of the first cluster by processing data retrieved from the shared database; and

storing the processed data in the shared database.

8. The one or more non-transitory machine-readable storage mediums of claim 3 , the operations further comprising:

running a plurality of user interface agents on the first cluster, wherein each user interface agent is responsible for retrieving, for each request, the user interface of the identified cloud service consumer from the shared database and providing, for each request, the user interface of the identified cloud service consumer to the web browser on the customer computer from which the request was received.

9. The one or more non-transitory machine-readable storage mediums of claim 8 , the operations further comprising:

running a load balancing software module on the first cluster for distributing a load of requests between the plurality of user interface agents, wherein each request is received from a customer computer among the plurality of customer computers.

10. The one or more non-transitory machine-readable storage mediums of claim 3 , the operations further comprising:

running a discovery service on the first cluster;

the discovery service receiving a first request for a connection to the first cluster from a software module on a node of the second cluster, wherein the first request includes an address for the software module on the node of the second cluster; and

the discovery service sending an address and an authentication token to the node of the second cluster, wherein the address sent to the node of the second cluster is for a particular instance of the second software module assigned to handle subsequent messages from the software module on the node of the second cluster.

11. The one or more non-transitory machine-readable storage mediums of claim 10 , wherein the first cluster runs a plurality of discovery services having a common address.

12. The one or more non-transitory machine-readable storage mediums of claim 10 , the operations further comprising:

the particular instance of the second software module receiving a subsequent message from the software module on the node of the second cluster, wherein the subsequent message includes an address of the software module that sent the subsequent message and an identified account of the cloud service consumer; and

the particular instance of the second software module storing, in the shared database, the address of the software module that sent the subsequent message in association with the identified account of the cloud service consumer.

13. The one or more non-transitory machine-readable storage mediums of claim 12 , wherein the first cluster runs a plurality of discovery services having a common address, and wherein the second software module assigned to handle subsequent communication with the node of the second cluster is instantiated by the discovery service in response to determining that the currently instantiated second software modules are at maximum capacity.

14. The one or more non-transitory machine-readable storage mediums of claim 12 , the operations further comprising:

receiving a user request from a customer computer through the user interface, wherein the user request identifies an account;

identifying, from the shared database, the address of the software module on the node of the second cluster that is associated with the account in the user request; and

sending the user request to the software module at the identified address for processing user data that is not available on the first cluster.

15. The one or more non-transitory computer-readable storage mediums of claim 12 , wherein the subsequent message received from the software module of the second cluster is an open HTTPS response request, the operations further comprising:

the particular instance of the second software module storing, in the shared database, an indication that there is an open HTTPS response request associated with the address of the software module that sent the subsequent message; and

the first cluster of servers further identifying, from the shared database, that the software module on the node of the second cluster has an open HTTPS response request, wherein the user request is sent to the software module in an HTTPS response to the open HTTPS response request.

16. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein communications between the first cluster of servers and the second cluster of servers are transmitted over a wide area network.

17. A method for operating a first cluster of servers, comprising:

maintaining a shared database that stores, for each of a plurality of cloud service consumers, user interface data that describes an appearance of a user interface for the cloud service consumer, wherein each server in the first cluster can read and write to the shared database;

receiving, from a customer computer, a request to access services of an identified cloud service consumer among the plurality of cloud service consumers, wherein the customer computer is associated with a customer of the identified cloud service consumer;

retrieving user interface data from the shared database;

retrieving from a second cluster of servers maintained by the identified cloud service consumer, user data required in response to the request; and

providing the user interface of the identified cloud service consumer and the user data to the customer computer.

18. The method of claim 17 , further comprising:

storing, for a plurality of messages being communicated between the second cluster of servers maintained by one of the cloud service consumers and one of the customer computers through the first cluster, each message in the shared database; and

resending any of the stored message that has not been acknowledged as having been received within a timeout period.

19. The method of claim 17 , further comprising:

running one or more first software modules on each node of the first cluster, wherein, for each of the one or more first software modules on each node of the first cluster, the first software module is responsible for communicating with first software modules on other nodes of the first cluster; and

running one or more second software modules on each node of the first cluster, wherein, for each of the one or more second software modules on each node of the first cluster, the second software module is responsible for communicating with a second software module on a node of the second cluster.

20. One or more non-transitory machine-readable storage mediums storing one or more sequences of program instructions for operating a first cluster of servers, the program instructions being configured to be executable by one or more processors of the first cluster of servers to perform operations comprising:

maintaining a shared database that stores, for each of a plurality of cloud service consumers, user interface data that describes an appearance of a user interface for the cloud service consumer, wherein each server in the first cluster can read and write to the shared database;

receiving, from each of a plurality of customer computers, a request to access services of an identified cloud service consumer among the plurality of cloud service consumers, wherein each of the customer computers is associated with a customer of one or more of the cloud service consumers;

retrieving, for each request, user interface data from the shared database and providing the user interface of the identified cloud service consumer to a web browser on the customer computer from which the request was received;

retrieving, for each request, user data of the customer associated with the customer computer from which the request was received; and

providing, for each request, the retrieved user data to the web browser on the customer computer from which the request was received, wherein the user data of the customer is retrieved from a separate cluster of servers maintained by the identified cloud service consumer that was identified in the request.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2025
From: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LIMITED
To: LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
Reel/Frame 069869/0614 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2022
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD
To: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LTD
Reel/Frame 060490/0646 →