Насколько масштабируема ZeroMQ? - PullRequest
8 голосов
/ 15 февраля 2012

Насколько масштабируем ZeroMQ? Мне особенно интересно понять его потенциал для работы с большим количеством (от 10 000 до 15 000) ядер.

Ответы [ 3 ]

10 голосов
/ 15 февраля 2012

Вы не упоминаете, находятся ли ваши ядра 10k или 15k в одной коробке или нет.

Давайте предположим, что они есть.Каждые два года число ядер на коробке теоретически может удваиваться.Итак, если у нас сегодня 16-ядерные блоки, то через 20 лет это будет 16K ядер.

Итак, теперь ваш вопрос, возможно, «поможет ZeroMQ моему приложению масштабироваться до такого огромного количества ядер, чтобыэто будет масштабироваться в течение следующих 20+ лет?Ответ «да, но только если вы используете это правильно».Это означает проектирование вашего приложения с использованием сокетов и шаблонов inproc, которые должным образом разделяют работу и поток данных.Вам нужно будет со временем корректировать архитектуру.

Если ваш вопрос: «Могу ли я выгодно использовать столько ядер между несколькими приложениями», ответ лежит на ваших операционных системах больше, чем на ZeroMQ.Может ли ваш слой ввода / вывода справиться с нагрузкой?Вероятно, да.

А если ваш вопрос «могу ли я использовать ZeroMQ в облаке 10–16 тыс. Ящиков», то ответ «да, это уже доказано на практике».

9 голосов
/ 15 февраля 2012

Мы пытались сделать его максимально масштабируемым, но я лично тестировал только до 16 ядерных блоков.До этого предела мы видели почти линейное масштабирование.

5 голосов
/ 15 февраля 2012

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

ZeroMQ уже имеет репутацию самого быстрого структурированного протокола обмена сообщениями, поэтому, если вы собираетесь проводить тесты для выбора технологии, ZeroMQ определенно должен быть одним из них.

Двумя основными причинами использования ZeroMQ являются его простой в использовании мультиязычный API (см. Все примеры на сайте Руководства ZeroMQ) и его низкие накладные расходы как с точки зрения количества байтов в сети, так и с точки зрения задержки.Например, ZeroMQ может использовать многоадресную передачу UDP для запуска быстрее, чем любой протокол TCP, но программисту приложения не нужно изучать новый API.Это все включено.

...