Масштабируемые сокет-серверы - PullRequest
3 голосов
/ 27 сентября 2011

Предполагая, что клиенты чата в реальном времени (Skype, Windows Live Messenger) используют сокеты, чтобы оставаться на связи с соответствующими службами, какие стратегии разработчики реализуют для масштабирования своих серверов?Даже такая система, как Xbox LIVE, где пользователи могут общаться и отправлять игровые приглашения своим друзьям в Интернете.

Основная проблема заключается в том, что каждое из этих подключений должно иметь общее состояние;некоторые из этого состояния должны запрашиваться другими клиентами (которые могут быть подключены к другому серверу за балансировщиком нагрузки на другом конце света).Самый очевидный из них - это статус в сети.

Используют ли эти сервисы гигантские кэши на основе ОЗУ (возможно, что-то вроде memcached) или базы данных NoSQL (например, Cassandra), к которым все серверы по всему миру подключаются, обновляют и получают требуемое состояниеинформация.

Мне было интересно, будет ли такое решение достаточно быстрым (или разумным) для служб реального времени, подобных тем, что я описал выше.

Моя главная проблема с памятью.Распределение нагрузки является довольно простым (я надеюсь) с комбинацией балансировщиков нагрузки и циклической балансировки DNS.

1 Ответ

3 голосов
/ 27 сентября 2011

Вот в одну сторону .Хотя это не обязательно связано с кэшированием на основе памяти

...