gpt4 book ai didi

java - 了解IgniteDataStreamer : ordering and buffering

转载 作者:行者123 更新时间:2023-12-02 09:27:38 25 4
gpt4 key购买 nike

我使用 IgniteDataStreamerallowOverwrite 来加载连续数据。

问题1。来自javadoc:

Note that streamer will stream data concurrently by multiple internal threads, so the data may get to remote nodes in different order from which it was added to the streamer.

就我而言,重新排序是 Not Acceptable 。 perNodeParallelOperations 设置为 1 能否保证保持 addData 调用的顺序? IgniteDataStreamer 同时加载多个缓存,因此 Ignite 服务器节点线程无论如何都会被利用。

问题2。由于 GC 暂停,我的流应用程序可能会挂起几秒钟。我想避免此时的缓存加载暂停并保持较高的平均缓存写入速度。是否可以配置IgniteDataStreamer以在服务器节点上保留(有界)传入批处理的队列,该队列将在流(客户端)应用程序挂起时消耗?参见问题1,队列应该按顺序消费。可以使用一些堆来实现它。

问题3。perNodeBufferSize javadoc:

This setting controls the size of internal per-node buffer before buffered data is sent to remote node

根据javadoc,数据传输是由tryFlush/flush/autoFlush触发的,那么它与perNodeBufferSize<有什么关系?/ 限制?如果少于 perNodeBufferSize 消息,flush 会被忽略吗(我希望不会)?

最佳答案

我不建议尝试避免在 DataStreamer 中重新排序,但如果您确实需要这样做,则还需要将数据流媒体池大小设置为 1在服务器节点上。如果它较大,则数据将被分成 strip ,而不是按顺序发送。

DataStreamer 专为吞吐量而非延迟而设计。所以你在这里无能为力。也许增加perThreadBufferSize

当任何 strip 达到 perThreadBufferSize 时,数据传输将自动开始。

关于java - 了解IgniteDataStreamer : ordering and buffering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com