Монголбская кластерная архитектура

У меня есть кластер mongodb на AWS. Чтобы уменьшить задержку в сети, я хочу иметь несколько шардов в разных регионах. В каждом регионе будут узлы приложений, которые подключаются к локальным хостам. Как я могу гарантировать, что mongos всегда будет отправлять запросы в ближайший осколок, чтобы уменьшить задержку. Я нашел решение, использующее тегирование с осколками, которое состоит в том, чтобы пометить каждый набор реплик в зависимости от региона и добавить во все запросы поле, указывающее, из какого региона был сделан запрос. Но мне было интересно, есть ли другое решение для настройки монго, чтобы географически знать о шардах. Спасибо!

1 ответ

Существует значение предпочтения чтения "ближайший", которое на самом деле использует задержку между MongoS и MongoD, чтобы определить, какой из элементов наилучшего / самого быстрого набора для запроса. Вы можете найти документацию об этом здесь: https://docs.mongodb.org/manual/reference/read-preference/

Выбор основан на "выборе участника". Для такого сегментированного кластера, как ваш, вы можете найти способ выбора узла в MongoS: https://docs.mongodb.org/manual/core/read-preference-mechanics/.

Здесь важно отметить, что "ближайший" не заботится о типе узла. Таким образом, даже если вы делаете запрос на чтение, вполне возможно, что MongoS выберет основной (что иногда не так, как вы ожидаете). Чтобы исправить это, единственный способ - использовать теги, которые вы уже упоминали.

Надеюсь, это поможет!

Другие вопросы по тегам