我们有一个在负载均衡的环境中运行的应用程序,比如webserver A和B. 负载均衡在HTTP级别,因此负载均衡器将每个用户请求定向到两个Web服务器之一。
应用程序中存储库的范围由spring.net容器管理, 并且应用程序依赖于可以由存储库缓存的数据(性能原因)。
在这种情况下,我们永远无法确定两个Web服务器上的存储库中的缓存数据是否相同。
spring.net中是否有可以管理此类问题的机制?或者还有另一种常见的方法吗?
有什么想法吗?
THX,
伯特
答案 0 :(得分:1)
Spring.NET是一个对象容器。它不能用作缓存容器,因此您不应将数据存储在存储库中。在这种情况下,您需要的是分布式缓存解决方案,例如memcached。它有一个.NET client library also。
因此,如果对象存在,基本上您的存储库将首先查看分布式缓存,如果不存在,则会访问实际数据存储以获取对象并将其存储到缓存中。 Spring.NET将处理这些存储库的生命周期,当您在webfarm中运行时,每个服务器都有一个存储库,但这不会成为问题,因为这些存储库将使用分布式缓存来获取数据,因此您将获得一致的重新设置在服务器场中的所有服务器之间。