Size: a a a

2021 June 24

W

Warstone in Modern::Perl
Вы не знаете какой из агрегаторов сейчас более нагружен или менее.
источник

М

Млюшевый Пишка... in Modern::Perl
так. что-то не клеится. 80 процессов - каждый это обработчик запроса от пользователя, в нашем случае бОльшая часть работы - это get_by_ctx2, каждый процесс имеет свой контекст, и судя по нашему разговору — имеет свой набор шардов, и работает только с ним, т.е. мы заводим парк шардов равный количеству этих процессов, если процесс умирает, он коннектится к одному из свободных наборов шардов. или же получается иная схема, кажется вот что я не понял. получается вот что: у нас нужен маленький агрегатор, он будет роутить запрос процессора на любой свободный набор шардов?
источник

М

Млюшевый Пишка... in Modern::Perl
watchdog тут будет тем, кто поддерживает сеты шардов в рабочем состоянии, верно?
источник

W

Warstone in Modern::Perl
Тут пора рисовать...
источник

М

Млюшевый Пишка... in Modern::Perl
🙈
источник

W

Warstone in Modern::Perl
Попробую крайний раз... У вас агрегаторов будет столько, сколько наборов шардов вы сможете / посчитаете нужным запихать в память.

Агрегаторы только выдают ответ вовне, который забирают ваши обработчики, где и сидит get_by_ctx2. Вот обработчиков будет 80, а агрегаторов - столько сколько экземпляров шардов.
источник

W

Warstone in Modern::Perl
Если что, тот-же uv умеет слушать и семафоры.
источник

М

Млюшевый Пишка... in Modern::Perl
я всё понял. и агрегатор держат свое соединение со всеми своими шардами. они же асинком делают запрос.  мне не понятно тока как будет балансироваться нагрузка, но это кажется уже задача админов.
источник

М

Млюшевый Пишка... in Modern::Perl
т.е как процессор будет выбирать аггрегатор
источник

М

Млюшевый Пишка... in Modern::Perl
рандомно?=)
источник

W

Warstone in Modern::Perl
Есть 2 варианта...
или по md5(request) % кол-во агрегаторов
или рандомно.

Можно вообще не заморачиваться и отдать это на откуп nginx'у. У него есть возможность размазывать нагрузку на пул серверов. Это все используют. Подойдет и тебе, думаю.
источник

W

Warstone in Modern::Perl
Кстати... md5(time) % count тоже говорят хорошо работает.
источник

М

Млюшевый Пишка... in Modern::Perl
и всегда можно будет скалировать скольк угодно широко.
источник

W

Warstone in Modern::Perl
Мы, допустим, размазываем по md5(user_id) % count. Получается примерно поровну
источник

М

Млюшевый Пишка... in Modern::Perl
рандом тоже неплохо работает кстати.
источник

W

Warstone in Modern::Perl
Ну я думаю... Можно вообще nginx убрать и реально по рандому шардироваться прямо в get_by_ctx2
источник

М

Млюшевый Пишка... in Modern::Perl
выбирая случайный шардик
источник

W

Warstone in Modern::Perl
Ну да
источник

М

Млюшевый Пишка... in Modern::Perl
ммммм
источник

W

Warstone in Modern::Perl
Просто лучше этого я не знаю что сделать. Остальное будет давать 20% прироста в скорости и стоить 80% чего-нибудь.
источник