Protocol Proxy for Transparent Server Failover in Stateful Distributed Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Stateful distributed protocols face challenges in server failover, leading to client-side failures and performance slowdowns due to loss of state information when a server fails, and requiring servers to be stateless would significantly slow down transactions.
Innovation Solution
A protocol proxy intercepts client requests to maintain state information, updates a data structure to track client-server state, and upon server failure, reconnects or switches to a backup server, restoring state information and retransmitting in-flight requests to ensure transparent failover without requiring the server to be stateless.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If the server maintains state information in volatile memory, then transaction speed is improved, but reliability deteriorates due to loss of state information upon server failure
Solution Approach 1:
The patent introduces a proxy as an intermediary component that maintains state information separately from the server. The proxy intercepts client requests, manages state data structures, and coordinates with both the client and server. This mediator approach allows the server to operate with fast volatile memory while the proxy ensures reliability by preserving state information independently, resolving the contradiction between speed and reliability.
2Reliability
If the server commits state information to persistent memory to be stateless, then reliability is improved, but transaction speed deteriorates significantly
Solution Approach 1:
The patent segments the state management function from the server process and places it in the proxy. The state data structure is divided into client-specific states and file-specific states, managed separately by the proxy. This segmentation allows the server to remain fast and volatile-memory-based, while the proxy handles persistence and reliability concerns, avoiding the performance penalty of committing every state change to persistent memory on the server side.
3Reliability
If the server fails over to a backup server, then availability is improved, but client state information is lost requiring client-side failure
Solution Approach 1:
The proxy performs preliminary actions by maintaining a complete state data structure that includes all client states and file states before any server failure occurs. When failover is needed, the proxy has already prepared the state information and can restore it on the new server without requiring client reconnection or state re-establishment. This preliminary state management prevents information loss during failover.
4Ease of operation
If the proxy maintains complete state information for all clients, then transparency of failover is improved, but device complexity increases
Solution Approach 1:
The proxy implements local quality by maintaining state information in a structured manner with distinct client-state mappings and file-state mappings. Each client has its own state entry, and each file has its own state tracking. This organized, localized state management allows the proxy to handle failover transparently for each client independently, reducing the operational complexity compared to a monolithic state management approach.
Data Source
AI summary
Exemplary methods, apparatuses, and systems include a proxy intercepting, from a client, a plurality of requests addressed to a first server. The proxy adds an entry for each of the plurality of requests to a data structure. Each entry includes data from one of the plurality of requests. The proxy forwards each of the plurality of requests to the first server. In response to detecting the first server was unavailable or otherwise failed, the proxy reconnects to the first server when the first server recovers or connects to a second server serving as a backup for the first server. The proxy transmits to the first or second server one or more commands using the entries of the data structure to restore state information for the client.


