我正在将我的应用程序从Riak 1.4迁移到Riak 2.
过去,我一直在Riak集群的每个节点上放置我的应用程序。它仅连接到本地Riak节点(<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="methodsuite">
<test name="test1" preserve-order="true">
<method-selectors>
<method-selector>
<selector-class name="com.MethodSelector2"
priority="-1"/>
</method-selector>
</method-selectors>
<packages>
<package name=".*"></package>
</packages>
</test>
</suite>
),监视Riak的可用性并基于此公布其自身的可用性。
远程Haproxies监控这些应用程序中的多个,并将最终用户流量引导到任何可用的应用程序实例:
enduser --network - &gt; Haproxy - 网络 - &gt;游泳池[application-&gt; riak]
我对这种架构的理由是
java-client documentation现在建议,在连接时,Riak客户端应用程序应该知道Riak集群的所有节点。鉴于此,我的方法仍然可以接受吗?或者我应该切换到应用程序的每个实例都知道并连接到每个Riak节点的场景?
答案 0 :(得分:1)
我认为客户有几个目的是了解每个节点
看起来,在您的情况下,您已经有haproxy处理单个应用程序节点可用性和负载平衡,并且您已经没有利用性能差异。
在客户端维护一个连接池并不新鲜,我相信它已经在1.4客户端中可用了。如果您之前不需要它,如果您还计划进行其他可以利用连接池优势的更改,那么现在添加它将是有意义的。