Reliable Non-Blocking Messaging for Multi-Process Replication

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current fault-tolerant systems, especially in commodity computer environments, face challenges in ensuring consistent and reliable messaging for multi-process multi-threaded applications, particularly in ensuring message delivery, ordering, and integrity, especially during network or server faults, and require modifications to applications or custom hardware.

Innovation Solution

The system employs a leader-follower strategy with interceptors and a messaging subsystem to maintain replica consistency across commodity operating systems and hardware, using sequence numbering and a reliable communication protocol to ensure ordered and reliable delivery of messages over UDP and TCP, without requiring application modifications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a reliable messaging protocol is implemented to ensure message delivery and ordering, then message reliability is improved, but system complexity increases

Engineering Contradiction:
Improvemessage delivery reliabilityVSAvoidmessaging system complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The messaging system is segmented into distinct functional components: sequence number generation, message queuing, acknowledgment tracking, and retransmission logic. This modular segmentation allows each component to handle specific aspects of reliability independently, making the overall complex system manageable and maintainable while achieving high message delivery reliability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Sequence numbers act as an intermediary mechanism between the messaging protocol and the application layer. These sequence numbers mediate the ordering and tracking of messages without requiring complex application-level logic, thereby improving reliability while keeping the application interface simple

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If sequence numbering and acknowledgment mechanisms are used to ensure message ordering, then message ordering is improved, but processing time increases

Engineering Contradiction:
Improvemessage orderingVSAvoidmessage processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

Sequence numbers are generated and assigned to messages in advance, before the messages are actually transmitted. This preliminary numbering allows messages to be processed and sent without waiting for ordering logic during transmission, reducing processing time while maintaining ordering guarantees through the pre-assigned sequence numbers

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent replaces complex mechanical ordering mechanisms (such as blocking and waiting for acknowledgments) with a more efficient sequence number-based system. Messages are tagged with sequence numbers and processed asynchronously, substituting the need for time-consuming synchronization mechanisms while preserving message ordering

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Ease of operation

If transparent application replication is implemented without application modifications, then ease of operation is improved, but system complexity increases

Engineering Contradiction:
Improveapplication transparencyVSAvoidreplication system complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

Interceptors serve as intermediary components that sit between the application and the operating system/native code. These interceptors transparently capture system calls and translate them into replication messages without requiring any application modifications. The complexity of the replication system is isolated in the interceptor layer, while the application remains simple and unchanged

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent creates a copied and adapted version of the application that runs on the backup server. This copy is generated through bytecode translation and interception mechanisms, allowing the backup application to mirror the primary application's behavior without manually modifying the original application code, thus maintaining ease of operation while enabling replication

Inventive Principle:
Principle #26Copying

4Productivity

If non-blocking messaging is used to maintain primary application performance, then productivity is improved, but reliability worsens

Engineering Contradiction:
Improveprimary application performanceVSAvoidmessage delivery guarantee
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The messaging system segments the acknowledgment process into background operations that do not block the primary application. Message sending is separated from message acknowledgment, allowing the primary application to continue processing while reliability is maintained through asynchronous acknowledgment and retransmission mechanisms operating in the background

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The primary application maintains continuous operation without interruption for message acknowledgment. The replication messaging system continues its useful action of ensuring delivery through non-blocking mechanisms, using background threads and asynchronous I/O to maintain both productivity and reliability simultaneously

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS9141481B1System and method for reliable non-blocking messaging for multi-process application replication
Publication Date: 2015.09.22 GOOGLE LLC
  • US9141481B1 patent drawing
  • US9141481B1 patent drawing
  • US9141481B1 patent drawing

AI summary

A system, method, and computer readable medium for reliable messaging between two or more servers. The computer readable medium includes computer-executable instructions for execution by a processing system. Primary applications runs on primary hosts and one or more replicated instances of each primary application run on one or more backup hosts. The reliable messaging ensures consistent ordered delivery of messages in the event that messages are lost; arrive out of order, or in duplicate. The messaging layer operates over TCP or UDP with our without multi-cast and broad-cast and requires no modification to applications, operating system or libraries.