Apache kafka 字段分组是否确保严格的顺序?
我是ApacheStorm的初学者,我想知道在流中元组的顺序何时能得到保证。 当我得到这篇文章的权利,然后之间的顺序螺栓/喷口和其他螺栓是有保证的 所以,如果我有KaffkaSpout,它会发出元组,元组是根据时间戳排序的,并且有一些根据id进行字段分组的螺栓Apache kafka 字段分组是否确保严格的顺序?,apache-kafka,apache-storm,Apache Kafka,Apache Storm,我是ApacheStorm的初学者,我想知道在流中元组的顺序何时能得到保证。 当我得到这篇文章的权利,然后之间的顺序螺栓/喷口和其他螺栓是有保证的 所以,如果我有KaffkaSpout,它会发出元组,元组是根据时间戳排序的,并且有一些根据id进行字段分组的螺栓 builder.setBolt("Bolt1", bolt1).fieldsGrouping("Bolt1", new Fields("id")); 是否保证始终为螺栓处理id为x的元组。因此,如果Tuple1具有相同的id,那么在T
builder.setBolt("Bolt1", bolt1).fieldsGrouping("Bolt1", new Fields("id"));
是否保证始终为螺栓处理id为x的元组。因此,如果Tuple1具有相同的id,那么在Tuple2在Bolt1中处理之前,必须(严格地)在Bolt1中处理Tuple1?严格来说,我的意思是不平行。即使工作节点出现故障,情况也是如此吗?这取决于您的拓扑以及“Bolt1”在相对于KafkaSpout的拓扑中的位置。例如,考虑以下2种拓扑情况- 案例1-
- 建筑商设置管道(“卡夫卡斯波特”,卡夫卡斯波特)李>
- builder.setBolt(“Bolt1”,Bolt1)。字段分组(“KafkaSpout”,新字段(“id”)李>
- 建筑商设置管道(“卡夫卡斯波特”,卡夫卡斯波特)李>
- 构建器.setBolt(“Bolt2”,Bolt2).shufflegroup(“KafkaSpout”)李>
- builder.setBolt(“Bolt1”,Bolt1)。字段分组(“Bolt2”,新字段(“id”)//由Bolt2发出的id字段
一般来说,如果您希望在Storm system中对处理进行严格的排序,则您有责任保持所有组件正常工作并有序排放。但一般来说,这会通过限制代码和拓扑中的并行性,在许多方面限制您使用Storm的全部功能 这取决于您的拓扑结构以及“Bolt1”在相对于KafkaSpout的拓扑结构中的位置。例如,考虑以下2种拓扑情况- 案例1-
- 建筑商设置管道(“卡夫卡斯波特”,卡夫卡斯波特)李>
- builder.setBolt(“Bolt1”,Bolt1)。字段分组(“KafkaSpout”,新字段(“id”)李>
- 建筑商设置管道(“卡夫卡斯波特”,卡夫卡斯波特)李>
- 构建器.setBolt(“Bolt2”,Bolt2).shufflegroup(“KafkaSpout”)李>
- builder.setBolt(“Bolt1”,Bolt1)。字段分组(“Bolt2”,新字段(“id”)//由Bolt2发出的id字段
一般来说,如果您希望在Storm system中对处理进行严格的排序,则您有责任保持所有组件正常工作并有序排放。但一般来说,这会通过限制代码和拓扑中的并行性,在许多方面限制您使用Storm的全部功能 我想象中的拓扑与Case1类似,因为如果它在这种情况下成立,那么它也会在任意拓扑中成立,其中Bold1的路径只包含带字段分组的粗体。我认为storm在这种情况下甚至是有用的。假设id标识了一个人,那么不同的人的事件仍然可以并行处理。此外,如果按顺序处理person事件并不重要,那么还可能有其他路径。是的,唯一需要注意的是,一旦分组在任何路径上被任何螺栓打断,就不可能实现后续的顺序完整性。我想象的拓扑结构与案例1类似,因为如果它在这种情况下保持不变,那么它也会在任意拓扑中保持不变,其中Bold1的路径只包含带字段分组的粗体。我认为storm在这种情况下甚至是有用的。假设id标识了一个人,那么不同的人的事件仍然可以并行处理。此外,如果按顺序处理person事件并不重要,那么还可能有其他路径。是的,唯一需要注意的是,一旦分组在任何路径上被任何螺栓打断,就不可能实现后续的顺序完整性。