我使用的是一个cassandra 4节点集群,所有节点都有完整的复制。我在一个表上定义了一个触发器。但是,当我更新这个表中的一行时,触发器只在本地节点上触发。是否有任何方法在所有节点中触发此触发器(基于复制)?
63lcw9qa1#
触发器在传递到应用程序之前在协调器上运行。要在每个副本上查看它,最好的方法是使用cdc(它也比触发器更可靠),并在刷新到commitlog时跟踪更改。
ki0zmccv2#
有了cdc,你必须解决另一个问题:验证口袋的顺序,因为不能保证在单点故障和cdc日志复制检查器实现工具之间进行权衡,让我解释一下:您要么在一个节点上启用cdc日志,这将成为您的瓶颈。或者您在所有节点上启用cdc,然后您必须以某种方式管理数据复制,因为leader会将日志发送给Repifications。您可以在集群的每个节点上部署触发器。它不会造成任何数据重复,工作非常好。
2条答案
按热度按时间63lcw9qa1#
触发器在传递到应用程序之前在协调器上运行。要在每个副本上查看它,最好的方法是使用cdc(它也比触发器更可靠),并在刷新到commitlog时跟踪更改。
ki0zmccv2#
有了cdc,你必须解决另一个问题:
验证口袋的顺序,因为不能保证
在单点故障和cdc日志复制检查器实现工具之间进行权衡,让我解释一下:您要么在一个节点上启用cdc日志,这将成为您的瓶颈。或者您在所有节点上启用cdc,然后您必须以某种方式管理数据复制,因为leader会将日志发送给Repifications。
您可以在集群的每个节点上部署触发器。它不会造成任何数据重复,工作非常好。