Release v2.1.0
We are excited to announce RaftKeeper version 2.1.0 has been officially released.
This is a major release following version 2.0.0. In this version, the performance of RaftKeeper has been further enhanced, with create requests seeing an 11% improvement and mixed requests experiencing a significant 118% increase.
You can refer to this article RaftKeeper v2.1.0 Released: Significant Performance Improvements!
Benchmark details see benchmark.
In 2.1.0 we also provide asynchronously creating snapshot which will exreamly reduce user request blocking time.
What's Changed
Update notion
In v2.1.0 we dropped the old snapshot version logic, so
- If update from v2.0.4, feel free to update
- If update from version lower than v2.0.4, please update to v2.0.4 first, then create snapshot by
echo csnp | nc node port
for every nodes, then update to v2.1.0
Feature
- Add metric is_leader by @JackyWoo in #220
- Add more metrics for mntr command by @lzydmxy in #230
- Implement asynchronous snapshot by copying dataTree by @lzydmxy in #247
- Add metric
snap_blocking_time_ms
by @JackyWoo in #254
Performance
- Make snapshot load faster by @lzydmxy in #222
- Speed up list by using compacted strings by @JackyWoo in #297
- Remove the use of thread pools for parallel processing of read request by @lzydmxy in #235
- Remove unnecessary locks in keeperStore by @lzydmxy in #238
- Speed up data tree copying with SIMD and prefetching. by @JackyWoo in #252
- Fix high CPU usage caused by last committed log index manager. by @JackyWoo in #253
- Reserve childs vector size for simpleListResponse by @lzydmxy in #265
- Add configuration socket_option_no_delay by @JackyWoo in #281
- Opimize too many
getsockname
andgetsockopt
system calls by @JackyWoo in #283 - Fix endless loop in last commmitted index thread by @JackyWoo in #275
- Use atomic instead of lock for connections statistics by @lzydmxy in #289
- Avoid ZooKeeperResponsePtr destruction in responses_queue by @lzydmxy in #292
- Handle response serialization in the IO thread by @lzydmxy in #250
Bug Fix
- NIO framework should support macos by @JackyWoo in #214
- Fix built package name by @JackyWoo in #215
- Fix flaky test
test_four_word_command
by @JackyWoo in #226 - Send
FIN
to 4lw client, wait 4lw client to close connection by @lzydmxy in #223 - Fix loading snapshots bug when set log level higher than
INFO
by @lzydmxy in #236 - Release memory when loading snapshot completes by @JackyWoo in #242
- Fix extremely large max latency for error session request by @JackyWoo in #244
- Use read-write-lock for user_response_callbacks by @lzydmxy in #268
- Fix data race by using write-lock for session requests callback by @JackyWoo in #277
- Fix Apple silicon MacOS build error: 32bit platforms are not supported by @JackyWoo in #304
- Fix creating snapshot too frequently caused by int32 overflow by @JackyWoo in #307
- Fix stale log index when there is an snapshot but no log in disk by @JackyWoo in #311
- Fix snapshot never clear by @lzydmxy in #323
- Save term info in snapshot filename by @lzydmxy in #296
Enhancement
- Optimize committed log index manager by @JackyWoo in #216
- Add client_req_timeout parameter to Raft configuration by @lzydmxy in #246
- Removed submodule zlib-ng by @JackyWoo in #257
- Refactor cmake scripts by @JackyWoo in #258
- Support build with clang 16 and newer by @JackyWoo in #269
- Reduce a series of default_timeout_ms for RaftKeeper by @lzydmxy in #272
- Fix too many heart beat logs by @JackyWoo in #286
- Add system nodes for keeper by @lzydmxy in #301
- Disable build with GCC by @JackyWoo in #271
- Use cpp standard 23 by @JackyWoo in #274
Code Refactor
- Fix too many warning log when restarting by @JackyWoo in #218
- Remove lib protobuf by @JackyWoo in #228
- Delete proto from git ignore file by @JackyWoo in #229
- Remove libs re2 and fast_float by @JackyWoo in #232
- Add session and watch manager by @JackyWoo in #262
Document
- Update benchmark result by @JackyWoo in #324
- Adding how to deploy learner mode to how-to-deploy document by @JackyWoo in #260
Others
- Starting v2.0.5 by @JackyWoo in #212
- Add new issue template performance by @JackyWoo in #284
- Remove benchmark tool for we split it as a new project by @JackyWoo in #316
Full Changelog: v2.0.4...v2.1.0