Параллельность в AWS RDS (из нескольких приложений Rails)
В настоящее время у меня запущено два приложения Rails на разных серверах. Одно из приложений - это внутренние скребки, которые извлекают данные и сохраняют их в общей базе данных (AWS RDS). Второе приложение - это интерфейс, который извлекает данные из общей базы данных и показывает результаты пользователям.
Мой вопрос:
Я хочу увеличить масштаб моего приложения, запустив его на нескольких экземплярах EC2, чтобы повысить скорость очистки.
- Могу ли я записывать в свою базу данных из нескольких приложений rails одновременно без проблем с параллелизмом?
- Повлияет ли это на скорость записи в базу данных?
- Есть ли лучшее решение, например, увеличение моего единственного сервера (лично я не думаю, что это увеличит производительность очистки)
1 ответ
Конечно, вы можете писать в свою базу данных с нескольких серверов. Если вы обновляете одни и те же записи из нескольких потоков, возможно, вам придется использовать транзакции базы данных, но это не похоже на то, что вы делаете это.
В целом, количество ядер ЦП на сервере базы данных и скорость диска сервера будут влиять на количество одновременных вставок, которые может обработать ваша база данных. Во-первых, вы определенно хотите использовать экземпляр базы данных с поддержкой SSD. Затем вы хотите постепенно увеличить количество серверов, которые вы записываете в базу данных, одновременно наблюдая за процессором, памятью и IOPS на сервере RDS. Вы можете отслеживать эти показатели непосредственно из консоли RDS или консоли CloudWatch.
Если ЦП или память начинают становиться узким местом, вам необходимо увеличить размер вашего сервера (или уменьшить его до нескольких серверов баз данных). Если дисковый ввод-вывод становится узким местом, вы можете либо увеличить размер выделенного тома SSD, чтобы получить более высокий базовый IOPS (с дополнительным преимуществом получения большего доступного пространства), либо напрямую обеспечить IOPS (может быть дорогим).