App Fabric способен кешировать файлы или только запросы к базе данных?
У меня есть функция, которая находится на каждом из наших узлов. Функция требует доступа к пути к папке для доступа к файлам (не к базе данных). В настоящее время я синхронизирую папки на каждом из узлов, чтобы избежать доступа к одному общему диску. Можно ли избежать этого шага синхронизации и использовать кеширование App Fabric в папке? Или кеширование используется только для формальных запросов к базе данных? Любая помощь будет оценена.
1 ответ
Вы можете кэшировать любые объекты в AppFabric, если они сериализуемы (или сериализуемы, если вы в США:-)) (что, как я полагаю, позволяет правильно распределять их между серверами). Таким образом, вы можете поместить все файлы в папке в кэш AppFabric, если вы кешируете каждый файл в виде массива байтов.
Однако то, что вы можете, не означает, что вы должны это делать. Вы не сказали, читаете ли вы эти файлы или пишете в них; если вы просто читаете, то при первом чтении ваш код получит байтовый массив из кэша, десериализует его на диск, а затем прочитает, но при последующих чтениях зачем вам снова получать кэшированную версию? Если вы также пишете, чтобы обновить файл, вы снова получите кэшированные данные, поместите их обратно на диск в виде файла, обновите файл, а затем повторно сериализуете его для обновления кэша и в распределенной среде, подобной этой. Я был бы обеспокоен тем, сколько времени это займет и будут ли другие серверы одновременно выполнять обновления тех же данных. Конечно, вы можете обойти это, введя пессимистический параллелизм AppFabrics, но вам придется самостоятельно определить, перевешивают ли выгоды потенциальное влияние, которое это может оказать.
Вам также, вероятно, все еще понадобится набор файлов на каждом узле или общая папка, на которую вы пытаетесь не полагаться, так что первый узел, который заполняет кэш, на самом деле содержит данные для его заполнения!
Я думаю, что сначала я бы посмотрел что-то вроде репликации папок, чтобы синхронизировать узлы, а не кэшировать AppFabric.