Балансировка нагрузки с использованием PHP? Это эффективно? - PullRequest
0 голосов
/ 15 ноября 2018

Сервер 1:

<?php 
$servers = array("server2", 
              "server3", 
              "server4"); 
$server = $servers[array_rand($servers)]; 
header("Location: http://$server"); 
?>

Сервер 2:

Клонированный веб-сайт

Сервер 3:

Клонированный веб-сайт

Сервер 4:

Клонированный веб-сайт

Сервер 5:

Сервер базы данных, обслуживающийвсе серверы

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

Я мог бы загрузить несколько серверов 1например, с использованием Roundrobin DNS.

Более того, я мог бы улучшать сценарий на сервере 1, чтобы периодически проверять состояние работоспособности, чтобы убедиться, что он не перенаправляет сервер, который вышел из строя.

Это, безусловно, может сбалансировать неограниченное количество серверов, я мог бы просто увеличить количество серверов с балансировкой нагрузки через DNS, если нагрузка слишком высокая?Я не вижу проблемы с этим, но ясно, что должен быть, поскольку никто не использует этот метод

Я хотел бы знать, что это будет хороший подход к балансировке нагрузки, если не так, как именноэто будет сделано?Есть ли проблемы с этим подходом?

1 Ответ

0 голосов
/ 15 ноября 2018

Во-первых, большая часть нагрузки на сервер зависит от Sql и тяжелых запросов, поэтому вместо обработки нескольких серверов выполняется запрос.Вы можете сделать это

  1. Сделать Sql реплику (подчиненный сервер) использовать для чтения, а мастер пользователя для записи.
  2. Используйте Memcache или Redis для предотвращения постоянного получения общих данных из базы данных.
  3. Предотвратить ненужную загрузку / запрос.
  4. Использовать CDN
...