sofastack/sofa-jraft

RFC: multi-generation log cache

Open

#854 opened on Jun 23, 2022

View on GitHub
 (9 comments) (1 reaction) (0 assignees)Java (1,125 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (3,406 stars)
PR merge metrics
 (Avg merge 20h 13m) (3 merged PRs in 30d)

Description

RFC: multi-generation log cache

As discussion in #840 , jraft keeps a cache for latest log entries, it's unlimited and may consume too much memory under write-heavy workload or catching up replication when node restarts.

I think we can abstracts a cache interface and provide a multi-generation cache to replace current one:

  • Gen-1: totaly in memory with limited capacity.
  • Gen-2: Off-heap cache.When Gen-1 overflows, move the LRU(least recently used) item into off-heap cache such as OHC.

Main goals:

  • Abstracts log cache interface.
  • Provide a multi-generation cache implementation.

Contributor guide