# US 10,503,726 B2 · Reducing frontend complexity for multiple microservices with consistent updates

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

- Number: US 10,503,726 B2
- Document ID: US10503726B2
- Status: Granted
- Kind: B2
- Application number: 15/850,404
- Filed: 2017-12-21
- Published: 2019-06-27
- Granted: 2019-12-10
- Earliest claimed: 2017-12-21
- Assignees: Adobe Inc.
- Applicants: Adobe Inc.
- Inventors: Glenn Engstrand; Peng Wang
- Web page: https://patentgrep.com/patent/US10503726B2

## CPC

- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- G06F 11/1469: {Backup restoration techniques}
- G06F 11/1474: in transactions (updating of structured data in databases G06F16/23)
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 2201/80: Database-specific techniques
- G06F 2201/805: Real-time
- G06F 2201/82: Solving problems relating to consistency
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques for achieving consistency across data layers associated with multiple microservices. An always strictly consistent microservice coordination system provides immediate consistency for data stored across multiple microservices. A strictly successful eventually consistent multiple microservice coordination system provides eventual consistency for data stored across multiple microservices.

## Claims

### Claim 1

A method for performing always strictly consistent modification of data in a plurality of data stores, the method comprising:
calling a first data API with a first data modification request, said first data modification request including a first no-commit instruction;
receiving a first data modification response from said first data API, said first data modification response including a pseudo-identifier;
calling a second data API with a second data modification request including said pseudo-identifier, wherein said second data modification request includes a second no-commit instruction;
calling said first data API with a third data modification request, wherein said third modification request is a replay of said first data modification request;
receiving a third data modification response from said first data API, said third data modification response including a real identifier associated with said pseudo-identifier; and,
calling said second data API with a fourth data modification request, wherein said fourth data modification request is generated by replacing said pseudo-identifier with said associated real identifier such that data modified by said second data API is always strictly consistent with data modified by said first data API.

### Claim 2 (depends on 1)

The method according to claim 1, wherein said fourth modification request is a replay of said second data modification request.

### Claim 3 (depends on 1)

The method according to claim 1, wherein said third data modification request does not include a no-commit instruction.

### Claim 4 (depends on 1)

The method according to claim 1, wherein said fourth data modification request does not include a no-commit instruction.

### Claim 5 (depends on 1)

The method according to claim 1, wherein each of said first and second no-commit instructions includes information instructing a respective one of said first and second data APIs to perform a data validation and not to perform a commit.

### Claim 6 (depends on 1)

The method according to claim 1, wherein said first no-commit instruction further includes information instructing said first data API to generate and return said pseudo identifier.

### Claim 7 (depends on 1)

The method according to claim 1, wherein a map structure is used to associate said pseudo-identifier with said real identifier.

### Claim 8 (depends on 1)

The method according to claim 1, wherein said real identifier is a foreign key.

### Claim 9

A method for performing eventually consistent modification of data across a plurality of communicatively coupled microservices, wherein upon receiving a request to perform a modification of data, the method comprises:
transmitting, by one or more of said microservices, before image information to at least one other microservice, said before image information representing target data stored in a data store associated with the corresponding microservice prior to modification of said target data;
attempting, by said one or more of said microservices, to perform a modification of said target data;
if an error is encountered in performing modification of said target data, transmitting, by said one or more of said microservices, failure information to at least one other microservice;
if an error is not encountered in performing modification of said target data, transmitting, by said one or more of said microservices, after image information to at least one other microservice, said after image information indicative of an after image representing said target data after modification of said target data; and,
upon detecting a failure message, reverting, by said one or more of said microservices, said after image of said target data to said before image of said target data.

### Claim 10 (depends on 9)

The method according to claim 9, wherein said plurality of communicatively coupled microservices communicate by publishing and subscribing to messages distributed by a message broker.

### Claim 11 (depends on 10)

The method according to claim 10, wherein said before image information, said after image information and said failure information comprise messages published to said message broker.

### Claim 12 (depends on 11)

The method according to claim 11, further comprising: upon determining that an after image message has not been generated for a corresponding before image message, transmitting, by said one or more of said microservices, a failure message.

### Claim 13 (depends on 9)

The method according to claim 9, wherein a begin transaction event message is transmitted at a beginning of a transaction involving said plurality of microservices.

### Claim 14 (depends on 13)

The method according to claim 13, wherein an end transaction event is transmitted at an end of a transaction involving said plurality of microservices.

### Claim 15

A computer program product including one or more non-transitory machine-readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out for always strictly consistent modification of data in a plurality of data stores, the process comprising:
calling a first data API with a first data modification request, wherein said first data modification request includes a first no-commit instruction;
receiving a first data modification response from said first data API, wherein said first data modification response includes a pseudo-identifier;
calling a second data API with a second modification request including said pseudo-identifier, wherein said second data modification request includes a second no-commit instruction;
receiving a second data modification response from said second data API;
calling said first data API with a third data modification request, wherein said third data modification request is a replay of said first data modification request but without the first no-commit instruction;
receiving a third data modification response from said first data API, wherein said third data modification response includes a real identifier associated with said pseudo-identifier; and,
calling said second data API with a fourth data modification request, wherein said fourth data modification request is a replay of said second data modification request but without the second no-commit instruction, and wherein said fourth data modification request is generated by replacing said pseudo-identifier with said associated real identifier such that data modified by said second data API is always strictly consistent with data modified by said first data API.

### Claim 16 (depends on 15)

The computer program product according to claim 15, wherein each of said first and second no-commit instructions includes information instructing a respective one of said first and second data APIs to perform a data validation and not to perform a commit.

### Claim 17 (depends on 16)

The computer program product according to claim 16, wherein said first no-commit instruction further includes information instructing said first data API to generate and return said pseudo identifier.

### Claim 18 (depends on 15)

The computer program product according to claim 15, wherein a map structure is used to associate said pseudo-identifier with said real identifier.

### Claim 19 (depends on 15)

The computer program product according to claim 15, wherein said real identifier is a foreign key.

### Claim 20 (depends on 15)

The computer program product according to claim 15, wherein each of said first and second no-commit instructions includes a prepare phase header.
