184 похожих чатов

Привет! Дано: три ноды, на них два кластера - три реплики

и три шарда, типа такого:


<remote_servers replace="replace">
<cluster_shard>
<shard>
<replica>
<host>node1</host>
</replica>
</shard>
<shard>
<replica>
<host>node2</host>
</replica>
</shard>
<shard>
<replica>
<host>node3</host>
</replica>
</shard>
</cluster_shard>
<cluster_replica>
<shard>
<replica>
<host>node1</host>
</replica>
<replica>
<host>node2</host>
</replica>
<replica>
<host>node3</host>
</replica>
</shard>
</cluster_replica>
</remote_servers>

большие таблицы шардируем, мелкие реплицируем. надёжность не стоит как ключевой приоритет, всё чего сейчас хотим - скорости и доступности для клиентов. нагрузка от клиентов - чтение, селекты.

проблема: вместе с количеством пользователей и количеством селектов от них растёт нагрузка, упираемся в пропускную способность дисков - в пиках disk usage на плато 100%, очереди дисков до 60. диски уже самые модные из доступных в облаке ssd, выглядит как нужно скейлиться количеством нод.

навскидку можно
⁃ или мигрировать в совсем новый кластер из скажем 9 нод, по пути равномерно решардируем данные
⁃ или расширить существующий, но не очень понятно как правильно уравновесить данные по нодам

вопрос: имеет ли смысл сделать репликацию шардов? это вдвое увеличит бюджет, очевидно повысит надёжность, но будет ли прирост по пропускной способности, удвоит ли это пропускную способность кластера для селектов? или есть ещё какие хорошие практики для масштабирования?

спасибо!

10 ответов

10 просмотров

Имеет. Удвоит. Половина запросов на одной реплике будет выполняться половина на второй. Можно ещё пооптимизировать запросы, добавить памяти. Сколько памяти?

Arseny- Автор вопроса
Denny [Altinity]
Имеет. Удвоит. Половина запросов на одной реплике ...

ясно, спасибо. памяти в пиках вроде пока хватает, да и в облаке легко накинуть. оптимизация запросов это скорее вопрос обучения ~40 человек, авось постепенно научатся =)

Arseny- Автор вопроса
Denny [Altinity]
Имеет. Удвоит. Половина запросов на одной реплике ...

а когда ещё вырастем через год, как посоветуете масштабироваться дальше? хотим заложиться на будущее, есть ли что-то что нужно учесть сейчас кроме примерной прикидки capacity?

Arseny
ясно, спасибо. памяти в пиках вроде пока хватает, ...

Ну вы сами говорите что диск нагружен в полку, это значит что в кеш память не помещается горячие данные, увеличение ОЗУ самый дешёвый способ это решить.

Arseny- Автор вопроса
Denny [Altinity]
Ну вы сами говорите что диск нагружен в полку, это...

попробуем, спасибо! swap отключен если что, но очевидно Клик сам пишет на диск свой кэш?

Arseny
а когда ещё вырастем через год, как посоветуете ма...

Лучше всего сначала подумать. Банальные ошибки приводят к фулсканам всех пвртиций например. Или например если с умом подойти и построить проджекшины, можно ускорится раз в 100

Arseny
попробуем, спасибо! swap отключен если что, но оче...

Кх использует файловый кеш операционной системы.

Denny [Altinity]
Лучше всего сначала подумать. Банальные ошибки при...

Добрый день. Подскажите, есть ли какой-то источник где можно подробнее прочитать/посмотреть про построение проджекшинов?

Ignatiy Vdovichenko
Добрый день. Подскажите, есть ли какой-то источник...

Видео Амоса смотрели? Мне кажется там все очевидно. Или вот мой пример https://kb.altinity.com/altinity-kb-queries-and-syntax/projections-examples/

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта