#mysql #geolocation #amazon-ec2 #regions
#mysql #геолокация #amazon-ec2 #регионы
Вопрос:
У меня есть сайт, который обращается к базе данных MySQL, которая находится в облаке с Amazon. Сайт расположен на разных серверах, и какой сервер обслуживает сайт, зависит от местоположения пользователя. Все хорошо, когда доступ к базе данных осуществляется из США, но когда пользователи в Азии или Европе открывают сайт, он просто зависает, потому что вызов базы данных занимает слишком много времени.
Как вы можете сказать, я вообще не очень разбираюсь в «серверных вещах» (я всегда работал с людьми, которые делают для меня подобные вещи), поэтому мой вопрос прост…Как это обычно делается? Я не могу представить, что обычно существует 3 разных экземпляра базы данных MySQL, которые синхронизируются друг с другом. Какова типичная архитектура для обработки такого рода вещей?
Спасибо. Извините за несколько простой вопрос, но была бы признательна любая помощь в обучении веб-специалиста тому, как все должно быть сделано под капотом.
Комментарии:
1. Больше похоже, что это связано с ServerFault, чем ТАК.
Ответ №1:
На самом деле, наличие нескольких экземпляров MySQL, которые синхронизируются (просматриваются replication
), вовсе не такое плохое решение. Однако у этого есть недостатки, поэтому новые веб-сайты ищут другие решения. Например, они пробуют MongoDB или CouchDB вместо MySQL, потому что это легче масштабируется и реплицируется. Кэширование также может очень помочь. Используйте распределенный кэш (пул memcache, кэш Varnish и т.д.) И убедитесь, что вашим приложениям редко приходится обращаться к базе данных напрямую.
Проще всего было бы: почему вы для начала распределяете пользователей по географически разрозненным серверам? Разве вы не можете обслуживать международных пользователей также с серверов в США?
Комментарии:
1. Из того, что я прочитал о репликации, разве это не настройка типа slave и master? Мне понадобились бы три разные базы данных для синхронизации друг с другом, независимо от иерархии. Кроме того, существует ли риск того, что новая запись поступит в базу данных № 2, пока база данных № 1 пытается синхронизироваться с ней? Тогда в базе данных № 2 появится новый идентификатор, который совпадает с номером строки, которую пытаются вставить из базы данных № 1.
2. Вам действительно следует посмотреть репликацию MySQL, это не моя компетенция. Я знаю, что это правильное решение вашего вопроса, но оно не особенно простое. Отсюда недавний интерес к другим типам баз данных, которые предлагают гораздо более простое распространение.