mongodb: набор реплик с балансировщиком нагрузки


9

Есть ли опция для балансировки нагрузки с наборами реплик mongodb? Я не спрашиваю о HAProxy или подобном, но о встроенной функции от mongodb. Не удалось найти советы по этому вопросу в документации.

Ответы:


11

Если вы используете sharding, то «балансировщик нагрузки» - это процесс mongos - фактически он больше похож на маршрутизатор - он хранит копию базы данных config в памяти и может принимать решения на основе ключа shard.

Если вы имеете в виду балансировку нагрузки для идентичных наборов реплик или для членов набора, то существует запрос функции, чтобы монгос также обрабатывал этот сценарий ( https://jira.mongodb.org/browse/SERVER-1594 ), однако как работают драйверы, на самом деле не обязательно (хотя это сделает драйверы менее сложными).

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


2

«Балансировка нагрузки» достигается с помощью шардинга. Разделяя, вы фактически распределяете записи / обновления на отдельные осколки. Не существует специального алгоритма, который бы делал это, так как mongo позволит вам разбить данные на любую комбинацию клавиш, которую вы хотите. Лучшие алгоритмы разбиения - это те, которые содержат последовательность последовательных записей плюс случайный.

Например, идентификатор пользователя может быть разделен следующим образом

xx-sha1(user email) 
xx = time sequence

Помните, что для реализации шардинга вам необходимо иметь три сервера конфигурации и узлы данных. Узлы данных могут быть сгруппированы в наборы реплик для избыточности и могут использоваться (только если вы можете) для чтения данных из вторичных серверов. Я говорю, только если вы можете читать данные, потому что репликация выполняется асинхронно, поэтому нет никакой гарантии, что новые данные будут доступны во время запроса на вторичных серверах.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.