Итак, у меня есть идея создать высоконагруженное приложение с использованием Ruby on rails. Однако есть вопросы по поводу концепции проекта.
Основная идея
Client->Load Balancer -> Server_1 ->Database_1 (Master)
-> Server_2 ->Database_2 (Slave)
Я так понимаю, что балансировщик нагрузки анализирует трафик и отправляет его на один из серверов. Они вызывают базу данных для получения данных, но я хочу включить сюда
Что касается первого пункта, я думаю, что я должен также поставить его за балансировщик нагрузки и просто отправлять ему важные данные через приложение. Я прав? Но я не знаю, где мне разместить сервер API, потому что он должен работать отдельно. Есть ли в балансировщике нагрузки некоторые функции, которые позволяют повторно отправить запрос на другой сервер, например, если запрос api.example.com/get/data/id/1
спросили, чем отправить его server_3
где находятся методы, выполняющие этот запрос?
И последний вопрос о кеш-сервере. Я не совсем понимаю, как работает например лазурный веб-балансировщик? Может ли это решить эту проблему, или я должен добавить свой собственный кеш-сервер? И где его разместить?
P.S. Я просто читаю и пытаюсь составить приблизительную картину своего проекта.
Правильно, ваш сервер сбора статистики должен находиться полностью за балансировщиком нагрузки. Потребляет ли он данные напрямую с серверов, будь то tail
журналы доступа, или вы отправляете данные специально в него, или что-то еще. Это не имеет ничего общего с балансировщиком нагрузки.
Может ли API сосуществовать с основным приложением? Если можно, просто установите API на обоих server_1
и server_2
, с другой привязкой, и просто позвольте ему балансировать нагрузку со всем остальным.
Если API не может сосуществовать на server_1
или server_2
, затем поместите его на тот же уровень, что и другие серверы (скажем, server-3
) и добавьте правило в балансировщик нагрузки для отправки запросов, соответствующих api.example.com
к server_3
только.
Я не уверен, что вы имеете в виду под кеш-сервером. Кеш-сервер может быть чем-то вроде memcached
или redis
, и в этом случае он находится за вашим сервером приложений. Но это могло быть что-то вроде varnish
в этом случае он живет в фронт вашего балансировщика нагрузки. Или это может быть что-то вроде Cloudflare или Fast.ly, которое находится за пределами вашей сети, между клиентом и вашим балансировщиком нагрузки.