使用负载均衡器时如何确保Riak客户端的强一致性?

时间:2014-05-06 13:20:25

标签: haproxy riak consistency

我正在玩Riak 1.4.7以了解其特征。

据我所知,推荐的最佳实践生产模式Riak操作建议将Riak置于负载平衡之下。为此,我们可以使用HAProxy。

你能告诉我怎样才能确保强一致性(R = Q,W = Q)?

例如,假设我有一个由3个节点组成的Riak集群。我的基于Riak Java Driver的客户端通过HAProxy与环通信。如果客户想要写条目w = quorum会发生什么?如果客户端只与HAProxy进行通信,那么客户端如何确保至少有两个节点确认了写入?我认为我的客户会认为它只与1节点Riak集群通信。因此,它永远无法确定有多少Riak节点确认了存储操作。这是正确的还是我弄错了?

1 个答案:

答案 0 :(得分:0)

无论客户端是与负载均衡器通信还是直接与服务器通信,行为都是相同的:在相关数量的服务器响应后,客户端会收到Riak的结果通知。这种协调的机制对客户来说是隐藏的。

但是,无论通过RW值指定了多少台服务器,Riak 1.4.x提供的一致性都不强。 Riak优先考虑可用性,因此如果W=3且只有一个服务器可用,则该服务器将向其自身写入3个副本并成功响应。如果该服务器因其他服务器重新联机而失败,则客户端将看到该密钥的旧值。

使用Riak 2.0,强大的一致性将是一种选择。

有关2.0之前行为的更多信息,请参阅http://littleriakbook.com