如何解决Kafka如何处理乱序批次
Apache Kafka 允许通过允许 max.in.flight.requests.per.connection
来启用幂等生产者。根据 documentation,此设置保证每条消息只按顺序发送一次,并且比同步生产者具有更高的吞吐量(因为 enable.idempotence
最多可以为 5)。
在阅读更多文档后,我发现 Kafka 通过为每个批次分配唯一 ID 并跟踪最后确认的批次 ID 来实现消息排序。这使其能够有效地拒绝重复批次并检测任何无序错误。生产者还将重试以确保收到所有批次并将其置于有序状态。
我对 max.in.flight.requests.per.connection
关闭时代理的行为更感兴趣。例如,如果生产者分批发送 B1 和 B2,但代理按 B2 和 B1 的顺序接收,代理是否会拒绝 B2,并请求重试(如果生产者启用)?如果数据包通过不同的网络路径到达代理,这肯定会发生。我发现在重试和并行发送调用(<template>
<div v-for="infoItem in data" :key="infoItem.name"> // loop to create several buttons
<Button
icon="pi pi-eye"
@click="clickHandler">
</Button>
</div>
<Popup
v-if="popupTriggered"
:TogglePopup="() => TogglePopup('buttonTriggerDetail')"
>
{{ data[currentActiveItem].control }}
</Popup>
</template>
<script>
import ...
export default {
data () {
currentActiveItem: 0,popupTriggered: false
},methods: {
clickHandler (index) {
this.popupTriggered = true
this.currentActiveItem = index
}
}
... // other component data
};
</script>
> 1)的情况下,与订购失败相比,这种情况在网上讨论较少。我个人认为,如果关闭幂等性,排序会中断,因为代理不跟踪序列 ID。但我没有任何证据证明这一点。
如果这里有明显的错误,请随时纠正我的发现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。