И третий вариант - берем две группы, но во второй считаем хэш чуть-чуть иначе
Мы захотели проверить каковы же плюсы и минусы каждого варианта
для этого провели мысленный эксперимент - написали программу, которая эмулирует падение серверов и замеряет разные параметры
Первый график это колличество потерянных данных в худшем случаи, в процентах.
Худший случай для replication factor 1 - потеря сервера с тем же набором метрик
А теперь давайте посмотрим на вероятности потери данных
Как можно видеть, в случаи Replication factor 2 мы будем терять данные при падении любых двух серверов
А на 5-и серверах мы будем терять данные во всех случаях
replication factor 1 же наоборот, имеет хорошие шансы пережить падение двух сервера и даже в общем трех из 8 без потерь
И мы решили что доступность данных для пользователей нам важнее
- 32 фронтэнд сервера
- nginx на фронтэнде получает 200 RPS
- Это выливается в 30000 чтений метрик (в секунду конечно)
- Трафик в процессе записи примерно 11 Гбит в секунду.
- У нас более 200 стораджей в двух ДЦ
- Мы получаем 2 миллиона уникальных метрик в секунду (с учетом репликации получается все 8 на хранение)
- Общий объем виспер-файлов - 130 ТБ
- Мы переписали почти весь графит, кроме carbon-cache'а. Да, мы все еще используем виспер
- nginx на фронтэнде получает 200 RPS
- Это выливается в 30000 чтений метрик (в секунду конечно)
- Трафик в процессе записи примерно 11 Гбит в секунду.
- У нас более 200 стораджей в двух ДЦ
- Мы получаем 2 миллиона уникальных метрик в секунду (с учетом репликации получается все 8 на хранение)
- Общий объем виспер-файлов - 130 ТБ
- Мы переписали почти весь графит, кроме carbon-cache'а. Да, мы все еще используем виспер