RPC Data Processing via Wrapper Function Shared Libraries

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current parallel distributed processing systems face challenges such as increased development burden due to the need for programmers to learn Interface Description Languages (IDL) for Remote Procedure Call (RPC) systems, limited language options, slower processing speeds with Java bytecodes, and the requirement for separate client and server-side program descriptions.

Innovation Solution

A data processing technique that allows functions with various arguments and return values to be executed on another computer device using a client-server system with a user function symbol name acquiring unit, a wrapper function pointer acquiring unit, and a communicating unit, which compiles user programs and wrapper functions as a shared library, enabling execution without the need for IDL descriptions and supporting languages like C or C++ for native code compilation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If IDL is used for RPC system, then communication between servers can be implemented, but the development burden increases and programmers need to learn a different language

Engineering Contradiction:
Improvecommunication capabilityVSAvoiddevelopment burden
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent uses a code generator as an intermediary that automatically translates high-level function definitions into RPC-compatible code. This mediator handles the complexity of IDL-like descriptions, allowing programmers to work with familiar languages while the generator produces the necessary communication protocols and interface definitions.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system enables self-service by allowing the RPC framework to automatically generate and manage interface descriptions from function definitions. The code generator creates all necessary IDL-equivalent structures, stub files, and communication handlers without requiring manual IDL writing, making the system configure itself based on programmer-provided function signatures.

Inventive Principle:
Principle #25Self-service

2Reliability

If IDL is used for RPC system, then procedure calls can be made between servers, but programmers need to change IDL and guarantee consistency when function signatures change

Engineering Contradiction:
Improveprocedure call capabilityVSAvoidmaintenance complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The code generator performs preliminary actions by automatically updating all RPC interface definitions, stub files, and communication structures whenever a function signature changes. This preemptive regeneration ensures consistency across the entire distributed system without requiring manual synchronization or verification of multiple IDL files.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback mechanisms where the code generator monitors function definition changes and automatically triggers regeneration of RPC interfaces. This closed-loop approach ensures that any modification to function signatures is immediately reflected in the distributed communication layer, maintaining consistency through automated detection and correction.

Inventive Principle:
Principle #23Feedback

3Ease of manufacture

If Java bytecodes are used for RPC, then no IDL description is needed, but the processing speed becomes slower

Engineering Contradiction:
Improveimplementation easeVSAvoidprocessing speed
Core Design Contradiction:
Ease of manufactureVSSpeed

Solution Approach 1:

The patent changes the fundamental parameter of code representation by generating and compiling native code instead of using interpreted bytecodes. The code generator produces optimized machine code or compiled binaries that execute directly on the target platform, eliminating the performance overhead of bytecode interpretation while maintaining the ease of high-level language programming.

Inventive Principle:
Principle #35Parameter changes

4Reliability

If separate client and server-side programs are described, then RPC functionality can be achieved, but the development burden increases

Engineering Contradiction:
ImproveRPC functionalityVSAvoidprogrammer burden
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent merges the client and server program descriptions into a unified function definition that the code generator processes. Instead of requiring separate IDL files and program descriptions for each side, the system combines all RPC-related definitions into a single high-level interface that automatically generates both client and server stubs, reducing duplication and simplifying development.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS9116855B2Data processing system and data processing method
Publication Date: 2015.08.25 NEC CORP
  • US9116855B2 patent drawing
  • US9116855B2 patent drawing
  • US9116855B2 patent drawing

AI summary

A client (300) acquires a user function symbol name, acquires a pointer to a wrapper function, which is defined as a template function and internally executes the user function by designating the types of argument and return value of the user function as a template argument, and acquires a wrapper function symbol name of the wrapper function using the pointer to the wrapper function. A server (310) acquires, from the client, the user function symbol name, data corresponding to the arguments of the user function, the wrapper function symbol name, and a shared library user program in which the user program and the wrapper function are compiled as a shared library. The server executes the wrapper function within the shared library user program, which is specified by the pointer to the wrapper function, using the user function symbol name and the data corresponding to the arguments of the user function as arguments.