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

Вопрос по архитектуре: Есть кластер MongoDB с гиганской шардированной коллекицией допустим

в 10 шардов, есть 10 инстансов микросервисов, которые с ним работают. Нужно сделать так чтобы каждый инстанс микросервиса работал с отдельным шардом и запросы на инстансы распределялись согласно ключу шардирования при помощи некоего балансировщика, который представлен скажем в 3-х инстансах.
Существуют ли уже готовые решения-балансировщики, которые умеют это делать?

16 ответов

9 просмотров

Насколько я понимаю, replicaset так и работает. Запросы можно направлять на любой инстанс, он сам разберётся.

Sergey-Nikulitsa Автор вопроса
Александр Д.
Насколько я понимаю, replicaset так и работает. За...

А тут поинт в том, чтобы иметь возможность в каждом инстансе микросервиса зафигачить InMemory кэш

Полагаю, что нужно знать обо всей топологии и для каждого шарда отмечать инстансу микросервиса что шард «занят». Отдельно балансировщика тут не нужно, но внешняя система, например consul/etc/zookeeper может использоваться для такой задачи.

Sergey Nikulitsa
А тут поинт в том, чтобы иметь возможность в каждо...

Кэш данных? Не совсем понятно для чего он, неужели сетевые задержки настолько большие и критичные?

Sergey-Nikulitsa Автор вопроса
Александр Д.
Кэш данных? Не совсем понятно для чего он, неужели...

Кэш данных, да. Сетевые задержки критичны до безобразия. Нужно вот чтоб как будто бы 10 отдельных независимых сервисов с возможностью держать данные в кеше и выдавать их прям из памяти

Sergey Nikulitsa
А тут поинт в том, чтобы иметь возможность в каждо...

А, в такой конфигурации можно по-другому. Перед базой поставить микросервисы-кеши. Если пришёл запрос на микросервис - смотрим в кеш и если нет - идём в базу. А вот ходить к микросервисам уже нужно знать о топологии. и делать какой-нибудь instance = hash(requestId) % instance_count. Главное кейс с переложем и вылетом ответственного за микросервис шарда разрешить (можно в сторону rendezvous hashing глянуть). А есть ли возможность поставить lru кеш перед монгой и забить на шарды вообще?

Sergey-Nikulitsa Автор вопроса
Anton Ermak
А, в такой конфигурации можно по-другому. Перед ба...

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

Sergey Nikulitsa
Кэш данных, да. Сетевые задержки критичны до безоб...

Если задержки критичны, то вы можете выкинуть монгу и запихнуть все данные в ваш сервис, in-memory. И обернуть все это сервис-мешем, где по ключу будет роутинг на нужный инстанс.

Sergey-Nikulitsa Автор вопроса
mc
Если задержки критичны, то вы можете выкинуть монг...

персистить асинхронно в фоновом режиме?

mc
Если задержки критичны, то вы можете выкинуть монг...

Тоже вариант но в случае отказа сервиса время восстановления будет неприемлемо большим, в зависимости от объемов само собой

mc
Реплики. Не надо держать 1 инстанс шарда

И тут вступает проблема их синхронизации, которую довольно сложно решать с нуля

Александр Д.
И тут вступает проблема их синхронизации, которую ...

Тут вопрос как заливать данные. Чем вы готовы пожертвовать.

Woof Собач
Нетворк хопы все не загубят?

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

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

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

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
А что ты вообще делаешь ?
Yesgoter
13
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
18
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Карта сайта