Задержка главной БД с межрегиональной репликацией AWS RDS

. У меня установлено приложение в 3 регионах (ЕС, AP, США ), а мастер MySQL RDS находится в eu-west-1, с репликами чтения в других регионах.

Это отлично работает для запросов на чтение, когда приложение для конкретного региона очень быстро подключается к своей локальной реплике чтения RDS, но когда моему приложению необходимо выполнить запрос на запись, оно должно подключаться к главной БД в eu-west. -1.

При записи в основную БД из США или AP задержка огромна, обычно для завершения вставки требуется около 2,5 с.

Я изо всех сил пытался найти какую-либо информацию о том, как решить эту проблему, Aurora часто упоминается на форумах и в руководствах по глобальным базам данных, но она требует репликации типа экземпляра, причем db.r5 является минимальным, что вскоре становится очень дорогим при запуске нескольких экземпляров.

Сталкивался ли кто-нибудь с проблемой медленной записи между-регионами в главную БД? Поможет ли пиринг VPC ускорить это?

0
задан 22 September 2021 в 05:59
1 ответ

Это не полный ответ, а несколько мыслей, которые можно попробовать, и вопросы, которые не помещаются в поле для комментариев. Пожалуйста, постарайтесь не поддаваться искушению понизить:)

пиринг VPC, безусловно, стоит того, чтобы трафик оставался на магистрали AWS , что должно немного уменьшить задержку. Я не знаю, насколько это поможет. Эти три области находятся на расстоянии 200 -300 мс друг от друга, поэтому у вас всегда будут задержки.

Я подозреваю, что диалог между клиентом и БД представляет собой несколько запросов на одну вставку -, например, создать соединение, подключиться к определенной БД, вставить, зафиксировать, закрыть. Если это так, уменьшение задержки помогает, но более важно исключить некоторые шаги.Используете ли вы пул соединений, чтобы соединения уже были открыты? Я подозреваю, что пиринг VPC и общая оптимизация будут лучшим решением, чем любая из приведенных ниже идей.

Можно ли сделать обновления асинхронными? Если вы можете поместить записи в очередь SQS, обрабатываемые в одном регионе, это, вероятно, будет сделано в течение секунды или двух. Это может быть оптимизация по сравнению с прямым подключением к базе данных, в зависимости от того, насколько быстро оно работает.

Несколько мастеров -— еще один вариант, использующий собственные функции репликации базы данных. Я не совсем уверен, что вы можете сделать это в RDS, но, возможно, стоит посмотреть, возможно ли это, и преимущества/недостатки. Если вы ожидаете, что люди будут обновлять одну и ту же запись одновременно, вам придется защищаться от этого.

Другим вариантом может быть сегментирование данных конкретных пользователей в определенных базах данных. Это сделает логику вашего приложения более сложной.

0
ответ дан 22 September 2021 в 18:06

Теги

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