# US 2025/0085995 A1 · Weight-based distribution for consistent hashing algorithm

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

- Number: US 2025/0085995 A1
- Document ID: US20250085995A1
- Status: Published application
- Kind: A1
- Application number: 18/462,492
- Filed: 2023-09-07
- Published: 2025-03-13
- Earliest claimed: 2023-09-07
- Assignees: Citrix Systems, Inc.
- Applicants: Citrix Systems, Inc.
- Inventors: Vemula Srimithra; Aman Chaudhary; Vidhi Agrawal; Lakshmi Prasanna Guru
- Web page: https://patentgrep.com/patent/US20250085995A1

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- H04L 67/1023: based on a hash applied to IP addresses or costs
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- 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

Systems and methods for weight-based distribution for consistent hashing algorithm are provided. A system can include one or more processors, coupled with memory. The one or more processors can maintain a table of a count of replicas of each of a plurality of services that is generated based on a weight of each of the plurality of services. The one or more processors can receive, from a client device remote from the one or more processors, a request. The one or more processors can select, from the table based on the request, a service of the plurality of services. The one or more processors can route the request to the selected service of the plurality of services.

## Claims

### Claim 1

A system, comprising:
one or more processors, coupled with memory, to:
maintain a table of a count of replicas of each of a plurality of services that is generated based on a weight of each of the plurality of services;
receive, from a client device remote from the one or more processors, a request;
select, from the table based on the request, a service of the plurality of services; and
route the request to the selected service of the plurality of services.

### Claim 2 (depends on 1)

The system of claim 1, wherein the one or more processors are further configured to:
determine a first count of replicas for a first service of the plurality of services based on a first weight of the first service; and
determine a second count of replicas for a second service of the plurality of services based on a second weight of the second service, wherein the first count of replicas is greater than the second count of replicas and the first weight is greater than the second weight.

### Claim 3 (depends on 2)

The system of claim 2, wherein the first service has a greater processing capacity compared to the second service.

### Claim 4 (depends on 1)

The system of claim 1, wherein the plurality of services comprises a plurality of servers.

### Claim 5 (depends on 1)

The system of claim 1, wherein the plurality of services comprise a plurality of virtual machines hosted in a cloud computing environment.

### Claim 6 (depends on 1)

The system of claim 1, wherein the one or more processors are further configured to:
generate a first service hash based on application of a hash function to a tuple formed from an IP address and a port of a first service of the plurality of services;
generate a plurality of replicas based on combining the first service hash with one or more prime numbers selected from a prime number array; and
store the plurality of replicas in the table to route requests to access the first service.

### Claim 7 (depends on 6)

The system of claim 6, wherein the one or more processors is further configured to:
determine a first count of replicas to generate based on a replication factor for the first service; and
generate the plurality of replicas with the first count of replicas.

### Claim 8 (depends on 6)

The system of claim 6, wherein the one or more processors is further configured to:
determine a first count of replicas to generate based on a replication factor for the first service and a first weight of the first service; and
generate the plurality of replicas with the first count of replicas.

### Claim 9 (depends on 1)

The system of claim 1, wherein the one or more processors is further configured to:
generate a first service hash based on application of a hash function to a tuple formed for a first service of the plurality of services;
generate a plurality of replicas based on application of the hash function or a second hash function to the first service hash combined with a second one or more values selected from an array; and
store the plurality of replicas in the table to route requests to access the first service.

### Claim 10 (depends on 1)

The system of claim 1, wherein the one or more processors is further configured to:
determine that a first service of the plurality of services is unavailable; and
remove or disable replicas in the table generated for the first service to cause subsequent requests for the first service to be routed to a different service of the plurality of services.

### Claim 11 (depends on 10)

The system of claim 10, wherein the one or more processors is further configured to:
determine subsequent to the removal, that the first service is available; and
update the table to include or enable the replicas generated for the first service to maintain a consistent mapping of client devices to the plurality of services.

### Claim 12

A method, comprising:
maintaining, by one or more processors coupled with memory, a table of a count of replicas of each of a plurality of services that is generated based on a weight of each of the plurality of services;
receiving, by the one or more processors, a request from a client device remote from the one or more processors;
selecting, by the one or more processors, from the table based on the request, a service of the plurality of services; and
routing, by the one or more processors, the request to the selected service of the plurality of services.

### Claim 13 (depends on 12)

The method of claim 12, comprising:
determining, by the one or more processors, a first count of replicas for a first service of the plurality of services based on a first weight of the first service; and
determining, by the one or more processors, a second count of replicas for a second service of the plurality of services based on a second weight of the second service, wherein the first count of replicas is greater than the second count of replicas and the first weight is greater than the second weight.

### Claim 14 (depends on 13)

The method of claim 13, wherein the first service has a greater processing capacity compared to the second service.

### Claim 15 (depends on 12)

The method of claim 12, comprising:
generating, by the one or more processors, a first service hash based on application of a hash function to a tuple formed from an IP address and a port of a first service of the plurality of services;
generating, by the one or more processors, a plurality of replicas based on combining the first service hash with one or more prime numbers selected from a prime number array; and
storing, by the one or more processors, the plurality of replicas in the table to route requests to access the first service.

### Claim 16 (depends on 15)

The method of claim 15, comprising:
determining, by the one or more processors, a first count of replicas to generate based on a replication factor for the first service; and
generating, by the one or more processors, the plurality of replicas with the first count of replicas.

### Claim 17 (depends on 15)

The method of claim 15, comprising:
determining, by the one or more processors, a first count of replicas to generate based on a replication factor for the first service and a first weight of the first service; and
generating, by the one or more processors, the plurality of replicas with the first count of replicas.

### Claim 18 (depends on 12)

The method of claim 12, comprising:
generating, by the one or more processors, a first service hash based on application of a hash function to a tuple formed for a first service of the plurality of services;
generating, by the one or more processors, a plurality of replicas based on application of the hash function or a second hash function to the first service hash combined with a second one or more values selected from an array; and
storing, by the one or more processors, the plurality of replicas in the table to route requests to access the first service.

### Claim 19 (depends on 12)

The method of claim 12, comprising:
determining, by the one or more processors, that a first service of the plurality of services is unavailable; and
removing, by the one or more processors from the table, replicas generated for the first service to cause subsequent requests for the first service to be routed to a different service of the plurality of services.

### Claim 20

A non-transitory computer-readable medium storing processor executable instructions that, when executed by one or more processors, cause the one or more processors to:
maintain a table of a count of replicas of each of a plurality of services that is generated based on a weight of each of the plurality of services;
receive, from a client device remote from the one or more processors, a request;
select, from the table based on the request, a service of the plurality of services; and
route the request to the selected service of the plurality of services.
