代码之家  ›  专栏  ›  技术社区  ›  Guibod

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

  •  0
  • Guibod  · 技术社区  · 10 年前

    如果我的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集群节点前面的负载平衡器主机?

    1 回复  |  直到 10 年前
        1
  •  0
  •   vempo    10 年前

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

    在任何情况下, nodes 必须是“节点配置列表,其中每个配置都是一个包含键'host'、'http_port'和'pb_port'的dict”( 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集群中有多少节点,您的客户机都将连接到单个主机。添加/删除/替换节点不会影响客户端。

    但是,如果您选择不这样做,则必须明确地传递Riak节点的完整列表,以实现客户端的冗余和负载平衡(“当请求新连接时,会选择一个随机节点”)。