2015-04-28 28 views
0

我從遷移1.4了Riak我的應用程序了Riak 2.最佳實踐連接到了Riak集羣

在過去,我已經在了Riak集羣的每個節點上共置我的應用程序。它只連接到本地Riak節點(在localhost:8087),監控Riak的可用性並基於此來宣傳自己的可用性。 遠程Haproxies監視這些應用程序的多個直接和最終用戶流量到任何可用的應用程序實例:

終端用戶--network - > HAProxy的--network - >池[應用程序 - >了Riak]

我的原因這種架構是

  • 應用了Riak之間儘可能低的延時
  • 應用的零CONF,它總是期望在了Riak本地主機
  • traffi控制好在HAProxy的C分類(也是唯一有)
  • 安全性好:protobuf的只是暴露到localhost

的Java的客戶端documentation現在建議,在連接時,一了Riak客戶端應用程序必須知道所有的節點一個Riak集羣。鑑於此,我的方法仍然可以接受嗎?或者,我應該改用一種方案,讓應用程序的每個實例都知道並連接到每個Riak節點?

回答

1

我認爲有幾個目的的客戶端要意識到每一個節點

  • 應用節點仍然可用時單了Riak節點宕機
  • 一個重載應用節點不調所有的加載到單個Riak節點
  • 有一個性能增益(在Dynamo白皮書中指出)直接向主節點提交寫入,而不是提交給必須轉發請求的隨機節點

看起來,在您的情況下,您已經擁有haproxy處理單個應用程序節點可用性和負載平衡的問題,並且您尚未充分利用性能差異。

在客戶端維護一個連接池並不是新事物,我相信它已經在1.4客戶端中可用。如果您以前不需要它,現在添加它是有意義的,如果您還計劃進行其他更改以利用連接池的優勢。