Как сделать «load-balencer» для сервера баз данных? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть приложение ios / Android, которое я скоро выпустлю в производственном режиме.Я думаю о создании серверной инфраструктуры настолько гибкой, насколько это возможно, чтобы полностью избежать любой задержки для всех пользовательских запросов.Я хочу охватить как можно больше вопросов о перегрузке / превышении размера, чтобы не возвращаться к ним позже, когда мое приложение будет в сети.

Пока у меня есть облако (публичное облако OVH) с одним экземпляром сервера Apache.Я хочу реализовать «сервер измерений», который отслеживает любые перегрузки на всех этих серверах Apache в режиме реального времени.Если это обнаруживает перегрузку в ЦПУ / памяти / числах потока?(Я не знаю, что именно контролировать на самом деле), он автоматически вызывает OVH Public Cloud API для создания нового экземпляра машины.Это легко, так как все серверы Apache исправлены: у них все время одни и те же php-скрипты.Между прочим, я еще не реализовал это, и это может отнять у меня много времени на настройку, поэтому, если вы знаете какого-либо облачного провайдера, который бы выполнял измерения и выполнял работу «создание / удаление экземпляра в функции загрузки нагрузки» дляя вместо того, чтобы делать себя?

Тем не менее, самый важный вопрос, который я хотел задать: как я могу сделать свою базу данных полностью гибкой, поскольку данные меняются каждый раз?Насколько это может быть (1) гибким по размеру (я не хочу смущаться, когда достигну предела размера базы данных) (2) гибким по назначению?(точно так же, как загрузка нагрузки и автоматическое создание / удаление экземпляров для сервера apache).Проблема (2) является наиболее важной, потому что я думаю, что пройдет много времени, прежде чем моя база данных достигнет 4To (дополнительный размер жесткого диска для моего провайдера).Хотя, я думаю, это плохо для поддержки такой большой базы данных, возможно, для производительности лучше иметь несколько.

Для (2) я слышал о мастере MySQL, используемом для операции записи, которая передает данные на все ведомые экземпляры.и загрузочный балансировщик для операции чтения.Хотя, что, если write master тоже перегружен?Для (1) я слышал о «кластеризации» базы данных, которая, по-видимому, недоступна в MySQL.

Но моя проблема в общем, я абсолютно не представляю, как объединить (1) проблему и (2) проблему, чтобы покрыть все проблемы, с которыми я мог столкнуться в будущем, с моим сервером базы данных приложения.

...