Load Balancing Module Routing Non-Idempotent Requests

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing load-balancing schemes fail to differentiate between idempotent and non-idempotent requests, leading to potential duplicate processing of non-idempotent requests, which can cause unintended effects.

Innovation Solution

Implement a load balancing module that classifies requests as idempotent or non-idempotent, routing idempotent requests to any available server or a subset of servers and non-idempotent requests to the last available server to prevent duplicate processing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If load balancing schemes route requests to any available server without differentiation, then server capacity utilization is improved, but non-idempotent requests may be processed multiple times causing unintended effects

Engineering Contradiction:
Improveserver capacity utilizationVSAvoidrequest processing accuracy
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies local quality by treating different request types differently. Idempotent requests are routed to any available server, while non-idempotent requests are routed specifically to the last known available server. This differentiated routing strategy ensures that non-idempotent requests are processed only once while still maintaining good server utilization through the round-robin approach for idempotent requests.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent segments requests into two categories: idempotent and non-idempotent. Each category follows a different routing strategy. This segmentation allows the system to optimize for both reliability (preventing duplicate processing of non-idempotent requests) and productivity (maintaining server capacity utilization through appropriate routing of idempotent requests).

Inventive Principle:
Principle #1Segmentation

2Reliability

If the system tracks server status to route requests accurately, then request processing reliability is improved, but system complexity increases

Engineering Contradiction:
Improverequest processing accuracyVSAvoidload balancing module complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs preliminary action by maintaining a list of available servers and updating their status in advance. The load balancing module keeps track of which servers are currently available and routes requests accordingly. This preliminary tracking of server status enables reliable request routing without requiring complex real-time monitoring during request processing.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements feedback mechanisms where servers respond to requests and their availability status is fed back to the load balancing module. This feedback loop allows the system to update its knowledge of server availability and adjust routing decisions accordingly, maintaining reliability while keeping the complexity manageable through systematic status tracking.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS7840674B1Routing messages across a network in a manner that ensures that non-idempotent requests are processed
Publication Date: 2010.11.23 INTUIT INC
  • US7840674B1 patent drawing
  • US7840674B1 patent drawing
  • US7840674B1 patent drawing

AI summary

A load balancing method classifies requests routed by a client computer to a server computer as either idempotent or non-idempotent requests. Idempotent requests can be submitted multiple times if not processed on the first attempt. Non-idempotent requests are submitted only once. The method designates a last server that provided an indication that it last processed a request and marks that server as the last available server. In one implementation, the method routes non-idempotent requests to the last available server and routes idempotent requests to any server or any of a subset of servers.