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")。
如果我的 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")。