Масштабируемый движок Pub / Sub для реального времени - PullRequest
9 голосов
/ 20 сентября 2011

Я ищу движок паба / суб, со следующими требованиями:

  1. Очень низкая задержка <0,5 с </li>
  2. Масштабируемость
  3. Shardable (основано на географической локализации)

Я хотел бы иметь возможность иметь несколько паб / суб-серверов и иметь возможность публиковать или подписываться на каналы с любого сервера, независимо от того, на каком сервере канал объявлен.

Например:

Если пользователь A подключен к серверу SRV1 и пользователь B подключен к серверу SRV2 , Если пользователь B подписаться на " MyChannel " и пользователь A опубликовать что-то на канале " MyChannel ", пользователь B получит сообщение, даже если он не подключен к тому же серверу.

Я не знаю, сможет ли Redis сделать это. Я не нашел ничего о предмете. Любая помощь приветствуется.

Ответы [ 4 ]

4 голосов
/ 30 сентября 2011

Мы использовали ZeroMQ и его функции паба / саба уже некоторое время, и мы очень довольны тем, что видим.

Также стоит посмотреть, что будет в следующей версии (уменьшение пропускной способности сети за счет увеличения количества запросов на подписку в восходящем направлении)

2 голосов
/ 03 октября 2011

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

Он имеет несколько зрелых реализаций, каждая из которых имеет свои сильные стороны, но, как правило, реализацииМасштабируемость и низкая задержка.

Это те реализации, на которые я бы посоветовал вам взглянуть (если они нужны вам для работы в среде WAN, я думаю, что первые две из них имеют отличную поддержку):

1 голос
/ 18 августа 2015

nanomsg является преемником ZeroMQ, написанным одним и тем же автором и имеющим множество языковых привязок.

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

Если вы ищете исключительную пропускную способность, используйте Kafka.

Обратите внимание, что ни одно из этих решений не реализует геолокацию из коробки, Redis 3.2 будет иметь что-то: http://antirez.com/news/89

Если вы ищете простое, «достаточно хорошее» решение, я бы выбрал Redis (обязательно прочитайте это сообщение в блоге от aphyr сначала).

1 голос
/ 24 сентября 2011

Кажется, вы ищете какой-то тип сообщений. Попробуйте RabbitMQ , с лопатой или federation плагинами

...