我正在 FlourineFx 上开发 AMF Flash 网关应用程序部署在Windows Azure上,并且我想使用Azure SQL。
我使用 NHibernate 2.1 + NHibernate.Linq 1.0 + FluentNHibernate 1.1
此 FlourineFx 网关将有两个或多个实例,并且只有 1 个数据库。
我计划实现 memcached 稍后作为二级缓存(作为 Windows Azure WorkerRole),但是有必要吗? (我不介意性能,但我介意一致性)
最佳答案
I don't know if 2nd level cache solves some transaction-related problems or just makes it faster
L2缓存的主要目的是避免数据库命中,我不会说L2缓存解决了事务相关的问题;如果 NHibernate 支持完全事务性缓存,那么它可能会参与其中(从而使整个过程变得更加复杂)。
就我个人而言,我倾向于将 L2 缓存的使用限制为只读(或大部分读取)对象,这就是 L2 缓存发挥其全部功能的地方。缓存读写实体比较棘手,尤其是在集群环境中,并且缓存提供程序 must support应用程序对给定实体所需的缓存并发策略(只读、非严格读写、读写)。
我不确定这是否真的回答了问题,但至少它可能会给你一些提示。
引用文献
关于nhibernate - Windows Azure 中的多个 NHibernate 实例是否需要外部二级缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3656402/