如何使用三叉戟拓扑在redis和cassandra中编写元组

7gyucuyw  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(547)

我正在编写一个三叉戟拓扑来处理来自Kafka的数据流,并将其输入redis和cassandra。我能把数据写进Cassandra。现在我想把同样的数据写入redis。
有没有办法复制元组并将其分支到2个流中,其中一个流进入redis,另一个流进入cassandra?

m0rkklqb

m0rkklqb1#

对于三叉戟,您可以这样使用smth:

TridentTopology topology = new TridentTopology();
Stream stream = topology.newStream("MySpout", spout);
stream.partitionPersist(...); // to Redis
stream.partitionPersist(...); // to Cassandra

因此,它将把数据流中的数据并行地保存到两个数据库中。
然而,我也会想,如果这种并行的事情应该在一个拓扑内完成,或者如果有两个不同的拓扑从同一个主题阅读是一个更好的主意。想象一下,Cassandra星系团倒下了。在两种拓扑的情况下,您仍然可以继续将数据保存到redis。但是,如果只有一个拓扑,每个元组都无法转到cassandra,很可能会导致failedexception触发重放,并且每个元组的后续重放都会涉及到不必要地再次将元组保存到redis。

相关问题