Skip to content

Commit

Permalink
Update benchmark result and readme
Browse files Browse the repository at this point in the history
  • Loading branch information
JackyWoo committed Jun 24, 2024
1 parent e76b42a commit 896ed1d
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 16 deletions.
16 changes: 9 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
![logo.png](logo.png)
**RaftKeeper** is a high-performance distributed consensus service.

RaftKeeper is a high-performance distributed consensus service.
It is fully compatible with Zookeeper and can be accessed through the Zookeeper
client. It implements most of the functions of Zookeeper (except: Container node,
TTL node, quota etc.) and provides some additional functions, such as more
Expand All @@ -10,12 +9,15 @@ RaftKeeper provides same consistency guarantee:
1. Responses must be returned in order in one session.
2. All committed write requests must be handled in order, across all sessions.

RaftKeeper data resides in memory and provides snapshot + operation log data
persistence capabilities. The execution framework adopts pipeline and batch
execution methods to greatly improve system throughput.
RaftKeeper stores its data in memory, while also offering robust data persistence
through a combination of snapshots and operation logs. To enhance system efficiency,
the execution framework leverages a pipelined and batch processing approach,
significantly boosting overall throughput. Crafted in C++, the system has undergone
extensive low-level optimization to deliver superior performance, ensuring that it
operates at peak efficiency.

The main features of RaftKeeper are its performance and query stability.
1. The write-request throughput is twice as high as Zookeeper
1. The TPS is more than 2x higher than Zookeeper
2. TP99 is smoother than Zookeeper

See [benchmark](benchmark%2FREADME.md) for details.
Expand Down Expand Up @@ -66,7 +68,7 @@ The following is a `zkCli.sh` demo
./zkCli.sh -server localhost:8101
```
Also, RaftKeeper supports Zookeeper's [4lw command](https://zookeeper.apache.org/doc/r3.6.0/zookeeperAdmin.html#sc_zkCommands).
4lw command provide the ablility to monitor and manage RaftKeeper, details see [how-to-monitor-and-manage](docs%2Fhow-to-monitor-and-manage.md)
4lw command provide the ability to monitor and manage RaftKeeper, details see [how-to-monitor-and-manage](docs%2Fhow-to-monitor-and-manage.md)

# How to migrate from Zookeeper?

Expand Down
31 changes: 22 additions & 9 deletions benchmark/README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,45 @@
# RaftKeeper Benchmarks

You can use the Benchmark tool that comes with RaftKeeper to benchmark RaftKeeper performance. Below we compare the performance of ZooKeeper and RaftKeeper.

You can use [raftkeeper-bench](https://github.com/JDRaftKeeper/raftkeeper-bench) to do benchmarking. Below we compare the performance of ZooKeeper and RaftKeeper.


## Environment

```
Server: Docker - 16 cores, 32GB memory, 50GB NVMe disk
Server: Docker - 16 cores, 32GB memory, 100GB NVMe disk
System: CentOS 7.9
Version: RaftKeeper 2.0.0, ZooKeeper 3.7.1
Version: RaftKeeper 2.1.0, ZooKeeper 3.7.1
Cluster: RaftKeeper 3 nodes, ZooKeeper 3 nodes
Config: RaftKeeper log level warning, ZooKeeper log level warn, others is default
Test Data: every item is 100 bytes
Config: default
```

## 1. Write request benchmark (Create-100%)

## 1. Write request benchmark (create-100%)

- Create: every node value is 100 bytes

![benchmark-create-tps.png](images/benchmark-create-tps.png)

![benchmark-create-avgrt.png](images/benchmark-create-avgrt.png)

![benchmark-create-tp99.png](images/benchmark-create-tp99.png)

## 2. Mixed request benchmark (create-10% set-40% get-40% delete-10%)
## 2. Mixed request benchmark (create-1% set-8% get-45% list-45% delete-1%)

- Create: every node value is 100 bytes
- Set: every node value is 100 bytes
- Get: node value is 100 bytes
- List: 100 children, every child 50 bytes
- Delete: delete the created nodes

![benchmark-mixed-tps.png](images/benchmark-mixed-tps.png)

![benchmark-mixed-avgrt.png](images/benchmark-mixed-avgrt.png)

![benchmark-mixed-tp99.png](images/benchmark-mixed-tp99.png)
![benchmark-mixed-tp99.png](images/benchmark-mixed-tp99.png)


## Summary

The TPS of RaftKeeper for create requests is 2.4 times that of ZooKeeper,
and for mixed requests, it is 3 times that of ZooKeeper.
Binary file modified benchmark/images/benchmark-create-avgrt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified benchmark/images/benchmark-create-tp99.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified benchmark/images/benchmark-create-tps.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified benchmark/images/benchmark-mixed-avgrt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified benchmark/images/benchmark-mixed-tp99.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified benchmark/images/benchmark-mixed-tps.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 896ed1d

Please sign in to comment.