Я пробовал использовать систему под названием ROS (http://www.ros.org) для некоторой работы.Много портов с небольшим количеством данных или один порт с большим количеством данных?
Существует множество различных типов данных, которые отправляются между сетевыми узлами в ROS. Вы определяете структуру данных, которую вы хотите отправить в сообщении, и ROS будет обрабатывать открытие определенного порта между двумя узлами, которые будут отправлять эту структуру данных только.
Так что, если есть 5 разных сообщений, будет 5 разных портов.
В отличие от этого сценария, я видел другие платформы, которые просто толкают все разные сообщения через один порт. Это означает, что должно быть какое-то мультиплексирование/демультиплексирование (выполняется путем какого-либо разбора сообщений на конце приемников).
Что мне интересно ... что лучше с точки зрения производительности?
Быстро ли работают операционные системы на основе портов, так что системе, такой как ROS, не нужно делать слишком много работы, чтобы разобраться в том, что есть в сообщении, и интерпретировать его?
ИЛИ
открывает множество портов будет означать много медленных вызовы ядра, а стоимость того, чтобы разработать и перевести типы сообщений в конечном итоге больше, то время, потраченное переключение между портами?
Когда это масштабируется для большого количества данных с высокой скоростью и множеством различных типов сообщений, будет много портов. Поэтому я предполагаю, что при масштабировании каждой из этих топологий производительность будет значительным фактором при выборе способа работы.
Следует также отметить, что эти узлы обычно существуют в одной небольшой сети или большую часть времени на одном компьютере, в котором сеть используется как сила межпроцессного взаимодействия. Таким образом, время передачи является лишь очень небольшим фактором в общем времени системы.
ROS, являющийся архитектурой для роботов, может иметь один узел для каждого датчика и исполнительного механизма, поэтому, в зависимости от сложности вашей системы, мы можем говорить о 20-30 узлах, которые толкают данные малого размера (100 байт или около того) между 10- 100Hz
спасибо jldupont, я уточню вопрос более подробно. Я не рассматривал проблему на этом уровне – Fuzz