Горизонтальная масштабируемость для распределенных приложений, как этого добиться? - PullRequest
1 голос
/ 08 июня 2011

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

Но что, если мое серверное приложение позволяет пользователям взаимодействовать друг с другом в реальном времени?

Если ответ на запрос определенного клиента X зависит от контекстаклиента Y, чье соединение управляется другой машиной, тогда необходима связь между машинами.

Я хотел бы знать, какие "дизайнерские решения" используются людьми в таких случаях.

Например, люди в Facebook, должно быть, уже сталкивались с такой ситуацией при включении функции чата в своем социальном приложении.

Заранее благодарю за любые советы.

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Единственное решение для достижения этой цели - использование распределенных кэшей, таких как memcache (Facebook также использует этот подход). Затем вся информация, необходимая для всех узлов, сохраняется в этом кэше (и в базе данных, если она должна быть постоянной), чтобы все узлы могли получить доступ к этой информации (с очень малой задержкой между узлами).

привет

0 голосов
/ 13 августа 2013

Следует рассмотреть некоторые решения, которые обеспечивают прозрачную горизонтальную масштабируемость базы данных и гарантируют семантику ACID.Есть много решений, которые предлагают это на разных уровнях.Люди в Facebook, на которые вы ссылаетесь, решили проблему, приняв возможную последовательность, но ваш вопрос заставляет меня поверить, что вы не можете принять возможную последовательность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...