IP Library › Granted Patent US 11,363,112
Granted Patent B2
US 11,363,112 · App. 16/266,770 · Granted Jun 14, 2022

High-density multi-tenant distributed cache as a service

Inventors: Perraju Bendapudi (Hyderabad, IN); Hari Krishnan S. (Hyderabad, IN); Jithendra K. Veeramachaneni (Hyderabad, IN); Jagan M. Peri (Hyderabad, IN); Jatin Kakkar (Hyderabad, IN); Amit Kumar Yadav (New Delhi, IN)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04L67/2842G06F21/335H04L63/0807H04L67/1002G06F2212/314H04L41/5096H04L67/288
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,363,112
App. No.
16/266,770
Granted
Jun 14, 2022
Kind
B2
Abstract

A multi-tenant, elastically scalable cache as a service is disclosed. Embodiments of the cache service eliminate the need for applications to manage their own cache tier. The multi-tenant cache service is implemented by maintaining/creating multiple named caches in a cache cluster and mapping each tenant's cache to a named cache in the cluster. Strict quotas are enforced on cache sizes This allows caches with different replication attributes to co-exist on the same cache server, allows migration of a cache from one cluster to another for load balancing purposes, and allows a cache to inflate/deflate to meet business needs. A network load balancer is used to route cache items to servers.

Claims (51)

1. A method for provisioning a multi-tenant cache server, comprising:

receiving, at a computer system, a request to create a new multi-tenant cache on a cloud computing system for an application, the cloud computing system comprising a cache cluster to host the new multi-tenant cache, wherein the cache cluster comprises a plurality of front-end gateway server nodes and a plurality of back-end cache servers;

provisioning an access control endpoint associated with a reserved space on one or more back-end cache servers from the plurality of back-end cache servers;

providing a shared key and the access control endpoint to a client device;

providing a private version of the shared key to a front-end gateway server node from the plurality of front-end gateway server nodes; and

in response to the application passing the shared key as an input and based on the front-end gateway server node having the private version of the shared key thereon, granting access to the reserved space via the front-end gateway server node.

2. The method of claim 1 , wherein granting access to the reserved space comprises:

returning a ticket to the client device for caching on the client device; and

granting access to the reserved space based on validation of the ticket received from the client device.

3. The method of claim 2 , wherein the ticket is associated with an expiration period during which the client device can access the reserved space by providing the ticket to the front-end gateway server node.

4. The method of claim 3 , further comprising:

receiving, from the client device, a request to access the reserved space, the request comprising the ticket cached on the client device; and

in response to determining that the expiration period has elapsed, providing, to the client device, a rejection of the request to access the reserved space.

5. The method of claim 2 , wherein the front-end gateway server node uses the private version of the shared key to decrypt user data to authenticate the client device prior to granting access to the reserved space.

6. The method of claim 1 , wherein the plurality of back-end cache servers comprises a ring network of server devices, wherein the plurality of front-end gateway server nodes track location of data within the ring of network server devices.

7. The method of claim 1 , further comprising identifying the cache cluster to host the new multi-tenant cache based on a requested cache size included within the request to create the new multi-tenant cache.

8. The method of claim 1 , further comprising partitioning data of the reserved space across multiple back-end cache servers of the plurality of back-end cache servers such that each tenant associated with the new multi-tenant cache is assigned a uniquely named cache, wherein partitioning data of the reserved space comprises assigning multiple domain names to a common virtual internet protocol (VIP).

9. The method of claim 1 , wherein the front-end gateway server node is coupled to the plurality of back-end cache servers within the cache cluster to minimize a number of hops between the client device and the reserved space.

10. The method of claim 1 , wherein the front-end gateway server node is a first front-end gateway server node from multiple front-end gateway server nodes each having routing information stored thereon indicating a location of the reserved space on the one or more back-end cache servers.

11. The method of claim 1 , wherein the front-end gateway server node is configured to update the routing information in an event that the one or more back-end cache servers go down and causing user data from the reserved space to be moved to a second one or more back-end cache servers from the plurality of back-end cache servers.

12. The method of claim 1 , wherein granting access to the reserved space includes the front-end gateway server node retrieving data from the reserved space and relaying the data to the client device.

13. A system comprising:

at least one processor; and

a non-transitory computer readable medium storing instructions thereon that, when executed by the at least one processor, cause the system to:

receive a request to create a new multi-tenant cache on a cloud computing system for an application, the cloud computing system comprising a cache cluster to host the new multi-tenant cache, wherein the cache cluster comprises a plurality of front-end gateway server nodes and a plurality of back-end cache servers;

provision an access control endpoint associated with a reserved space on one or more back-end cache servers from the plurality of back-end cache servers;

provide a shared key and the access control endpoint to a client device;

provide a private version of the shared key to a front-end gateway server node from the plurality of front-end gateway server nodes; and

in response to the application passing the shared key as an input and based on the front-end gateway server nodes having a private version of the shared key thereon, grant access to the reserved space via the front-end gateway server node.

14. The system of claim 13 , wherein granting access to the reserved space comprises:

returning a ticket to the client device for caching on the client device; and

granting access to the reserved space based on validation of the ticket received from the client device.

15. The system of claim 14 , wherein the ticket is associated with an expiration period during which the client device can access the reserved space by providing the ticket to the front-end gateway server node, and further comprising instructions that, when executed by the at least one processor, cause the system to:

receive, from the client device, a request to access the reserved space, the request comprising the ticket cached on the client device; and

in response to determining that the expiration period has elapsed, provide, to the client device, a rejection of the request to access the reserved space.

16. The system of claim 14 , wherein the front-end gateway node uses the private version of the shared key to decrypt user data to authenticate the client device prior to granting access to the reserved space.

17. The system of claim 13 , further comprising instructions that, when executed by the at least one processor, cause the system to:

identify the cache cluster to host the new multi-tenant cache based on a requested cache size included within the request to create the new multi-tenant cache; and

partition data of the reserved space such that each tenant associated with the new multi-tenant cache is assigned a uniquely named cache, wherein partitioning data of the reserved space comprises assigning multiple domain names to a common virtual internet protocol (VIP).

18. A non-transitory computer readable medium comprising instructions thereon that, when executed by at least one processor, cause a computer system to:

receive a request to create a new multi-tenant cache on a cloud computing system for an application, the cloud computing system comprising a cache cluster to host the new multi-tenant cache, wherein the cache cluster comprises a plurality of front-end gateway server nodes and a plurality of back-end cache servers;

provision an access control endpoint associated with a reserved space on one or more back-end cache servers from the plurality of back-end cache servers;

provide a shared key and the access control endpoint to a client device;

provide a private version of the shared key to a front-end gateway server node from the plurality of front-end gateway server nodes, the front-end gateway server nodes being coupled to the one or more back-end cache servers; and

in response to the application passing the shared key as an input and based on the front-end gateway server nodes having a private version of the shared key thereon, grant access to the reserved space via the front-end gateway server node.

19. The non-transitory computer readable medium of claim 18 , wherein granting access to the reserved space comprises:

returning a ticket to the client device for caching on the client device; and

granting access to the reserved space based on validation of the ticket received from the client device.

20. The non-transitory computer readable medium of claim 19 , wherein the ticket is associated with an expiration period during which the client device can access the reserved space by providing the ticket to the front-end gateway server node, and further comprising instructions that, when executed by the at least one processor, cause the system to:

receive, from the client device, a request to access the reserved space, the request comprising the ticket cached on the client device; and

in response to determining that the expiration period has elapsed, provide, to the client device, a rejection of the request to access the reserved space.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2019
From: BENDAPUDI, PERRAJU; S., HARI KRISHNAN; VEERAMACHANENI, JITHENDRA K.; PERI, JAGAN M.; KAKKAR, JATIN; YADAV, AMIT KUMAR
To: MICROSOFT CORPORATION
Reel/Frame 048298/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2019
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 048298/0230 →
Continuity (2)
Continuation 13274355 · Oct 17, 2011
Related Publication 20190173976A1 · Jun 6, 2019