Maven 三叉戟卡夫卡事务喷口

Maven 三叉戟卡夫卡事务喷口,maven,transactions,apache-storm,transactional,trident,Maven,Transactions,Apache Storm,Transactional,Trident,我应该实现一个trident事务拓扑。我发现我可以使用卡夫卡作为喷口,使我的拓扑具有事务性。我发现这是一个卡夫卡喷口的风暴,但它不是交易。我还发现它是一个三叉戟卡夫卡事务喷口。但我没有maven源代码,也没有使用它的说明。只有使用卡夫卡风暴喷口的说明。我还需要一个实现分区卡夫卡的说明。如果您有实现事务拓扑的经验,请帮助我!谢谢大家! 你看过这个吗 事务喷口不足以保证拓扑是事务性的。 OpaqueTridentKafkaSpout实现以下属性: 给定txid的批次始终相同。txid批次的重放将与

我应该实现一个trident事务拓扑。我发现我可以使用卡夫卡作为喷口,使我的拓扑具有事务性。我发现这是一个卡夫卡喷口的风暴,但它不是交易。我还发现它是一个三叉戟卡夫卡事务喷口。但我没有maven源代码,也没有使用它的说明。只有使用卡夫卡风暴喷口的说明。我还需要一个实现分区卡夫卡的说明。如果您有实现事务拓扑的经验,请帮助我!谢谢大家!

你看过这个吗

事务喷口不足以保证拓扑是事务性的。 OpaqueTridentKafkaSpout实现以下属性:

  • 给定txid的批次始终相同。txid批次的重放将与该txid批次第一次发出时的元组集完全相同
  • 元组的批次之间没有重叠(元组在一个批次或另一个批次中,从来没有多个)
  • 每个元组都在一个批中(不跳过任何元组)
但是,如果您试图持久化一些计算,那么您必须实现事务状态,以便对数据库的更新对于每批元组只执行一次

要实现一次处理,必须为计算保留批处理事务ID和以前的更新值

我们从下面的例子中考虑:

您正在处理以下一批元组:[“man”][“man”][“dog”]与事务id“3”关联

然后,在数据库中,您当前将一些字计数器作为键/值对保存:

man=>[count=3,txid=1];狗=>[count=4,txid=3];苹果=>[count=10,txid=2]

由于与键“dog”关联的txid与当前处理事务相同,因此可以跳过此更新。已为此事务更新元组“dog”。但其他元组的情况并非如此。更新数据库后,您的外观如下所示:

man=>[count=5,txid=3];狗=>[count=4,txid=3];苹果=>[count=10,txid=2]

通过这种方式,Trident能够比较事务ID和以前的值,以决定是否必须执行更新

看一看

基本上,事务拓扑由事务喷口和事务状态组成

您可以在此页面上找到有关trident state的更多信息:


我希望这会对您有所帮助。

使用Kafka是否可以保证我的拓扑结构将是事务性的,并且只使用一次语义?我可以使用我找到的MEMCACHEDSTATE吗?我已经读到它提供了一个不透明的状态,我可以用它来处理opaquetridentkafkaspout,我可能会问很多问题,但有人有一个有效的例子吗?我对卡夫卡风暴一无所知。我已经成功地从我的一个主题实现了storm消费,但希望它是事务性的。感谢您的帮助!!!:)