# US 11,907,752 B1 · Work distribution service

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

- Number: US 11,907,752 B1
- Document ID: US11907752B1
- Status: Granted
- Kind: B1
- Application number: 18/083,340
- Filed: 2022-12-16
- Granted: 2024-02-20
- Earliest claimed: 2022-12-16
- Assignees: City Storage Systems LLC
- Applicants: City Storage Systems LLC
- Inventors: Jordan Hurwitz; Henning Korsholm Rohde; Kristopher Raney; Brian Atwell
- Web page: https://patentgrep.com/patent/US11907752B1

## CPC

- G06F 9/465: {Distributed object oriented systems (remote method invocation [RMI] G06F9/548)}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 16/2228: {Indexing structures}
- G06F 16/278: {Data partitioning, e.g. horizontal or vertical partitioning}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

This present disclosure provides for a work distribution service, which is a multi-region, reliable service for dynamically sharding key ranges. The work distribution service offers exclusive ownership with leases, load balancing and routing information for owner discovery. Using the work distribution service, services can easily scale horizontally by sharding their workloads.

## Claims

### Claim 1

A method of distribution of workload among a plurality of instances, comprising:
receiving, with one or more processors, one or more domain registrations from one or more consumers, each of the one or more domain registrations for executing an application in one of a plurality of instances within a region;
assigning, with the one or more processors, key ranges associated with a distributed database to each instance, each key range defining a shard;
generating, with the one or more processors, a routing table mapping each instance with the assigned key ranges; and
publishing the routing table to the plurality of instances.

### Claim 2 (depends on 1)

The method of claim 1, wherein each instance is executed in one region of a multi-region computing environment.

### Claim 3 (depends on 2)

The method of claim 2, wherein assigning the key ranges comprises distributing an entire set of available keys associated with the distributed database to the instances in each region.

### Claim 4 (depends on 1)

The method of claim 1, further comprising identifying a workload for each of the plurality of instances.

### Claim 5 (depends on 4)

The method of claim 4, wherein identifying the workload comprises polling the plurality of instances for a number of active jobs in each instance.

### Claim 6 (depends on 4)

The method of claim 4, wherein identifying the workload comprises monitoring the plurality of instances for performance and/or failures.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining, by the one or more processors, whether to reshard;
redistributing the key ranges of the distributed database among the plurality of instances when it is determined to reshard; and
updating the routing table with an updated mapping of the plurality of instances and assigned key ranges.

### Claim 8 (depends on 7)

The method of claim 7, wherein determining whether to reshard is based on determining that an instance is being added or removed in one of the one or more regions.

### Claim 9 (depends on 7)

The method of claim 7, wherein determining whether to reshard is based on a workload for one or more of the plurality of instances.

### Claim 10

A system for distribution of workload among a plurality of instances, comprising:
memory; and
one or more processors configured to:
receive one or more domain registrations from one or more consumers, each of the one or more domain registrations for executing an application in one of a plurality of instances within a region;
assign key ranges associated with a distributed database to each of the plurality of instances, each key range defining a shard;
generate a routing table mapping each of the plurality of instances with the assigned key ranges; and
publish the routing table to the plurality of instances.

### Claim 11 (depends on 10)

The system of claim 10, wherein the one or more processors comprise:
a plurality of computing nodes including a leader and one or more coordinators.

### Claim 12 (depends on 11)

The system of claim 11, further comprising one or more proxies configured to route communications between the plurality of instances and the one or more coordinators.

### Claim 13 (depends on 10)

The system of claim 10, wherein each of the plurality of instances is executed in one region of a multi-region computing environment.

### Claim 14 (depends on 13)

The system of claim 13, wherein assigning the key ranges comprises distributing an entire set of available keys associated with the distributed database to the plurality of instances in each region.

### Claim 15 (depends on 10)

The system of claim 10, wherein the one or more processors are further configured to identify a workload for each of the plurality of instances, identifying the workload comprising polling the plurality of instances or monitoring the plurality of instances.

### Claim 16 (depends on 10)

The system of claim 10, wherein the one or more processors are further configured to:
determine whether to reshard;
redistribute the keys of the distributed database among the plurality of instances when it is determined to reshard; and
update the routing table with an updated mapping of the plurality of instances and assigned key ranges.

### Claim 17 (depends on 16)

The system of claim 16, wherein determining whether to reshard is based on determining that an instance is being added or removed in one of the one or more regions.

### Claim 18 (depends on 16)

The system of claim 16, wherein determining whether to reshard is based on a workload for one or more of the plurality of instances.

### Claim 19

A non-transitory computer-readable storage medium storing instructions executable by one or more processors for performing a method of distribution of workload among a plurality of instances, comprising:
receiving one or more domain registrations from one or more consumers, each of the one or more domain registrations for executing an application in one of a plurality of instances within a region;
assigning key ranges associated with a distributed database to each of the plurality of instances, each key range defining a shard;
generating a routing table mapping each of the plurality of instances with the assigned key ranges; and
publishing the routing table to the plurality of instances.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein the method further comprises:
determining whether to reshard;
redistributing the key ranges of the distributed database among the plurality of instances when it is determined to reshard; and
updating the routing table with an updated mapping of the plurality of instances and assigned key ranges.
