Ordered Message Processing via Grouped Identifiers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Asynchronous directed graph models for high-throughput data flow processing cannot guarantee that documents are processed in order, leading to complexities in document ingestion and indexing, especially when documents have multiple components or attachments that require different processing times.

Innovation Solution

A highly parallel, asynchronous data flow processing system uses message identifiers to group dependent messages, ensuring that messages within a group are processed in order by maintaining a buffer for complete message receipt verification, allowing other messages to be processed independently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If all messages are processed in order to ensure document processing order, then document processing integrity is maintained, but system throughput and parallelism are reduced

Engineering Contradiction:
Improvedocument processing integrityVSAvoidsystem throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments messages into different groups based on their dependency relationships. Messages are divided into independent groups that can be processed in parallel, while maintaining order within each group. This segmentation allows the system to process multiple message groups simultaneously without compromising the ordering requirement within each group, thus resolving the contradiction between throughput and integrity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial ordering rather than complete ordering to all messages. Only messages within the same dependent group require ordered processing, while messages from different groups can be processed in any order. This partial application of ordering constraints maintains document processing integrity for dependent messages while allowing parallel processing of independent messages, thereby improving system throughput.

Inventive Principle:
Principle #16Partial or excessive action

2Productivity

If messages are processed in parallel to improve throughput, then system productivity increases, but message processing order cannot be guaranteed

Engineering Contradiction:
Improvesystem throughputVSAvoidmessage processing order
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the message stream into multiple independent groups based on message identifiers and dependency relationships. Each group can be processed in parallel by different processing nodes, achieving high throughput. Within each segment, message order is preserved through buffer management mechanisms, thus maintaining reliability for dependent messages while enabling parallel processing of independent groups.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces buffers as intermediary components between message reception and processing. These buffers temporarily store messages and manage their release in the correct order within each group. The buffer acts as a mediator that decouples the parallel processing capability from the ordering requirement, allowing messages to be processed in parallel while maintaining order through the intermediary buffer management.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If bounded queues are inserted between computation nodes to enable asynchronous processing, then node decoupling and parallel execution are achieved, but blocking occurs when queues are full

Engineering Contradiction:
Improveparallel execution capabilityVSAvoidblocking time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent dynamically manages buffer allocation and message routing based on the state of downstream nodes and queues. When queues are full, the system dynamically adjusts by routing messages to alternative buffers or processing paths, preventing blocking. This dynamic adaptation allows the system to maintain high parallel execution capability while minimizing blocking time through flexible resource allocation.

Inventive Principle:
Principle #15Dynamics

4Reliability

If message identifiers are used to track and group dependent messages, then ordered processing within groups is achieved, but message processing complexity increases

Engineering Contradiction:
Improveordered processing guaranteeVSAvoidmessage tracking complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent uses a universal message identifier format that serves multiple functions: identifying the message source, indicating dependency relationships, and enabling group classification. This multi-functional identifier reduces the need for separate tracking mechanisms for each function, thereby maintaining ordered processing reliability while minimizing the increase in processing complexity through a consolidated identification approach.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8875155B2Ordered processing of groups of messages
Publication Date: 2014.10.28 SERVICENOW INC
  • US8875155B2 patent drawing
  • US8875155B2 patent drawing
  • US8875155B2 patent drawing

AI summary

A data flow processing system represents processing by a directed graph including processing nodes that generate, and process, groups of dependent messages and that can process such groups of messages in order. To identify a group of messages, the system applies message identifiers to messages. Processing of a message may generate child messages. A child message is assigned a message identifier that incorporates the message identifier of the parent message. The message identifier of the parent message is annotated to indicate the number of related child messages. The processing node maintains a buffer to store messages in the group. When a message is received, its message identifier indicates whether it is in a group and information about the group. From this information the processing node determines whether all messages within the group have been received, at which time the processing node can process the messages in order.