У меня есть два сервера s1 и s2 и два приложения a1 и a2. a1 и a2 установлены на s1 и совместно используют некоторые файлы, доступные через монтирование на s2.
Если a1 записывает файл на сервер s2, а a2 получает этот файл с удаленного сервера s2, как кэш на s1 и s2 помогает этому процессу?
Кеш на s1 не сможет полностью удовлетворить запрос чтения на a2, потому что кто-то тем временем мог изменить файл на s2. Спрашивает ли s1 linux s2 linux, был ли файл изменен с момента последнего обращения? Или файл всегда будет ретранслироваться по сети? Значит только кеш s2 может помочь?
Предположительно вы имеете в виду монтирование NFS? дайте нам знать, если нет, поскольку вы не указали эту важную деталь.
Алгоритмы кеширования проверяют, изменился ли файл с тех пор, как этот файл вошел в кеш, и выгружают весь файл, когда обнаруживают, что он изменился.
Поскольку NFS - это система совместного использования на уровне файлов, S2 в этом сценарии обновит метки даты файла после закрытия файла и фиксации любых изменений. Любой другой компьютер, который мог кэшировать этот файл, при запросе этого файла проверит, соответствуют ли штампы штампам кэшированной версии, и если они не совпадают, сбросит кешированную версию и повторно получит ее, при необходимости войдя в кеш новые марки.