【发布时间】:2011-01-04 05:32:18
【问题描述】:
我们当前的工作项目是一个新的 MVC 网站,该网站将主要使用 WCF 服务通过 Web 服务以及用于用户个性化的小型 SQL 数据库访问第 3 方计费系统。 WCF 服务将 nHibernate 用于 SQL 数据库。
我们希望实施某种网络农场来实现负载平衡以及故障转移和维护。如果有多个 WCF 服务正在运行,我正在尝试确定处理 nHibernate 的缓存和数据库并发的最佳方式。
我一直在考虑的一些场景......
1) 多台 IIS 服务器,一台 WCF 服务器。使用此设置,WCF 服务器将出现单点故障,但不会出现 nHibernate 缓存或数据库并发问题。
2) 多台 IIS 服务器,每台都有自己的 WCF 服务。这消除了单点故障,但现在一台机器上的 nHibernate 不会知道另一台机器所做的数据库更改。
第 2 点的一些解决方案是使用 IStatelessSession,因此我们不进行任何缓存,并且 nHibernate 始终直接从数据库中获取。这可能是最可行的,因为我们的个性化数据库中的对象很少。我也在考虑使用 2 级缓存,例如 memcached 或 Velocity,但对于这个系统来说,这可能是多余的。
我把它放在那里,看看是否有人有做这种架构的经验,并获得一些解决方案的想法。谢谢!
【问题讨论】:
-
“但我使用 nHibernate 实现了二级查询缓存,它运行良好。”我能问一下你选择了哪种二级缓存实现吗?为什么?
-
Memcahced memcached.org
标签: asp.net-mvc wcf nhibernate caching web-farm