IP Library Granted Patent US 10,908,982
Granted Patent B2
US 10,908,982 · App. 16/433,186 · Granted Feb 2, 2021

Method and system for processing data

Inventors: Denis Nikolaevich Podluzhny (Syktyvkar, RU); Andrey Vladimirovich Fomichev (Krasnogorsk, RU)
Assignee: YANDEX EUROPE AG
G06F11/0778G06F3/064G06F3/067G06F3/0619G06F9/466G06F16/1734
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,908,982
App. No.
16/433,186
Granted
Feb 2, 2021
Kind
B2
Abstract

A method and system for processing data is disclosed. The system has a storage for storing a log, a state machine communicatively coupled to the storage for maintaining the log by executing log-actions, where the log stores indications of the processed data. The state machine has a plurality of generations each of which has a respective GUID. A single one of the generations is designated as a master generation of the state machine at any given moment in time. The master generation has exclusive privileges for executing write log-actions to the log at the any given moment in time. The method includes transmitting, by a master-candidate generation, a block request to the log that is instrumental in (i) preventing execution of write log-actions from any generation having a given GUID that is inferior the GUID of the master-candidate, and allowing execution of write log-actions exclusively from the master-candidate.

Claims (72)

1. A method of processing data in a distributed computer system, the method executable in the distributed computer system, the distributed computer system having:

a storage device for storing a log,

a state machine communicatively coupled to the storage device for maintaining the log by executing log-actions on the log,

the log storing indications of the processed data;

the state machine having a plurality of generations, each one of the plurality of generations having a respective generation-unique identifier (GUID), a single one of the plurality of generations being designated as a master generation of the state machine at any given moment in time, the master generation of the state machine having exclusive privileges for executing write log-actions to the log at the any given moment in time;

at a current moment in time when the log is maintained by a current generation of the state machine, the current generation of the state machine (i) being the master generation of the state machine at the current moment in time, and (ii) being associated with a first GUID,

the method comprising:

transmitting, by a master-candidate generation of the state machine, a block request to the log, the master-candidate generation of the state machine being a new generation of the state machine, the master-candidate generation of the state machine having a second GUID, the second GUID being sequential to the first GUID, the block request being instrumental in:

(i) preventing execution of write log-actions to the log from any generation of the state machine having a given GUID that is inferior to the second GUID, and

(ii) allowing execution of write log-actions exclusively from the master-candidate generation of the state machine;

thereby designating the master-candidate generation of the state machine as the master generation of the state machine, instead of the current generation of the state machine.

2. The method of claim 1 , wherein the data is representative of a transaction to be executed by the state machine.

3. The method of claim 1 , wherein the storage device is a plurality of fault-tolerant storage devices.

4. The method of claim 3 , wherein the plurality of fault-tolerant storage devices are implemented in a distributed manner.

5. The method of claim 1 , wherein the state machine is a single state machine having a unique system-wide identifier.

6. The method of claim 1 , wherein the distributed computer system comprises another state machine and another respectively associated log, and wherein any given state machine is uniquely associated with a respective log to form a subsystem, and wherein subsystems within the distributed computer system operate independently therebetween.

7. The method of claim 3 , wherein the distributed computer system further comprises a database for executing transactions, and wherein the database is implemented as the state machine, and wherein the log stored within the fault-tolerant distributed storage is configured for tracking the transactions destined to the database for execution thereby.

8. The method of claim 1 , wherein the distributed computer system comprises a director entity for managing the state machine, and wherein the method further comprises:

generating, by the director entity, prior to the current moment in time the master-candidate generation of the state machine.

9. The method of claim 8 , wherein the master-candidate generation of the state machine is generated in response to a failure of the current generation of the state machine.

10. The method of claim 8 , wherein the master-candidate generation of the state machine is generated in response to an expiration of a time limit of the current generation of the state machine.

11. The method of claim 8 , wherein all of the director entity and the state machine are implemented as software modules.

12. The method of claim 11 , wherein the respective software modules associated with the director entity and the state machine have different characteristics therebetween.

13. The method of claim 1 , wherein the method further comprises, at another given moment in time being after the given moment in time during which the current generation of the state machine is no longer designated as the master generation of the state machine:

receiving, by the current generation of the state machine, other data to be processed;

attempting, by the current generation of the state machine, to execute a given write log-action in the log, the given write log-action being indicative of the other data, at the another given moment in time the given write log-action of the current generation of the state machine being prevented from being executed in the log based on the first GUID of the current generation of the state machine.

14. The method of claim 13 , wherein the method further comprises:

transmitting, by the current generation of the state machine, a failure message indicative of a failure to process the other data.

15. The method of claim 13 , wherein the other data is a transaction and wherein the state machine is implemented as a shard of a database and wherein the transaction is directed to the shard of the database.

16. The method of claim 1 , wherein the log is being shared by each one of the plurality of generations of the state machine.

17. The method of claim 16 , wherein any one of the plurality of generations of the state machine have read-action privileges to the log irrespective of which one of the plurality of generations of the state machine is the master generation of the state machine.

18. The method of claim 1 , wherein when the master-candidate generation of the state machine is designated as the master generation of the state machine, the master-candidate generation of the state machine:

processes the log for transitioning into a latest state of the state machine.

19. The method of claim 18 , wherein the log comprises at least one snapshot portion and a recently-added portion, processing the log comprises at least one of:

processing the at least one snapshot portion; and

processing the recently-added portion.

20. A distributed computer system for processing data, having:

a storage device for storing a log,

a state machine communicatively coupled to the storage device for maintaining the log by executing log-actions on the log,

the log storing indications of the processed data;

the state machine having a plurality of generations, each one of the plurality of generations having a respective generation-unique identifier (GUID), a single one of the plurality of generations being designated as a master generation of the state machine at any given moment in time, the master generation of the state machine having exclusive privileges for executing write log-actions to the log at the any given moment in time;

at a current moment in time when the log is maintained by a current generation of the state machine, the current generation of the state machine (i) being the master generation of the state machine at the current moment in time, and (ii) being associated with a first GUID,

a master-candidate generation of the state machine, the master-candidate generation of the state machine being a new generation of the state machine and having a second GUID, the second GUID being sequential to the first GUID, the master-candidate generation being configured to:

transmit a block request to the log, the block request being instrumental in:

(iii) preventing execution of write log-actions to the log from any generation of the state machine having a given GUID that is inferior to the second GUID, and

(iv) allowing execution of write log-actions exclusively from the master-candidate generation of the state machine;

thereby the master-candidate generation of the state machine being designated as the master generation of the state machine, instead of the current generation of the state machine.

21. The system of claim 20 , wherein the data is representative of a transaction to be executed by the state machine.

22. The system of claim 20 , wherein the storage device is a plurality of fault-tolerant storage devices.

23. The system of claim 22 , wherein the plurality of fault-tolerant storage devices are implemented in a distributed manner.

24. The system of claim 20 , wherein the state machine is a single state machine having a unique system-wide identifier.

25. The system of claim 20 , wherein the distributed computer system comprises another state machine and another respectively associated log, and wherein any given state machine is uniquely associated with a respective log to form a subsystem, and wherein subsystems within the distributed computer system operate independently therebetween.

26. The system of claim 22 , wherein the distributed computer system further comprises a database for executing transactions, and wherein the database is implemented as the state machine, and wherein the log stored within the fault-tolerant distributed storage is configured for tracking the transactions destined to the database for execution thereby.

27. The system of claim 20 , wherein the distributed computer system comprises a director entity for managing the state machine, and wherein the system is further configured to:

generate prior to the current moment in time the master-candidate generation of the state machine.

28. The system of claim 27 , wherein the master-candidate generation of the state machine is generated in response to a failure of the current generation of the state machine.

29. The system of claim 27 , wherein the master-candidate generation of the state machine is generated in response to an expiration of a time limit of the current generation of the state machine.

30. The system of claim 27 , wherein all of the director entity and the state machine are implemented as software modules.

31. The system of claim 30 , wherein the respective software modules associated with the director entity and the state machine have different characteristics therebetween.

32. The system of claim 20 , wherein the system is further configured to, at another given moment in time being after the given moment in time during which the current generation of the state machine is no longer designated as the master generation of the state machine:

receive, by the current generation of the state machine, other data to be processed;

attempt, by the current generation of the state machine, to execute a given write log-action in the log, the given write log-action being indicative of the other data, at the another given moment in time the given write log-action of the current generation of the state machine being prevented from being executed in the log based on the first GUID of the current generation of the state machine.

33. The system of claim 32 , wherein the system is further configured to:

transmit, by the current generation of the state machine, a failure message indicative of a failure to process the other data.

34. The system of claim 32 , wherein the other data is a transaction and wherein the state machine is implemented as a shard of a database and wherein the transaction is directed to the shard of the database.

35. The system of claim 20 , wherein the log is being shared by each one of the plurality of generations of the state machine.

36. The system of claim 35 , wherein any one of the plurality of generations of the state machine have read-action privileges to the log irrespective of which one of the plurality of generations of the state machine is the master generation of the state machine.

37. The system of claim 20 , wherein when the master-candidate generation of the state machine is designated as the master generation of the state machine, the master-candidate generation of the state machine:

processes the log for transitioning into a latest state of the state machine.

38. The system of claim 37 , wherein the log comprises at least one snapshot portion and a recently-added portion, processing the log comprises at least one of:

processing the at least one snapshot portion; and

processing the recently-added portion.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2024
From: DIRECT CURSUS TECHNOLOGY L.L.C
To: Y.E. HUB ARMENIA LLC
Reel/Frame 068534/0537 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY TYPE FROM APPLICATION 11061720 TO PATENT 11061720 AND APPLICATION 11449376 TO PATENT 11449376 PREVIOUSLY RECORDED ON REEL 065418 FRAME 0705. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 8, 2023
From: YANDEX EUROPE AG
To: DIRECT CURSUS TECHNOLOGY L.L.C
Reel/Frame 065531/0493 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2023
From: YANDEX EUROPE AG
To: DIRECT CURSUS TECHNOLOGY L.L.C
Reel/Frame 065418/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2020
From: PODLUZHNY, DENIS NIKOLAEVICH; FOMICHEV, ANDREY VLADIMIROVICH
To: YANDEX.TECHNOLOGIES LLC
Reel/Frame 054084/0126 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2020
From: YANDEX.TECHNOLOGIES LLC
To: YANDEX LLC
Reel/Frame 054086/0388 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2020
From: YANDEX LLC
To: YANDEX EUROPE AG
Reel/Frame 054086/0392 →