AppFabric 缓存不是为“向上扩展”而设计的,而是为“向外扩展”而设计的。
现在内存很便宜,网卡也很快。AppFabric Cache 在通常用于 Web 服务器的低成本机器上运行良好,而不是需要昂贵硬件的数据库服务器。AppFabric 是 IO 密集型的,而不是 CPU 密集型的,除非您有大量的大型数据项。
缓存大小的影响很小,但写入百分比很高的大型缓存除外。除其他因素外,当托管堆的大小很大时,高写入工作负载会给 .NET 垃圾收集带来更大的压力。
因此,最好跨越多个中型服务器。您将有更好的延迟,并且可以启用高可用性。
阅读您的问题,我认为您对对象的生命周期感到困惑。AppFabric 只会在两种情况下删除您的对象:
到期
将项目添加到缓存时,可以为特定的缓存对象设置一个可选的对象超时值,该值将确定它将在缓存中驻留多长时间。可以为命名缓存关闭它。
驱逐
作为内存缓存,AppFabric 不会将缓存持久化到磁盘。这意味着,内存是有限的,缓存大小不能超过某个限制,这可能是服务器可用的总内存或配置的最大缓存大小。当缓存服务器上缓存服务的内存消耗超过低水位线阈值(70%)时,AppFabric 开始驱逐已经过期的对象
这里重要的是,你不能假设一个对象会永远留在 AppFabric 中。
Grid Dynamics 已完成对 Windows Server AppFabric 缓存的性能和可扩展性分析。用于分析的数据是从使用不同的使用模式、工作负载和缓存配置进行的大量测试中收集的。本白皮书介绍了研究结果并涵盖了一些常见用例,可用于您的应用程序的容量规划。在此处下载并在此处下载源代码。
从 1.1 版开始,Appfabric 现在支持Read-Through 和 Write-Behind。这也可能对您有所帮助。