App Fabric способен кешировать файлы или только запросы к базе данных? - PullRequest
1 голос
/ 04 октября 2011

У меня есть функция, которая находится на каждом из наших узлов.Функция требует доступа к пути к папке для доступа к файлам (не к базе данных).В настоящее время я синхронизирую папки на каждом из узлов, чтобы избежать доступа к одному общему диску.Можно ли избежать этого шага синхронизации и использовать кэширование App Fabric в папке ?Или кэширование используется только для формальных запросов к базе данных?Любая помощь будет оценена.

1 Ответ

3 голосов
/ 04 октября 2011

Вы можете кэшировать любой тип объекта в AppFabric, , если он сериализуем (или сериализуем, если вы находитесь в США :-)) (что, как я полагаю, может быть распределено между серверамиправильно).Таким образом, вы можете поместить все файлы в папке в кэш AppFabric, если вы кешируете каждый файл в виде массива байтов.

То, что вы можете , однако, не означает, что вы должны .Вы не сказали, читаете ли вы эти файлы или пишете в них;если вы просто читаете, то при первом чтении ваш код получит байтовый массив из кэша, десериализует его на диск, а затем прочитает, но при последующих чтениях зачем вам снова получать кэшированную версию?Если вы также пишете, чтобы обновить файл, вы снова получите кэшированные данные, поместите их обратно на диск в виде файла, обновите файл, а затем повторно сериализуете его для обновления кэша и в распределенной среде, подобной этой.Я был бы обеспокоен тем, сколько времени это займет и будут ли другие серверы одновременно выполнять обновления тех же данных.Конечно, вы можете обойти это, введя пессимистический параллелизм AppFabrics, но вам придется самостоятельно определить, перевешивают ли выгоды потенциальное влияние, которое это может оказать.

Вам, вероятно, все еще понадобится набор файлов на каждом узле или общая папка, на которую вы пытаетесь не полагаться, чтобы первый узел, который заполнял кэш, фактическиу меня есть данные для заполнения!

Я думаю, что сначала я бы посмотрел что-то вроде репликация папок , чтобы обеспечить синхронизацию узлов, а не кэширование AppFabric.

...