Dual Stage Bulkheads for Web Service Request Routing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Single-threaded process architectures in web-based platforms face latency issues due to blocking on input/output operations, leading to delays in servicing requests or failed/timed-out requests.

Innovation Solution

Implementing a computer-implemented method that controls access to services by using bulkheads and shared burst bulkheads to manage concurrent active requests, routing requests through a shared burst bulkhead when the first bulkhead is maxed out, and refusing access when both bulkheads are at maximum capacity.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If a single-threaded process architecture is used, then context switching overhead is eliminated, but latency increases due to blocking on input/output operations

Engineering Contradiction:
Improvecontext switching overheadVSAvoidlatency
Core Design Contradiction:
Loss of energyVSLoss of time

Solution Approach 1:

The patent applies bulkhead segmentation by dividing the request handling capacity into separate bulkheads (first bulkhead with capacity N and second bulkhead with capacity M). This segmentation allows independent management of request flows, enabling the system to isolate blocking I/O operations within specific bulkheads while maintaining overall system responsiveness and reducing latency without the need for context switching.

Inventive Principle:
Principle #1Segmentation

2Loss of time

If bulkhead capacity is increased to reduce blocking delays, then request servicing improves, but system resources are consumed more quickly

Engineering Contradiction:
Improveblocking delayVSAvoidsystem resources
Core Design Contradiction:
Loss of timeVSQuantity of substance

Solution Approach 1:

The patent implements partial action by providing a first bulkhead with capacity N and a second bulkhead with capacity M, where N and M are configured to balance resource consumption with request handling capability. This partial capacity allocation allows the system to handle requests efficiently without over-provisioning resources, optimizing the trade-off between reducing blocking delays and conserving system resources.

Inventive Principle:
Principle #16Partial or excessive action

3Productivity

If a multi-threaded architecture is used, then request throughput increases, but context switching between threads becomes computationally expensive

Engineering Contradiction:
Improverequest throughputVSAvoidcontext switching cost
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent introduces bulkheads as intermediary structures that mediate between request sources and database services. These bulkheads act as single-threaded event loops that handle requests sequentially without context switching, while still enabling high throughput by managing multiple request queues simultaneously. This intermediary approach eliminates the computational cost of thread context switching while maintaining request handling capability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS20250068459A1Dual stage bulkheads
Publication Date: 2025.02.27 SHOPIFY INC
  • US20250068459A1 patent drawing
  • US20250068459A1 patent drawing
  • US20250068459A1 patent drawing

AI summary

Systems and methods for controlling access to services. Methods may comprise receiving, from a first client of a plurality of clients, a first request to access a first service of a plurality of services. The first service may be associated with a first bulkhead. A first count of concurrent active requests to the first service via the first bulkhead may be determined. If the first count is equal to a first bulkhead maximum value, access to the first service via the first bulkhead may consequently be refused. A second count of concurrent active requests via a shared burst bulkhead may be determined. The second count may correspond to concurrent active requests to any of the plurality of services via the shared burst bulkhead. If the second count is less than a shared burst maximum value, the first request to the first service may be routed via the shared burst bulkhead.