Межпроцессного взаимодействия

Каковы плюсы и минусы использования файла для межпроцессного взаимодействия? Позвольте мне дать некоторое представление о контексте, в котором я задаю этот вопрос.

Проблема заключается в классической проблеме производителя с некоторыми ограничениями. Производители представляют собой совокупный процесс, работающий на кластере машин, и общаются друг с другом с помощью широковещательных рассылок. У каждого процесса есть локальные пользователи, о которых он знает, а также позволяет другим процессам знать о них с помощью вышеуказанного механизма широковещания. До сих пор государственная информация, которая транслировалась / передавалась, не сохранялась, а теперь должна быть.

Эта система уже несколько лет работает на производстве и поддерживает тысячи пользователей, и люди по понятным причинам очень опасаются добавлять в нее какую-либо дополнительную зависимость, чтобы добавить поддержку персистентности. Путь, который мы выбрали, состоял в том, чтобы создать новый поток в существующем процессе, который записывает локальный трафик в файл в файловой системе, который затем читается новым процессом (давайте назовем его потребителем) и сохраняется. Преимущества, которые мы видим с этим подходом:

Мы получаем упорство бесплатно. Если у нового процесса есть проблемы, мы не теряем локальный трафик, так как записываем его в файловую систему. Пока потребитель знает, где он остановился, всякий раз, когда он появляется, он может начать обработку данных.Там нет никакой кривой обучения для использования библиотек очередей его простой старый файл ввода-вывода Unix.Самым большим преимуществом является то, что мы вообще не влияем на текущий процесс создания, кроме нового потока для записи в файл.

Некоторые из проблем с этим подходом:

Блокировка и конфликт файлов и его влияние на производительность.Убедитесь, что буферы записи очищены, а производитель снимает блокировку файла только после того, как в файл было записано полное событие. Потребитель должен прочитать неполные записи.

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

Ответы на вопрос(1)

Ваш ответ на вопрос