java – MongoDB负载平衡的Hibernate配置

我有一个包含3个节点的小型mongoDB集群(没有分片,只有复制).现在,插入主节点正在按预期将新数据传播到辅助节点(基本复制).我正在使用
java和hibernate.

现在我想要的是在整个副本集中对读取请求进行负载均衡,而不是始终用于提供数据的主节点.有没有办法告诉hibernate(通过查询字符串)有关可用的服务器以及hibernate以某种方式分发请求(随机或以系统方式)?实现负载平衡的正确方法是什么?

最佳答案 您正在寻找的设置称为读取首选项.如果你看一下
doc here,你会发现:

hibernate.ogm.mongodb.read_preference

Specifies the ReadPreference to be applied when issuing reads against the MongoDB datastore. Possible settings are (values of the
ReadPreferenceType enum): PRIMARY, PRIMARY_PREFERRED, SECONDARY,
SECONDARY_PREFERRED and NEAREST.

在这种情况下你可能会使用的是SECONDARY_PREFERRED,这实际上意味着默认情况下读取操作将路由到从属节点,但如果这是剩下的唯一可用节点,则hibernate将回退到主节点.

点赞