【发布时间】:2019-10-21 19:12:03
【问题描述】:
我有两个客户端(单独的 docker 容器)都写入 Cassandra 集群。
第一个是写入实时数据,以集群可以处理的速度摄取,尽管剩余容量很少。这被视为高优先级数据,我们不想丢弃任何数据。摄取率每分钟变化很大。有时数据会在客户端读取的队列中备份,有时客户端已清除队列并(短暂)等待更多数据。
第二个是来自在线商店的批量数据转储。我们希望以尽可能快的速度将其写入 Cassandra,以吸收写入实时数据后的任何空闲容量,但不会导致集群开始发出超时。
使用 DataStax Python 驱动程序并保持两个客户端分开(即它们不应该相互了解或交互),我如何限制来自第二个客户端的写入,以便在受约束的情况下最大化写入吞吐量不影响第一个客户端的写入吞吐量?
【问题讨论】:
-
我认为您正在寻找过载保护。我认为目前 Cassandra 中没有任何可用的过载保护插件,但我的公司可能会在今年晚些时候开源我们的解决方案,提示提示;)您可以为 Cassandra QueryHandler 编写自己的插件并设置“-Dcassandra.custom_query_handler_class " cassandra-env.sh 中的 Java 变量。
标签: python cassandra datastax-python-driver