apple / apple/foundationdb

Use data distribution to limit aggregate write load to a storage server

Open
#1,507 0 comments 0 reactions 0 assignees View on GitHub
data distribution
Dominant language
C++
Stars
16.7k
Forks
1.6k
Avg merge
1d 20h
Merged PRs (30d)
126

Description

While we currently support shard splitting to limit the amount of write bandwidth to a single shard, we don't track and manage the total write bandwidth to a single storage server. If a single storage server is responsible for multiple warm shards, it could in aggregate be hot and unable to do anything about it.

As an example, we suspect this could happen if there exist processes in the cluster which are responsible for a smaller amount of data than everybody else. If there are also hot shards in the cluster, they will get split and have a higher chance of moving to the processes that store less data. Done enough times, we could end up with a storage server that has a high aggregate bandwidth.

The proposal then is to track how much total write load each storage server has and move or split shards to mitigate spots where load is high.

Contributor guide

Open the contributing guide

Research direction

Start by studying the existing shard-splitting behavior described in the issue and how storage servers are assigned multiple warm shards. Define how total write load would be tracked and how overloaded servers would trigger shard movement or splitting; done means aggregate write hotspots are mitigated without exceeding server capacity.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
databases, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.