⚙️ Подробный разбор этапов: Elasticsearch.
Входящие параметры:
11500 (~12000) сообщений в секунду в топик.
Размер сообщения ~2КБ.
Расчеты:
✅Data-ноды — ноды для хранения данных и чтения из них:
2КБ * 12000 * 3600 * 24 = 2ТБ/сутки.
2ТБ * 30 = 60ТБ за 30 дней.
Нужна репликация для отказоустойчивости и масштабируемости чтения.
Добавим фактор репликации = 2.
60ТБ * 2 = 120ТБ с учетом реплики.
Примерно 15% займут индексы:
120ТБ + 15% = 138ТБ (~140ТБ).
Добавляем шардирование:
Будем хранить по 2ТБ на 1 шарде, 140 / 2 = 70 шардов.
Рассчитаем количество data-нод кластера. На одну ноду поместим 10 шардов:
70 / 10 = 7 нод.
Рассчитаем RAM: на каджые 2ТБ данных добавляем 1ГБ RAM.
140ТБ / 7нод * 2 GB = 40GB RAM на ноду, с запасом сделаем 64GB.
Рассчитаем CPU: на каждый шард по 1.2 CPU.
70 / 7 * 1.2 = 12 CPU на ноду, запас 16 CPU.
✅Master-ноды — ноды для управления данными в кластере:
Стандартный кластер — 3 ноды по 4CPU / 16RAM / 100GB SSD
Эти ноды не хранят данные приложения, а хранят только метаданные кластера и журналы операций.
✅Coordinating-ноды — принимают запросы от клиентов и управляют их выполнением на data-нодах:
Стандартный кластер — 3 ноды по 16CPU / 32RAM / 100GB SSD
Эти ноды также не хранят данные приложения — вся работа происходит в оперативной памяти и передается по сети.
Ссылка на кейс 👈
Ссылка на общее решение 👈
Системный анализ | Дмитрий Помаскин
Post #188
723