Мне нужно обмениваться данными между двумя приложениями Java, работающими на одной машине (две разные JVM). Я уточняю, что объем передаваемых данных велик (около 7 ГБ). Приложения должны получать доступ к данным очень быстро, потому что они должны отвечать на входящие запросы с очень высокой скоростью. Я не хочу, чтобы каждое приложение хранило копию данных.
Я видел, что один из вариантов - использовать файлы с отображением памяти. Приложение A получает данные откуда-то (скажем, из базы данных) и сохраняет их в файлах. Затем приложение B может получить доступ к этим файлам с помощью java.nio
. Я не знаю точно, как работают файлы с отображением памяти, я знаю только, что данные хранятся в файле и что этот файл (или его часть) отображается в область памяти (виртуальная память?). Итак, два приложения могут читать-писать данные в памяти, и изменения автоматически (я полагаю?) Фиксируются в файле. Я также не знаю, существует ли максимальный размер файла, который будет полностью отображен в памяти.
Мой первый вопрос: каковы разные возможности для двух приложений обмениваться данными в этом сценарии (я имею в виду, принимая во внимание, что объем данных очень велик и доступ к этим данным должен быть очень быстрым)? Я уточняю, что этот вопрос не относится к вводу-выводу с отображением памяти, он просто для того, чтобы узнать, каковы другие способы решения той же проблемы.
Мой второй вопрос: каковы плюсы и минусы использования файлов с отображением в память?
Спасибо