Riak python,如何正确连接到服务器池?

Riak python, how to properly connect to a server pool?

如果我的 Riak 集群有 5 台机器(riak1、riak2...),我应该创建一个 RiakClient 具有单个主机还是 5 台机器的完整列表以实现冗余,是有自动发现节点成员吗?

RiakClient(protocol='http', host='riak1', http_port=8098)

RiakClient(protocol='http', nodes=[{
  host:'riak1', 
  host:'riak2',  
  host:'riak3', 
  host:'riak4', 
  host:'riak5'
}])

是否有任何替代方案,例如在 riak 集群节点前面的负载平衡器主机?

您使用 HTTP 而不是协议缓冲区有什么特别的原因吗?

无论如何,nodes 必须是 "a list of node configurations, where each configuration is a dict containing the keys 'host', 'http_port', and 'pb_port'" (http://basho.github.io/riak-python-client/client.html)。

即:

RiakClient(protocol='http', nodes=[
    {'host': 'riak1', 'http_port': 8098}, 
    {'host': 'riak2', 'http_port': 8098},
    {'host': 'riak3', 'http_port': 8098}, 
    {'host': 'riak4', 'http_port': 8098},
    {'host': 'riak5', 'http_port': 8098}])

是的,您可以在 Riak 集群前使用负载均衡器。实际上,这是一个好主意,因为无论 Riak 集群中有多少节点,您的客户端都将连接到单个主机。 Adding/removing/replacing 个节点不会影响客户端。

但是,如果您选择不这样做,则必须显式传递完整的 Riak 节点列表,以实现客户端的冗余和负载平衡 ("a random node is selected when a new connection is requested")。