2013-02-21 4 views
1

Рассмотрите игру tic-tac-toe, построенную с Nginx в качестве обратного прокси-сервера и имеющую несколько Rails-серверов. Каждый клиент устанавливает соединение с несколькими серверами Rails. Если два клиента, играющих в игру, подключены к другому серверу Rails, то перемещение, отправленное на один бэкэнд, необходимо перенаправить на другой бэкэнд, чтобы его можно было нажать на другой веб-узел, как показано на рисунке ниже.Связь между процессами Rails

В Rails что такое идиоматический способ связи между двумя Rails-серверами?

enter image description here

ответ

1

В этой ситуации вы должны настроить отдельный WebSocket сервер и подключить как пользователей, так и Rails серверов к нему. Таким образом, вы сможете обрабатывать всех пользователей с одного сервера, не беспокоясь о том, чтобы оштрафовать.

В случае высокого трафика вы также можете настроить несколько серверов WebSocket и реализовать между ними какую-то очередь или шину сообщений, которая будет распространять новые сообщения - например, главный сервер, который будет обрабатывать только распространяемые сообщения и подчиненные серверы, которые будут подключены к нему и отправил все сообщения, полученные от пользователей. Обратите внимание, что в такой конфигурации мастер-сервер не должен обрабатывать соединение с пользователями и сервером только для распространения сообщений между подчиненными.

Окончательный ответ, прямо не отвечающий на ваш последний вопрос, обычно нет необходимости напрямую связываться с серверами Rails - в отличие от серверов WebSocket, которые они обслуживают на основе запроса-ответа, поэтому в большинстве случаев обмениваться информацией через базу данных. Если вам действительно нужно немедленное изменение, тогда вам помогут решения, такие как AMQP.

Смежные вопросы