python - 如何使用 Python 防止进出慢速 Cassandra 节点的流量

标签 python cassandra cql

简介:

我有一个使用 Cassandra 1.2.4 集群的 Python 应用程序,复制因子为 3,所有读取和写入均以一致性级别 2 完成。要访问集群,我使用 CQL 库。 Cassandra 集群运行在 rackspace 的虚拟服务器上。

问题:

有时其中一个节点会变得比平时慢,在这种情况下,我希望能够检测到这种情况并防止向慢速节点发出请求,并且如果可能的话完全停止使用它(理论上这应该这是可能的,因为对于每个请求,RF 是 3,CL 是 2)。到目前为止,我提出的解决方案涉及对每个节点的请求进行计时,并防止将来连接到慢速节点。但这仍然不能解决所有问题,因为即使连接到另一个节点,特定查询也可能在协调器节点路由查询后最终由慢速节点提供服务。

问题:

从 Python 应用程序检测慢速节点的最佳方法是什么? 有没有办法在这种情况下停止使用来自 Python 的 Cassandra 节点之一而无需人工干预?

提前致谢!

最佳答案

如果响应速度慢的节点也是处理查询速度慢的节点,那么您对请求计时的手动解决方案就足够了。

如果可以的话,Cassandra 会在内部使用动态告密器来避免慢速节点。这将根据最近的延迟统计信息对节点进行排序,如果一致性级别允许,将避免从最慢的节点读取数据。 NB 写入到所有可用节点,但如果您的一致性级别允许,您不必等待它们全部响应。

可能有一些客户端支持您在 python 客户端中想要的东西 - Java 中的 Astyanax 使用非常类似于客户端中的动态告密者的东西来避免向慢速节点发送请求。

关于python - 如何使用 Python 防止进出慢速 Cassandra 节点的流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17415024/

相关文章:

python - 删除字符串的第一个字符

python - 灯泡 python 连接到远程 TitanDB + Rexster

java - Cassandra -f 找不到依赖库 java.lang.UnsatisfiedLinkError

scala - 使用 scala 导入的文件字段中带有换行符 (LF) 的 Spark CSV 问题

c# - 使用 CQL 3 创建复合列(不是键)

Python 多重处理 - 太慢

android - kivy - python - Spinner 输出文本/字符串如何使用

Python 私有(private)实例变量行为

cassandra - 如何按不在主键中的 CQL 列进行过滤?

java - 一个可更新的模型如何(例如 Cassandra CQL3 中的 “status”)并能够查询此状态?