# US 2019/0173976 A1 · High-density multi-tenant distributed cache as a service

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0173976 A1
- Document ID: US20190173976A1
- Status: Published application
- Kind: A1
- Application number: 16/266,770
- Filed: 2019-02-04
- Published: 2019-06-06
- Earliest claimed: 2011-10-17
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Perraju BENDAPUDI; Hari Krishnan S.; Jithendra K. VEERAMACHANENI; Jagan M. PERI; Jatin KAKKAR; Amit Kumar YADAV
- Web page: https://patentgrep.com/patent/US20190173976A1

## CPC

- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 21/335: {for accessing specific resources, e.g. using Kerberos tickets}
- H04L 63/0807: {using tickets, e.g. Kerberos (cryptographic mechanisms or cryptographic arrangements for entity authentication using tickets or tokens H04L9/3213)}
- H04L 67/1001: for accessing one among a plurality of replicated servers
- G06F 2212/314: In storage network, e.g. network attached cache
- H04L 41/5096: {wherein the managed service relates to distributed or central networked applications}
- H04L 67/288: Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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 gateway nodes and a plurality of cache servers;
provisioning an access control endpoint associated with a reserved space on one or more cache servers from the plurality of 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 gateway node from the plurality of gateway nodes; and
in response to the application passing the shared key as an input, granting access to the reserved space via the gateway node having the private version of the shared key thereon.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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 gateway node.

### Claim 4 (depends on 3)

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, provide, to the client device, a rejection of the request to access the reserved space.

### Claim 5 (depends on 2)

The method of claim 2, wherein the 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.

### Claim 6 (depends on 1)

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

### Claim 7 (depends on 1)

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.

### Claim 8 (depends on 7)

The method of claim 7, further comprising establishing a per-tenant cache quota based upon the requested cache size included within the request to create the new multi-tenant cache.

### Claim 9 (depends on 7)

The method of claim 7, further comprising establishing a tenant bandwidth that identifies a number of transactions or size of transactions for a selected period of time included within the request to create the new multi-tenant cache.

### Claim 10 (depends on 1)

The method of claim 1, further comprising partitioning data of the reserved space across multiple cache servers of the plurality of 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).

### Claim 11

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 gateway nodes and a plurality of cache servers;
provision an access control endpoint associated with a reserved space on one or more cache servers from the plurality of 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 gateway node from the plurality of gateway nodes; and
in response to the application passing the shared key as an input, grant access to the reserved space via the gateway node having the private version of the shared key thereon.

### Claim 12 (depends on 11)

The system of claim 11, 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.

### Claim 13 (depends on 12)

The system of claim 12, 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 gateway 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.

### Claim 14 (depends on 12)

The system of claim 12, wherein the 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.

### Claim 15 (depends on 11)

The system of claim 11, 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).

### Claim 16

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 gateway nodes and a plurality of cache servers;
provision an access control endpoint associated with a reserved space on one or more cache servers from the plurality of 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 gateway node from the plurality of gateway nodes; and
in response to the application passing the shared key as an input, grant access to the reserved space via the gateway node having the private version of the shared key thereon.

### Claim 17 (depends on 16)

The non-transitory computer readable medium of claim 16, 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.

### Claim 18 (depends on 17)

The non-transitory computer readable medium of claim 17, 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 gateway 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.

### Claim 19 (depends on 17)

The non-transitory computer readable medium of claim 17, wherein the 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.

### Claim 20 (depends on 16)

The non-transitory computer readable medium of claim 16, further comprising instructions that, when executed by the at least one processor, cause the computer 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).
