3

Я создаю веб-приложение для доски с автономными «комнатами» клиентов, которые запускаются с экземпляров Amazon EC2 (на данный момент один). Команды отправляются через websockets на сервер PHP, который хранит все команды в базе данных SQL.Автомасштабирование с помощью Amazon EC2 при использовании SQL

До сих пор я использовал Google Cloud SQL. Мой план состоял в том, чтобы узнать, как масштабировать с помощью EC2 и использовать все экземпляры одной и той же удаленной базы данных. Я узнал, что это не сработает из-за латентности записи 200 мс удаленного сервера SQL против задержки записи на 0,5 мс локального SQL-сервера. Сервер делает запись каждый раз, когда приходит команда.

Я новичок в масштабируемости и распределенных системах. Моя интуиция говорит мне, что мне нужно либо использовать Amazon RDS, либо надеяться на миллисекундные задержки, если мои экземпляры EC2 и RDS находятся в одном регионе или работают с SQL локально в экземплярах EC2. Я склоняюсь к последней. Вот моя проблема: EC2 эластичный. Что происходит, когда мне нужно избавиться от экземпляра?

Все, что я могу сейчас подумать, как-то реплицирует данные SQL из каждого экземпляра EC2 в главный экземпляр (возможно, даже Google Cloud SQL!). Другими словами, все чтения/записи для каждой «комнаты» происходят локально и в конечном итоге реплицируются на главный сервер для долговременного хранения. Если «комната» снова открывается через неделю, другой экземпляр EC2 может захватывать данные с главного сервера, работать с ним локально и реплицировать изменения до их уничтожения.

Действительно ли мой подход звучит правильно - это репликация правильной концепции здесь? Если да, то сколько поддержки для того, что я пытаюсь сделать, уже существует? То есть, мне нужно настроить главный сервер, который управляет экземплярами EC2, и вручную распределяет/собирает данные SQL (100% -ная пользовательская реализация), или существуют ли существующие библиотеки/механизмы для SQL и, возможно, даже репликация/управление экземпляром EC2 ? И если мой подход ошибочен, то какие лучше подходят? Это один из тех случаев, когда я не знаю, что делать самостоятельно. Благодаря!

+0

Возможно, вы захотите изучить AWS Elasticache, если вас беспокоит запись базы данных. Вы все еще можете использовать RDMS для хранения. – user602525

ответ

0

Я согласен с user02525, возможно, посмотрю на использование Elasticache redis, это звучит в большей степени с тем, что вы делаете.

+0

Действительно, это звучит, как redis или memcached, было бы полезно здесь. Что вообще происходит, когда кто-то начинает ударять по памяти? Могу ли я сохранить часть моей базы данных на диск? Или я бы искал другое решение? – user3167423

Смежные вопросы