# US 10,481,963 B1 · Load-balancing for achieving transaction fault tolerance

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

- Number: US 10,481,963 B1
- Document ID: US10481963B1
- Status: Granted
- Kind: B1
- Application number: 15/197,700
- Filed: 2016-06-29
- Granted: 2019-11-19
- Earliest claimed: 2016-06-29
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: David Walker
- Web page: https://patentgrep.com/patent/US10481963B1

## CPC

- G06F 11/07: Responding to the occurrence of a fault, e.g. fault tolerance
- G06F 11/1484: {involving virtual machines}
- G06F 11/30: Monitoring
- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/301: {where the computing system is a virtual computing platform, e.g. logically partitioned systems (virtual machines G06F9/45533; logical partitioning of resources G06F9/5077)}
- H04L 1/0008: {by supplementing frame payload, e.g. with padding bits}
- H04L 1/22: using redundant apparatus to increase reliability
- H04L 41/065: {involving logical or physical relationship, e.g. grouping and hierarchies}
- H04L 67/1014: based on the content of a request
- H04L 67/1029: using data related to the state of servers by a load balancer
- H04L 67/1031: Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
- H04L 67/1034: Reaction to server failures by a load balancer
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04L 41/06: Management of faults, events, alarms or notifications
- H04L 41/0803: Configuration setting
- H04L 41/0895: Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- 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

A system for servicing a request in a distributed computing environment includes a plurality of computing devices configurable to implement a first compute instance group. The first instance group includes a first plurality of compute instances of a provider network. One or more of the computing devices is configured to implement a first network device that is configured to receive a first service request from a client directed to an application and to provide the first service request to each of the first plurality of compute instances. The application is run on each of the first plurality of compute instances.

## Claims

### Claim 1

A method of servicing a request in a distributed computing environment, comprising:
configuring a plurality of computing devices to implement a plurality of compute instances of a provider network;
allocating one or more of the computing devices to implement a network device that receives network traffic directed to an application;
allocating each of the plurality of compute instances to execute the application;
receiving, by the network device, a service request from a client directed to the application;
providing, by the network device, the service request to each of the plurality of compute instances;
receiving, by the network device, a service request response from each of the plurality of compute instances;
in response to a majority of the service request responses being identical, providing, by the network device, one of the identical service request responses to the client; and
in response to a first service request response being different from a majority of the service request responses, generating an alarm identifying a first of the plurality of compute instances from which the first service request response was received and terminating the first compute instance.

### Claim 2

A system for servicing a request in a distributed computing environment, comprising:
a plurality of computing devices, each computing device including a processor and memory, the plurality of computing devices configurable to implement a first compute instance group, the first compute instance group comprising a first plurality of compute instances of a provider network; and
one or more of the computing devices configured to implement a first network device configured to:
receive a first service request from a client directed to an application, the application being run on each of the first plurality of compute instances;
provide the first service request to each of the first plurality of compute instances; receive a service request response from each of the first plurality of compute instances; and
terminate a compute instance of the first plurality of compute instances whose service request response is different from the service request responses of a majority of the plurality of compute instances.

### Claim 3 (depends on 2)

The system of claim 2, wherein the first network device is further configured to:
receive the service request response from each of the first plurality of compute instances; store each of the service request responses in memory;
compare the service request responses,
in response to a majority of the service request responses having a same body, provide one of the majority of service request responses to the client.

### Claim 4 (depends on 2)

The system of claim 2, wherein the first network device is configured to compare the service request responses by performing a digest operation on each of the service request responses.

### Claim 5 (depends on 3)

The system of claim 3, wherein the first network device is further configured to:
responsive to the compute instance whose service request response is different from the service request responses of a majority of the first plurality of compute instances, generate an alarm.

### Claim 6 (depends on 2)

The system of claim 2, wherein the one or more of the computing devices is further configured to implement a second network device, the second network device configured to:
receive a request to launch an additional compute instance in the first compute instance group;
implement a second compute instance group, the second compute instance group comprising a second plurality of compute instances, each of the second plurality of compute instances configured to run the application; and
implement a third network device configured to:
receive a second service request from the client directed to the application;
and provide the second service request to each of the second plurality of compute instances.

### Claim 7 (depends on 6)

The system of claim 6, wherein the second compute instance group comprises a number of compute instances that is more than a number of compute instances in the first compute instance group.

### Claim 8 (depends on 6)

The system of claim 6, wherein the second network device is further configured to, in response to the first network device providing a response indicative of a majority of service request responses to the client, terminate the first network device and each of the first plurality of compute instances.

### Claim 9 (depends on 2)

The system of claim 2, wherein the first network device is a load balancer.

### Claim 10

A computing system, comprising:
one or more processors; and
memory including instructions, that upon being executed by the one or more processors, cause the one or more processors to:
implement a first plurality of compute instances;
implement a first network device that receives network traffic directed to an application running on each of the first plurality of compute instances;
receive a first service request from a client directed to the application;
provide the first service request to each of the first plurality of compute instances; receive a service request response from each of the first plurality of compute instances; and
terminate a compute instance of the first plurality of compute instances whose service request response is different from the service request responses of a majority of the plurality of compute instances.

### Claim 11 (depends on 10)

The system of claim 10, wherein the instructions, upon being executed, further cause the one or more processors to:
receive a service request response from each of the first plurality of compute instances; correlate each of the service request responses with one of the first plurality of compute instances;
compare each of the service request responses with each other;
in response to a majority of the service request responses being identical, provide one of the identical service request responses to the client.

### Claim 12 (depends on 11)

The system of claim 11, wherein the instructions, upon being executed, further cause the one or more processors to:
responsive to the compute instance whose service request response is different from the service request responses of a majority of the first plurality of compute instances, generate an alarm.

### Claim 13 (depends on 12)

The system of claim 12, wherein the instructions, upon being executed, further cause the one or more processors to, in response to the first of the first plurality of compute instances being terminated:
implement a second plurality of compute instances configured to each run the application; implement a second network device that receives network traffic directed to the application
running on each of the second plurality of compute instances;
receive a second service request from the client directed to the application; and
provide the second service request to each of the second plurality of compute instances.

### Claim 14 (depends on 13)

The system of claim 13, wherein the instructions, upon being executed, further cause the one or more processors to, in response to the first service request response providing the one of the identical service request responses to the client, terminate the first network device and each of the first plurality of compute instances.

### Claim 15 (depends on 10)

The system of claim 10, wherein the first network device is a load balancer.
