如何使用Python阻止来自慢Cassandra节点的通信

2024-06-08 02:22:34 发布

您现在位置:Python中文网/ 问答频道 /正文

简介:

我有一个使用cassandra1.2.4集群的Python应用程序,复制因子为3,所有读写操作的一致性级别为2。为了访问集群,我使用CQL库。Cassandra集群运行在rackspace的虚拟服务器上。在

问题:

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

问题:

从Python应用程序中检测慢节点的最佳方法是什么? 在这个场景中,有没有一种方法可以停止使用Python中的Cassandra节点而不需要人工干预?在

提前谢谢!在


Tags: 方法服务器应用程序节点情况集群理论级别
1条回答
网友
1楼 · 发布于 2024-06-08 02:22:34

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

在内部,Cassandra可以通过使用动态snitch避免慢节点。这将根据最近的延迟统计信息对节点进行排序,如果一致性级别允许,将避免从最慢的节点读取数据。NB写操作将发送到所有可用节点,但如果一致性级别允许,则不必等待它们全部响应。在

在python客户机中可能会有一些客户机支持—Astyanax在Java中使用类似于客户机中的动态snitch的东西来避免向速度慢的节点发送请求。在

相关问题 更多 >

    热门问题