Назад | Перейти на главную страницу

Понимание концепции высоконагруженного приложения

Итак, у меня есть идея создать высоконагруженное приложение с использованием Ruby on rails. Однако есть вопросы по поводу концепции проекта.

Основная идея

Client->Load Balancer -> Server_1 ->Database_1 (Master)
                      -> Server_2 ->Database_2 (Slave)

Я так понимаю, что балансировщик нагрузки анализирует трафик и отправляет его на один из серверов. Они вызывают базу данных для получения данных, но я хочу включить сюда

  1. Статистический сервер, который просматривает данные на многих уровнях.
  2. Сервер API, который позволяет разработчикам общаться с сервером.
  3. Кэш-сервер

Что касается первого пункта, я думаю, что я должен также поставить его за балансировщик нагрузки и просто отправлять ему важные данные через приложение. Я прав? Но я не знаю, где мне разместить сервер API, потому что он должен работать отдельно. Есть ли в балансировщике нагрузки некоторые функции, которые позволяют повторно отправить запрос на другой сервер, например, если запрос api.example.com/get/data/id/1 спросили, чем отправить его server_3 где находятся методы, выполняющие этот запрос?

И последний вопрос о кеш-сервере. Я не совсем понимаю, как работает например лазурный веб-балансировщик? Может ли это решить эту проблему, или я должен добавить свой собственный кеш-сервер? И где его разместить?

P.S. Я просто читаю и пытаюсь составить приблизительную картину своего проекта.

  1. Правильно, ваш сервер сбора статистики должен находиться полностью за балансировщиком нагрузки. Потребляет ли он данные напрямую с серверов, будь то tailжурналы доступа, или вы отправляете данные специально в него, или что-то еще. Это не имеет ничего общего с балансировщиком нагрузки.

  2. Может ли API сосуществовать с основным приложением? Если можно, просто установите API на обоих server_1 и server_2, с другой привязкой, и просто позвольте ему балансировать нагрузку со всем остальным.

    Если API не может сосуществовать на server_1 или server_2, затем поместите его на тот же уровень, что и другие серверы (скажем, server-3) и добавьте правило в балансировщик нагрузки для отправки запросов, соответствующих api.example.com к server_3 только.

  3. Я не уверен, что вы имеете в виду под кеш-сервером. Кеш-сервер может быть чем-то вроде memcached или redis, и в этом случае он находится за вашим сервером приложений. Но это могло быть что-то вроде varnish в этом случае он живет в фронт вашего балансировщика нагрузки. Или это может быть что-то вроде Cloudflare или Fast.ly, которое находится за пределами вашей сети, между клиентом и вашим балансировщиком нагрузки.