minor
This commit is contained in:
@@ -16,13 +16,15 @@ SeaweedMQ is designed for use cases that need to:
|
|||||||
|
|
||||||
## What is special about SeaweedMQ?
|
## What is special about SeaweedMQ?
|
||||||
|
|
||||||
* Separate computation and storage nodes that scales independently.
|
* Separate computation and storage nodes to scale independently.
|
||||||
* Offline messages can be operated as normal files.
|
|
||||||
* Unlimited storage space by adding volume servers.
|
* Unlimited storage space by adding volume servers.
|
||||||
* Unlimited message brokers.
|
* Unlimited message brokers to handle incoming messages.
|
||||||
|
* Offline messages can be operated as normal files.
|
||||||
* Scale up and down with auto split and merge message topics.
|
* Scale up and down with auto split and merge message topics.
|
||||||
* Topics can automatically split into segments when traffic increases, and vice verse.
|
* Topics can automatically split into segments when traffic increases, and vice verse.
|
||||||
*
|
* Pass messages by reference instead of copying.
|
||||||
|
* Clients can optionally upload the messages first and just submit the references.
|
||||||
|
* Drastically reduce the broker load.
|
||||||
|
|
||||||
# Design
|
# Design
|
||||||
|
|
||||||
@@ -33,11 +35,12 @@ Among all the brokers, one of them will be selected as the leader by the masters
|
|||||||
|
|
||||||
A topic needs to define its partition key on its messages.
|
A topic needs to define its partition key on its messages.
|
||||||
|
|
||||||
Messages for a topic are divided into segments.
|
Messages for a topic are divided into segments. One segment can cover a range of partitions. A segment can
|
||||||
|
be split into 2 segments, or 2 neighboring segments can be merged back to one segment.
|
||||||
|
|
||||||
During write time, the client will ask the broker leader for a few brokers to process the segment.
|
During write time, the client will ask the broker leader for a few brokers to process the segment.
|
||||||
|
|
||||||
The broker leader will check whether the segment already has assigned the brokers. If not, select a few based
|
The broker leader will check whether the segment already has assigned the brokers. If not, select a few brokers based
|
||||||
on their loads, save the selection into filer, and tell the client.
|
on their loads, save the selection into filer, and tell the client.
|
||||||
|
|
||||||
The client will write the messages for this segment to the selected brokers.
|
The client will write the messages for this segment to the selected brokers.
|
||||||
@@ -49,7 +52,7 @@ The broker leader does not contain any state. If it fails, the masters will sele
|
|||||||
For a segment, if any one of the selected brokers is down, the remaining brokers should try to write received messages
|
For a segment, if any one of the selected brokers is down, the remaining brokers should try to write received messages
|
||||||
to the filer, and close the segment to the clients.
|
to the filer, and close the segment to the clients.
|
||||||
|
|
||||||
Then the clients should start a new segment. The masters should other healthy brokers to handle the new segment.
|
Then the clients should start a new segment. The masters should assign other healthy brokers to handle the new segment.
|
||||||
|
|
||||||
So any brokers can go down without losing data.
|
So any brokers can go down without losing data.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user