# US 12,335,341 B2 · Systems and methods for optimizing distributed computing systems including server architectures and client drivers

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,335,341 B2
- Document ID: US12335341B2
- Status: Granted
- Kind: B2
- Application number: 18/424,411
- Filed: 2024-01-26
- Published: 2024-08-22
- Granted: 2025-06-17
- Earliest claimed: 2021-07-29
- Assignees: Elasticflash, Inc.
- Applicants: Elasticflash, Inc.
- Inventors: Darshan Bharatkumar Rawal; Pradeep Jnana Madhavarapu; Naoki Iwakami
- Web page: https://patentgrep.com/patent/US12335341B2

## CPC

- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/53: using third party service providers
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/566: Grouping or aggregating service requests, e.g. for unified processing
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- G06F 15/76: Architectures of general purpose stored program computers (with program plugboard G06F15/08; multicomputers G06F15/16)
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Systems and methods for optimizing distributed computing systems are disclosed, such as for processing raw data from data sources (e.g., structured, semi-structured, key-value paired, etc.) in applications of big data. A process for utilizing multiple processing cores for data processing can include receiving raw input data and a first portion of digested input data from a data source client through an input/output bus at a first processor core, receiving, from the first processor core, the raw input data and first portion of digested input data by a second processor core, digesting the received raw input data by the second processor core to create a second portion of digested input data, receiving the second portion of digested input data by the first processor core, and writing, by the first processor core, the first portion of digested input data and the second portion of digested input data to a storage medium.

## Claims

### Claim 1

A method for preparing and sending data from a data source client device to a data processing engine, the method comprising:
providing a database schema and a cluster configuration of a data processing engine to a data source client, where:
the database schema includes information about structure, organization, and relationships within the data processing engine; and
the cluster configuration includes metadata identifying of locations where data is stored as replica copies within the data processing engine;
collecting raw input data on the data source client device;
digesting at least a portion of the raw input data on the data source client device according to the database schema to generate digested input data;
identifying, by the data source client, a plurality of replica locations within the data processing engine to store replicated copies of the digested input data and transferring the digested input data from the data source client to the identified replica locations for storage.

### Claim 2 (depends on 1)

The method of claim 1, where transferring the digested input data from the data source client to the identified replica locations for storage comprises:
collecting, by the data source client device, digested input data in memory until it is requested by the data processing engine;
determining, by the data processing engine, that it has capacity for receiving data;
requesting, by the data processing engine, digested input data from the data source client when it determines that it has capacity for receiving data;
receiving, from the data source client device, digested input data by the replica locations within the data processing engine.

### Claim 3 (depends on 1)

The method of claim 1, wherein the data processing engine comprises at least a first processor core and a second processor core within a group of processor cores, and the method further comprises:
receiving raw input data and a first portion of digested input data from the data source client through an input/output bus at a first processor core within a group of processor cores on a server, where the digested input data is digested by the data source client;
providing the received raw input data and first portion of digested input data from the first processor core to a second processor core within the group of processor cores;
digesting the received raw input data by the second processor core to create a second portion of digested input data;
providing the second portion of digested input data from the second processor core to the first processor core; and
writing, by the first processor core, the first portion of digested input data and the second portion of digested input data to the storage.

### Claim 4 (depends on 3)

The method of claim 3, where only the first processor core of the group of processor cores is permitted to communicate with the input/output bus on the server.

### Claim 5 (depends on 1)

The method of claim 1, further comprising sending at least a portion of the raw input data from the data source client to the identified replica locations for storage.

### Claim 6 (depends on 5)

The method of claim 5, wherein the raw input data is in a different format than the digested input data.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
when the data processing engine is not available, collecting digested input data in a memory.

### Claim 8 (depends on 7)

The method of claim 7, wherein the memory is volatile memory.

### Claim 9 (depends on 7)

The method of claim 7, wherein the memory is non-volatile memory.

### Claim 10 (depends on 1)

The method of claim 1, wherein sending the digested input data from the data source client to the identified replica locations for storage further comprises:
collecting, by the data source client, a plurality of elements of raw input data and a plurality of elements of digested input data in memory; and
receiving, from the data source client, the plurality of elements of raw input data by the identified replica locations when a predetermined number of elements is collected.

### Claim 11 (depends on 1)

The method of claim 1, further comprising:
receiving a query request from the data source client by a first of the identified replica locations;
when a response to the data source client has not been returned within a predetermined time window, identifying a second of the plurality of replica locations to send the query request to; and
receiving the query request from the data source client by the second identified replica location.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
generating, by the client, an event message and an event timestamp and sending both to the data processing engine;
receiving, by the data processing engine, the event message and event timestamp;
adding, by the data processing engine, a unique identifier to the event timestamp that identifies the client;
comparing, by the data processing engine, the event timestamp to a time watermark;
recomputing, by the data processing engine, previously digested metrics when the event timestamp is later than the time watermark.

### Claim 13 (depends on 1)

The method of claim 1, wherein transferring the digested input data from the data source client to the identified replica locations for storage further comprises:
assigning a currentTracker integer reference number representing the count of the write, a previous Tracker integer reference number representing the currentTracker of the previous write, and an applicationId reference number representing the application that is requesting the write;
incrementing the currentTracker of the next write, carrying over the currentTracker of the previous write as the previous Tracker of the next write;
comparing the currentTracker and previous Tracker of the next write.

### Claim 14 (depends on 1)

The method of claim 1, further comprising:
identifying, by the data source client, a first target replica location of the plurality of replica locations that has the highest tracker value, where the data source client has a tracker value associated with each of the plurality of replica locations;
receiving, from the data source client, a read request by the first target replica location;
determining, by the first target replica location, whether it accurately has the highest tracker value;
receiving, from the first target replica location, one or more data values responsive to the read request by the data source client when the first target replica location accurately has the highest tracker value.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
receiving, from the first target replica location, a response that it does not have the highest tracker value when the first target replica location does not accurately have the highest tracker value;
receiving, from the data source client, a second read request at a second target replica location different from the first target replica location when the target replica location does not accurately have the highest tracker value.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
reconciling the first target replica location when the target replica location does not accurately have the highest tracker value.

### Claim 17 (depends on 14)

The method of claim 14, further comprising:
reconciling the first target replica location and sending the latest data value to the data source client when the target replica location does not accurately have the highest tracker value.

### Claim 18 (depends on 1)

The method of claim 1, wherein transferring the digested input data from the data source client to the identified replica locations for storage further comprises:
for each write operation, generating a uniquifier number that is globally unique;
when a write operation is retried after an initial request, assigning the same primary key to the retried write operation, where the primary key includes the uniquifier and event time;
triggering recomputation of previously digested metrics when a duplicate is detected within a predetermined period of time.

### Claim 19 (depends on 1)

The method of claim 1, further comprising:
transferring the raw input from the data source client to the identified replica locations for storage by:
for each write operation, generating a uniquifier number that is globally unique;
when a write operation is retried after an initial request, assigning the same primary key to the retried write operation, where the primary key includes the uniquifier and event time;
triggering recomputation of previously digested metrics when a duplicate is detected within a predetermined period of time.

### Claim 20 (depends on 1)

The method of claim 1, further comprising:
storing the transferred digested input data at a replica location by:
inserting a record when no record for the input data is present at the replica location; and saving a log of the insertion of the record;
updating an existing record when a record for the input data is present at the replica location; and saving a log of the updating of the existing record that includes both previous and new data values.
