Мы готовимся к масштабированию стороны API веб-приложения, насыщенного API.Мой (технически подкованный) клиент предлагает довольно нетрадиционный подход к этому: вместо того, чтобы распределять нагрузку на несколько серверов приложений, которые будут взаимодействовать с изолированной базой данных, он хочет, чтобы мы:
- «оголили приложение»серверы », размещая код сервера приложений и базу данных на каждом физическом сервере, так что сервер приложений подключается только к своему собственному шарду;
- серверы приложений общаются друг с другом, когда им требуется доступ к другим шардам (вместо прямого обращения к БД другого шарда;
- пусть клиент API выбирает сам шард приложения (на стороне клиента, основываясь на некотором стабильном хеше) и напрямую обращается к нему.
Основная причина заключается в том, что это наиболее естественный способ сделать это, и что это позволит нам в будущем перейти к многоузловой распределенной системе.
(стек - это PHP + Node.js наMySQL, хотя на этом этапе также рассматривается переход на MongoDB.)
Теперь я не вижу серьезных проблем с ним в готовом виде.Кодирование этих межсерверных взаимодействий может быть несколько громоздким, но тогда оно, безусловно, будет иметь свои преимущества.В принципе, я не знаю, хорошая ли это идея или нет.
Какие плюсы и минусы приходят вам на ум?Я ищу технические проблемы и преимущества здесь.Спасибо!