На моем сервере запущена симуляция C ++. В то же время существует код на C #, который в основном используется для сбора статистики. Журналы, которые генерируются кодом C ++, форматируются и используются кодом C #. Две программы работают на одной машине.
Я имею в виду создание журналов моделирования как «производителя», а другой процесс, который форматирует журналы как «потребителя».
В системе работает несколько копий производителя. Фактически в системе могут одновременно работать до 20 производителей. Есть только одна копия потребителя. Журналы производителя имеют уникальные идентификаторы, которые определяют, с какого моделирования поступил журнал.
Если предположить, что у меня достаточно большого объема памяти, каков наилучший способ связи между производителями и потребителями?
В данный момент каждый производитель может создавать журналы со скоростью до 100 МБ / с. Таким образом, наибольшее количество журналов будет составлять 2 Гбит / с. Я подозреваю, что потребитель, возможно, не сможет поглотить такую большую пропускную способность и может отставать от производителей. Я хочу убедиться, что производители не будут оказывать обратное давление, если потребитель недостаточно быстр. Я предполагаю, что у меня достаточно памяти для обработки необработанных журналов.
Я не уверен, каковы мои (лучшие) варианты здесь. Для решения проблемы, которую я имею в виду, я хотел бы найти гибкий метод связи, который: 1) достаточно быстрый, 2) может заботиться о многих производителях, в среде одного потребителя, 3) может использовать большой объем памяти без необходимости 4) Предоставляет простые API-интерфейсы, чтобы мне не приходилось иметь дело с подробными коммуникациями, например, мьютексированием общих ресурсов и т. д.