Я разрабатываю проект, который ограничивает содержание периодическими платежами (подписками) и отдельными способами оплаты.
Теперь мне нужно распространить контент по всему миру, однако из-за того, что все должны проходить через мой основной сервер, чтобы проверить платежные подтверждения, чтобы предоставить и разрешить предварительно подписанный URL-адрес, точка CDN немного теряет смысл в моей голове.
Привожу пример:
Если на этом последнем шаге я мог бы использовать CloudFront для «улучшения» перенаправления изображений, это все равно дает много времени для завершения цикла, потому что мой процесс проверки находится в Европе.
Есть ли способ проверить, заплатил ли пользователь в Северной Америке? Я знаю о репликации (имеются в виду реплики PostgresSQL и второй внутренний сервер), но если для процесса загрузки требуется основная база данных, в какой-то момент запрос должен будет отправиться в Европу для выполнения.
Нужно ли моему приложению проверять, где находится пользователь, чтобы получить доступ к ближайшему внутреннему серверу, который может работать только в процессе чтения? Это означает еще один сервер в Северной Америке.
Немного запутался, поэтому приветствуются все точки зрения.
Спасибо. Может быть, я не правильно объяснил. Я имел в виду, что запросы Uploads, например, разрешить пользователю загружать изображение, требуют сохранения этого реестра в основной базе данных, следовательно, в какой-то момент для выполнения этого действия потребуется отправиться в Европу.
Название и содержание вашего вопроса можно переработать, чтобы сделать его более целенаправленным.
Как вы сами сказали, в пункте номер 3. CDN выполняет именно свой номинальный вариант использования, избавляя вашего пользователя от необходимости извлекать изображение из центра обработки данных далеко (помещая объект или статическое содержимое ближе к пользователю)
Существуют различные методы дальнейшего сокращения задержки пользователя путем размещения рабочего кода/кода приложения ближе к пользователю и размещения базы данных ближе к тому месту, где выполняется ваш код. CDN не является одним из способов реализации этих методов.
Спасибо за ваш ответ. Итак, это означает, что мне понадобится еще один внутренний сервер в Северной Америке (в данном случае), чтобы проверять платежи пользователей? Но что будет с загрузками. Насколько я знаю, в базах данных SQL существует только 1 основная база данных, это означает, что в какой-то момент запрос на загрузку будет отправлен в Европу. Надеюсь, мое объяснение было понятным.
Да, без изменения архитектуры вашего приложения, приближение кода приложения к пользователю по-прежнему имеет много преимуществ. Поскольку соединение от сервера приложений к серверу базы данных часто осуществляется между центрами обработки данных с выделенным соединением. Обычно это намного быстрее, чем если бы пользователь достигал земного шара, чтобы связаться с вашим приложением.
Кроме того, я надеюсь, вы знаете, что пользователь может загружать напрямую на S3... поэтому в процессе загрузки не требуется глобальная передача тяжелых данных туда и обратно... только запись в БД.
«в какой-то момент запрос должен будет отправиться в Европу, чтобы быть выполненным». Это не то, как работает репликация. Изменения реплицируются по мере их возникновения (или вскоре после этого), а не при запросе измененных данных.