Проблема пропускной способности многоадресной рассылки Nanomsg
Могу ли я иметь чистую многоадресную передачу в протоколе pub/sub nanomsg. Поскольку может быть N подписчиков, заинтересованных в конкретных данных для одного издателя, одни и те же подписанные данные передаются в N разных потоков. Если моя полоса пропускания для одного потока составляет 10 МБ, тогда общая полоса пропускания, требуемая для N потоков, составляет 10*N, таким образом Существует увеличение пропускной способности. Можем ли мы уменьшить эту пропускную способность, как мы делаем в многоадресной рассылке? Может кто-нибудь помочь мне в этом вопросе?
1 ответ
Насколько я понимаю шаблон PUB/SUB, данные будут отправляться всем подписчикам по одному. Если подписчик не готов принять его, данные отбрасываются. Я считаю, что данные в PUB/SUB отправляются последовательно.
Однако вы можете лучше контролировать отправку данных, если используете шаблон PUSH/PULL. Вы можете иметь N PULLers и один PUSHer. PUSHer отправит данные всем PULLER по одному. Разница в том, что вы можете контролировать время и ждать более медленных PULLers.
Если вам не нравятся множественные передачи, единственный другой механизм, о котором я могу подумать, это общая память. Один отправитель и несколько получателей. Этот сценарий применим только для одного компьютера.
Таким образом, ответ - нет. Вы не можете иметь чистое мульти-приведение в протоколе Nanomsg Pub/ Sub. Если вам нужна чистая многоадресная рассылка, вам нужно взглянуть на другие протоколы. Возможно, входящий nng может предоставить его по UDP.
Если многоадресная рассылка является обязательной, вы должны проверить другие протоколы, см., Например, NACK-Oriented Reliable Multicast (NORM).