Наш веб-сайт растет, и у нас появляется все больше и больше клиентов по всему миру. Мы используем Nginx, PHP и MySQL. Наши серверы находятся в Великобритании, поэтому в Европе это быстро, но чем дальше мы удаляемся от серверов, тем медленнее становится сайт. (С этого момента назовите меня капитаном).
Поэтому я ищу способы исправить это. У нас получилась стандартная структура:
[web-servers for dynamic content] [CloudFlare CDN]
| |
[database-servers] [web-servers for static content]
Итак, мы кэшируем наш статический контент и задаемся вопросом, как быстро доставить остальную часть веб-сайта по всему миру.
Я думал о двух основных решениях:
наличие одной и той же инфраструктуры в нескольких разных географических точках и использование некоторой формы DNS с географическим местоположением:
[Country-1] [Country-2] [Country-3]
| | |
[web-servers] [web-servers] [web-servers]
\ | /
\ | /
[DATABASES]
Теперь я вижу проблему: как поддерживать репликацию MySQL в актуальном состоянии во всем мире? Я считаю, что репликация master master из Сингапура в Лондон не всегда будет актуальной, и задержка, конечно, вызовет проблемы для приложения.
Использование обратных прокси с частными линиями
[Country-1] [Country-2] [Country-3]
| | |
[Reverse Proxy] [Reverse Proxy] [Reverse Proxy]
\ | /
\ | /
[web-server]
|
[DATABASES]
Здесь я думал о том, чтобы иметь частные линии из каждой страны и использовать обратные прокси для создания сети магистралей к нашим серверам, хотя это уже больше похоже на научную фантастику :)
Во всяком случае, я ищу какие-то ресурсы или советы о том, как другие это сделать.