Назад | Перейти на главную страницу

масштабирование веб-сайта для одинаково быстрой работы во всем мире

Наш веб-сайт растет, и у нас появляется все больше и больше клиентов по всему миру. Мы используем Nginx, PHP и MySQL. Наши серверы находятся в Великобритании, поэтому в Европе это быстро, но чем дальше мы удаляемся от серверов, тем медленнее становится сайт. (С этого момента назовите меня капитаном).

Поэтому я ищу способы исправить это. У нас получилась стандартная структура:

        [web-servers for dynamic content]           [CloudFlare CDN]
                       |                                    |
               [database-servers]             [web-servers for static content]

Итак, мы кэшируем наш статический контент и задаемся вопросом, как быстро доставить остальную часть веб-сайта по всему миру.

Я думал о двух основных решениях:

  1. наличие одной и той же инфраструктуры в нескольких разных географических точках и использование некоторой формы DNS с географическим местоположением:

    [Country-1]            [Country-2]            [Country-3]
         |                      |                      |       
    [web-servers]         [web-servers]          [web-servers]
         \                      |                      /
                \               |                 /
                           [DATABASES]
    

Теперь я вижу проблему: как поддерживать репликацию MySQL в актуальном состоянии во всем мире? Я считаю, что репликация master master из Сингапура в Лондон не всегда будет актуальной, и задержка, конечно, вызовет проблемы для приложения.

  1. Использование обратных прокси с частными линиями

    [Country-1]            [Country-2]            [Country-3]
         |                      |                      |       
    [Reverse Proxy]      [Reverse Proxy]         [Reverse Proxy]
         \                      |                      /
                \               |                 /
                           [web-server]
                                |
                           [DATABASES]
    

Здесь я думал о том, чтобы иметь частные линии из каждой страны и использовать обратные прокси для создания сети магистралей к нашим серверам, хотя это уже больше похоже на научную фантастику :)

Во всяком случае, я ищу какие-то ресурсы или советы о том, как другие это сделать.