Consensus-based reliable messaging
First Claim
Patent Images
1. A system, comprising:
- a first server connected to a plurality of follower servers and a network, the first server and each of the plurality of follower servers having a respective one of a plurality of main memories, the first server configured to determine when a message received from a client connected to the network has been committed to the respective one of the plurality of main memories in a predetermined number of the plurality of follower servers, wherein the first server and each of the plurality of follower servers that committed the message to the respective one of the plurality of main memories retain the message in the respective one of the plurality of main memories until requested to remove the message from the respective one of the plurality of main memories by a delivery agent or an archiver;
wherein the first server and each of the plurality of follower servers is configured to maintain a data structure in a respective one of the plurality of main memories, the data structure indicative of each one of the plurality of main memories that currently stores the message.
9 Assignments
0 Petitions
Accused Products
Abstract
A system includes a leader server capable of communicating with a plurality of follower servers and a network. The leader server is configured to determine when a message received from a client connected to the network has been committed to main memory in a majority of the leader and follower servers. The leader server and each of the follower servers that committed the message to main memory retain the message in main memory until requested to remove the message from main memory by a delivery agent or an archiver.
-
Citations
23 Claims
-
1. A system, comprising:
-
a first server connected to a plurality of follower servers and a network, the first server and each of the plurality of follower servers having a respective one of a plurality of main memories, the first server configured to determine when a message received from a client connected to the network has been committed to the respective one of the plurality of main memories in a predetermined number of the plurality of follower servers, wherein the first server and each of the plurality of follower servers that committed the message to the respective one of the plurality of main memories retain the message in the respective one of the plurality of main memories until requested to remove the message from the respective one of the plurality of main memories by a delivery agent or an archiver; wherein the first server and each of the plurality of follower servers is configured to maintain a data structure in a respective one of the plurality of main memories, the data structure indicative of each one of the plurality of main memories that currently stores the message. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
-
requesting by a first server that each of a plurality of follower servers commit a message to a respective one of a plurality of main memories; determining by the first server that the message has been published when a predetermined number of the plurality of follower servers have committed the message to the respective one of the plurality of main memories of the predetermined number of the plurality of follower servers; maintaining by the first server the message in a main memory of the first server until receiving a signal from a delivery agent or an archiver to remove the message from the main memory of the first server; and maintaining a data structure by the first server in the main memory of the first server, the data structure identifying the servers in which the message is stored. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A non-transitory machine readable storage medium encoded program code, wherein when the program code is executed by a processor, the processor performs a method comprising:
-
requesting by a first server that each of a plurality of follower servers commit a message to a respective one of a plurality of main memories; determining by the first server that the message has been published when a predetermined number of the plurality of follower servers have each committed the message to the respective one of the plurality of main memories; maintaining by the first server the message in main memory of the first server until receiving a signal to remove the message from the main memory of the first server, the signal being received from a delivery agent or an archiver; and maintaining by the first server a data structure in the main memory of the first server, the data structure identifying the servers in which the message is stored. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21)
-
-
22. In a system that includes a plurality of respective processors each associated with a respective main memory and at least one or more archive storages and a network interface, a method comprising:
-
receiving a first message by at least one of the plurality of processors from a client over the network; storing respective copies of the first message in the respective main memories associated with a selected number of the processors; archiving at least one respective copy of the first message from at least one of the respective main memories in at least one archive storage; removing the at least one respective copy of the first message from each of the at least one respective main memory from which a copy of the first message has been archived; in the course of archiving, producing in each respective main memory a data structure indicative of each respective main memory and each at least one archive storage that currently stores the first message; outputting the first message for delivery over the network to each of a multiplicity of subscribers; removing the first message from each respective main memory and each at least one archive storage that currently contains the first message after delivery of the message to the multiplicity of subscribers; and in the course of removing the first message after delivery of the message to the multiplicity of subscribers, referring to the data structure to determine each respective main memory and each at least one archive storage that currently contains the first message. - View Dependent Claims (23)
-
Specification