Если бы я должен был создать огромную распределенную систему, пропускная способность которой должна масштабироваться линейно с количеством абонентов и количеством каналов в системе, что было бы лучше?
1) Redis Cluster (только для Redis 3.0 alpha, если он находится в режиме кластера, вы можете опубликовать его в одном node и подписаться на другой совершенно другой node, и сообщения будут распространяться и дойдем до вас). Сложность публикации - O (N + M), где N - количество подписанных клиентов, а M - количество подписанных шаблонов в системе, но как она масштабируется, когда в Redis Cluster? Я принимаю на это обоснованные догадки.
2) ZeroMQ, так как 3.x, он выполняет фильтрацию на стороне сервера, поэтому он также имеет некоторую временную сложность, но я ничего не видел в документации. Если бы я хотел его масштабировать, я мог бы просто иметь множество серверов, публикующих любые каналы, и каждый абонент будет подключаться ко всем серверам и подписаться на нужный канал. Это кажется приятным.
Какой из них лучше подходит для горизонтального масштабирования огромной системы издателя? Какие другие решения я должен изучить? Помните, я хочу свести к минимуму задержку и пропускную способность, но возможность масштабироваться горизонтально.