Electronic mail system with methodology providing distributed message store
First Claim
1. In an electronic mail (e-mail) system, a methodology for storing e-mail messages in a distributed manner across a plurality of data servers in order to tolerate f number of faults in a manner that allows the system to provide continuous operation, the method comprising:
- for each e-mail message to be stored, dividing the message into a mutable portion and an immutable portion, said mutable portion comprising that portion of the message data which is subject to change after the message has been stored, said immutable portion comprising that portion of the message which is not subject to change after the message has been stored; and
storing the message in a distributed manner by;
redundantly storing the immutable portion of the message as immutable message data, f+1 times among selected ones of said data servers, in order to tolerate f number of failures in a manner that allows the system to provide continuous operation; and
redundantly storing the mutable portion of the message as mutable message data, 2f+1 tines among selected ones of said data servers, in order to tolerate f number failures in a manner that allows the system to provide continuous operation, said mutable portion including a mutable pointer indicating where the immutable message data is stored.
13 Assignments
0 Petitions
Accused Products
Abstract
An electronic mail system with a methodology providing distributed message storage and processing is described. In particular, this methodology breaks up how the individual components of message data are stored. Message data itself is broken up into two parts: a metadata (mutable) portion, and an immutable portion. The metadata portion represents that part of the message data that may change over time. This includes message status flags (e.g., the IMAP “message deleted” flag) and the message'"'"'s position within a particular message folder, among other information. The immutable portion, which comprises the bulk of electronic mail data (namely, the message itself), once stored is never edited. Immutable data is written f+1 times on as many unique servers, to tolerate f number of server failures using Lampson'"'"'s stable storage algorithm. The metadata portion is stored 2f+1 times on as many unique servers to tolerate f number of server failures using quorum voting. Once the message has been stored once, instead of being copied, its location is passed around by reference. The system utilizes a two-tier architecture. One tier consists of servers which store message metadata and immutable data, the Data Servers, and servers that operating upon those data, the Access Servers. Message store integrity is maintained in the event of server failure and as the set of Data Servers changes. In the latter case, I/O and storage workloads are dynamically redistributed across Data Servers in an efficient way.
-
Citations
40 Claims
-
1. In an electronic mail (e-mail) system, a methodology for storing e-mail messages in a distributed manner across a plurality of data servers in order to tolerate f number of faults in a manner that allows the system to provide continuous operation, the method comprising:
-
for each e-mail message to be stored, dividing the message into a mutable portion and an immutable portion, said mutable portion comprising that portion of the message data which is subject to change after the message has been stored, said immutable portion comprising that portion of the message which is not subject to change after the message has been stored; and storing the message in a distributed manner by; redundantly storing the immutable portion of the message as immutable message data, f+1 times among selected ones of said data servers, in order to tolerate f number of failures in a manner that allows the system to provide continuous operation; and redundantly storing the mutable portion of the message as mutable message data, 2f+1 tines among selected ones of said data servers, in order to tolerate f number failures in a manner that allows the system to provide continuous operation, said mutable portion including a mutable pointer indicating where the immutable message data is stored. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An improved method for storing messages in an electronic mail (e-mail) system that processes e-mail messages in order to support fault-tolerant operation in a manner that allows the system to provide continuous operation, the method comprising:
-
for a given e-mail message, identifying a first portion of the message that may be edited after the message has been stored and a second portion that may not be edited after the message has been stored; redundantly storing the first portion of the message at least f+1 times among individual machines, to tolerate f number of failures in a manner that allows the system to provide continuous operation; and redundantly storing the second portion of the message at least 2f+1 times among individual machines, to tolerate said f number of failures in a manner that allows the system to provide continuous operation. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. A two-tier e-mail system comprising:
-
a first tier comprising a plurality of access servers for communicating with clients over the Internet via standard protocols, wherein said first tier is connected directly to the Internet; a second tier comprising a plurality of data servers for storing e-mail messages redundantly, wherein said second tier is shielded from direct connection to the Internet so as to prevent malicious packets from reaching the data servers from the Internet wherein said data servers spread storage of replicated copies of e-mail message data across all data servers to protect against failures that cause loss of a particular data server, and wherein said access servers communicate with said data servers over a data network and manage redundant storage of objects across the data servers; and program logic for instructing the data servers to store e-mail messages redundantly in order to provide fault-tolerant operation in a manner that allows the system to provide continuous operation, wherein, in order to tolerate f number of failures, each e-mail message is divided into an immutable portion stored at least f+1 times among selected ones of said data servers and a mutable portion stored at least 2f+1 times among selected ones of said data servers. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40)
-
Specification