Я кодирую планировщик рабочей нагрузки. Я хотел бы, чтобы моя часть программного обеспечения была одноранговым планировщиком, т.е. узел знает только некоторых соседей (других узлов) и использует их для доступа к другим узлам.
Каждый узел будет иметь свою собственную таблицу взвешенной маршрутизации для отправки сообщений другим одноранговым узлам (в основном на основе количества переходов), т.е. «Я хочу, чтобы мастер дал мне мое расписание» или «доступен ли ресурс A на узле B?» : какой сосед ближе всего к моей цели ?
Например, я написал свой собственный протокол маршрутизации, используя XML-RPC
(xmlrpc-c
) и std::multimaps
/std::maps
.
Я думаю об использовании ZeroMQ
для оптимизации потоков данных:
- организация очереди может снизить нагрузку на сеть между одноранговыми узлами;
- подписки можно использовать для публикации обновлений.
Как следствие :
- Мне нужно будет открыть столько сокетов, сколько я создам новых типов соединений;
- Каждый узел должен быть клиентом, сервером, издателем, подписчиком, брокером и каталогом;
- Я не уверен, что моя "одноранговая архитектура" совместима с основной целью ZeroMQ.
Считаете ли вы, что ZeroMQ
может быть полезной концепцией для использования?