gpt4 book ai didi

java - 连接 Riak 集群的最佳实践

转载 作者:行者123 更新时间:2023-12-01 11:36:34 28 4
gpt4 key购买 nike

我正在将我的应用程序从 Riak 1.4 迁移到 Riak 2。

过去,我一直将应用程序托管在 Riak 集群的每个节点上。它仅连接到本地 Riak 节点(位于 localhost:8087),监视 Riak 的可用性并据此发布其自身的可用性。远程 Haproxy 监视多个此类应用程序,并将最终用户流量引导至任何可用的应用程序实例:

最终用户 --network--> Haproxy --network--> 池[ application->riak ]

我采用这种架构的原因是

  • 应用程序和 Riak 之间的延迟尽可能最低
  • 应用程序的零配置,它始终期望 Riak 在本地主机
  • 对 HAProxy 中的流量分配进行良好控制(且仅限于此)
  • 良好的安全性:protobuf 仅暴露给本地主机

java 客户端 documentation现在建议,在连接时,Riak 客户端应用程序应了解 Riak 集群的所有节点。如此看来,我的做法还可以接受吗?或者我应该切换到应用程序的每个实例都知道并连接到每个 Riak 节点的场景?

最佳答案

我相信客户端了解每个节点有几个目的

  • 当单个 Riak 节点出现故障时,应用程序节点仍然可用
  • 单个过载的应用程序节点不会将其所有负载转移到单个 Riak 节点
  • 将写入直接提交到主节点(而不是提交到随后必须转发请求的随机节点)会带来性能提升(在 Dynamo 白皮书中指出)

在您的情况下,您似乎已经有 haproxy 处理各个应用程序节点可用性和负载平衡,并且您已经没有利用性能差异。

在客户端维护连接池并不是什么新鲜事,我相信在1.4客户端中已经可以使用了。如果您以前不需要它,如果您还计划进行其他更改以利用连接池的优势,那么现在添加它会很有意义。

关于java - 连接 Riak 集群的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com