我有一个驻留在我们每个节点上的函数。该功能需要访问文件夹路径以访问文件(不是数据库)。目前,我同步每个节点上的文件夹,以避免访问单个共享驱动器。我可以避免此同步步骤并在文件夹上使用 App Fabric 缓存吗?还是缓存仅用于正式的数据库查询?任何帮助,将不胜感激。
问问题
309 次
1 回答
3
您可以在 AppFabric 中缓存任何类型的对象,只要它是可序列化的(或者如果您在美国 :-) 是可序列化的)(我假设它可以在服务器之间正确编组)。因此,如果您将每个文件缓存为字节数组,您可以将文件夹中的所有文件放入 AppFabric 缓存中。
然而,仅仅因为你可以,并不意味着你应该. 您还没有说您是在读取这些文件还是在写入这些文件;如果您只是在阅读,那么在第一次读取时,您的代码将从缓存中获取字节数组,将其反序列化到磁盘,然后读取它,但是在随后的读取中,您为什么还要费心再次获取缓存版本?如果您也在编写,要更新文件,您将再次获取缓存数据,将其作为文件放回磁盘,更新文件,然后重新序列化以更新缓存并在这样的分布式环境中我会担心这将花费多少时间以及其他服务器是否会对相同的数据进行并发更新。当然,你可以通过引入 AppFabrics 悲观并发来解决这个问题,但是你'
您可能还需要每个节点上的文件集,或者您试图避免依赖的共享文件夹,以便填充缓存的第一个节点实际上具有填充它的数据!
我想我会先看看文件夹复制之类的东西,以保持节点同步,然后再进行 AppFabric 缓存。
于 2011-10-04T17:43:05.373 回答