2

我想将 NHibernate 连接到 MySQL 主从复制配置,所以我想将写入发送到主服务器,并将读取发送到主服务器和从服务器。这可能吗?我还计划有一个负载均衡器来平衡读取。(ldirectord)

4

1 回答 1

1

在底层,nhibernate 使用 ado.net 连接到数据源。因此,您需要查看 ado.net 如何处理这种情况。

但此外,如果你能做到这一点,我认为你不会获得任何好处。

一些背景知识:nhibernate 中的对象与会话相关联,会话与会话工厂相关联,会话工厂与 1 个连接相关联。

假设您有一个 ip 1 的负载均衡器用于读取。它平衡了 ip 2 和 3 上的数据库。你直接点击 ip 2 进行写入。

所以你有了

Ip     Use
1      Balancer
2      Read / Write
3      Read  

如果您读取一个与连接 1 绑定的会话的对象,则必须加载该对象,然后保存并刷新以在与连接 2 绑定的会话上写入。此时,您已完成 2 次读取和 1 次写入。然而,如果您使用一个会话工厂,那么您将进行读取和写入(假设同一个会话通过读取和写入处于活动状态,或者设置了二级缓存)。

于 2010-06-29T19:23:18.563 回答