Skip to content

Release v2.1.0

Compare
Choose a tag to compare
@JackyWoo JackyWoo released this 24 Jun 03:08
· 61 commits to master since this release

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!

  1. TPS(create-100% )
    image

  2. TPS(create-1% set-8% get-45% list-45% delete-1%)
    image

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

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 and getsockopt 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

Code Refactor

Document

Others

Full Changelog: v2.0.4...v2.1.0