-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d30f482
commit 93a4433
Showing
7 changed files
with
72 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
## Concept | ||
To better understand Elasticell’s architecture, you need to understand the Elasticell concept. | ||
|
||
### Store | ||
Store is a service that runs on a single disk. A store manage many cells, and provide data storage for cells, and dispatch messages to cells. | ||
|
||
### Cell | ||
A cell manage some data in range of [start, end), every cell has some replication on different stores, we called these replications Peer. All cell replications with has same id makes up a raft group. Cell's peer maybe scheduled by PD move to another store, or removed from the store. | ||
|
||
A cell has three meta data: | ||
|
||
1. ID, The uniquely identifies of a cell | ||
|
||
2. Data range, Decide which data is managed by the cell | ||
|
||
3. Peers, Cell replications | ||
|
||
4. Epoch, The version of the cell, it will increase every time the peers changes or cell split | ||
|
||
In the raft group, number of cell replications needs to be set an odd number. Usually it is recommended to set to 3 at least. | ||
|
||
### PD (Placement Driver) | ||
PD is the managing component of the entire cluster and is in charge of the following two operations: | ||
|
||
1. Storing the metadata of the cluster such as the cell location of a specific key. | ||
|
||
2. Scheduling and load balancing cells in the store cluster, including but not limited to data migration and Raft group leader transfer. | ||
|
||
As a cluster, PD needs to be deployed to an odd number of nodes. Usually it is recommended to deploy to 3 online nodes at least. | ||
|
||
### Proxy (optional component) | ||
The Proxy server is used for proxy the read and write operation for external application. The proxy is in charge of the following three operations: | ||
|
||
1. Sync cells metadata to local from PD | ||
|
||
2. Receive read and write operation from external application, and forward these operations to the correct store according to metadata and the key. | ||
|
||
3. Receive the response from the store, and forwarding it to the external application. Resynchronize the metadata from PD when an raft error occurs, and retry forward the operation. | ||
|
||
The proxy is stateless and can be scaled. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
## Architecture | ||
To better understand Elasticell’s features, you need to understand the Elasticell architecture. | ||
|
||
 | ||
|
||
The Elasticell has threee components: PD server, cell server, and proxy server. | ||
|
||
### __Compatible with Redis protocol__ | ||
Use Elasticell as Redis. You can replace Redis with Elasticell to power your application without changing a single line of code in most cases([unsupport-redis-commands](./unsupport-command.md)). | ||
|
||
### __Horizontal scalability__ | ||
Grow Elasticell as your business grows. You can increase the capacity simply by adding more machines. | ||
|
||
### __Strong consistent persistence storage__ | ||
Elasticell put your data on multiple machines as replication without worrying about consistency. Elasticell makes your application use redis as a database and not just only the cache. | ||
|
||
### __High availability__ | ||
All of the three components, PD, Cell and Proxy, can tolerate the failure of some instances without impacting the availability of the entire cluster. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters