FragmentationDuplexConnection发生了什么?



我们有一个基于rsocket-rpc的自定义弹簧启动器,我们使用FragmentationDuplexConnection。升级到Rsocket 1.1.0和Rsocket -rpc 0.3.0后,代码中似乎不再存在FragmentationDuplexConnection。取而代之的是什么?

我们使用它是因为我们在使用RSocket通过websocket通过负载平衡器/代理时遇到了问题,不得不将MTU设置为65K。

@Mavo在RSocket-Java 1.1中,我们修改了内部结构,并将逻辑移动到专用的响应流操作符。原因是,在RSocket-Java 1.0设计中,假装用碎片解决的排队阻塞问题实际上并没有解决(在双工连接中,我们只有一个线程消耗数据,因此在DuplexConnection级别上完成的碎片将阻止其他帧分片,直到当前碎片化的帧无法完全交付)。

为了解决上面提到的设计问题,我们将碎片化和重组移到了上面一个级别。现在每个响应方算子都有一个重组逻辑(例如->https://github.com/rsocket/rsocket-java/blob/master/rsocket-core/src/main/java/io/rsocket/core/RequestStreamResponderSubscriber.java#L315),以及每个请求操作符,在发送帧到双工连接之前进行分片,并且独立于其他请求进行此操作,并且可以在自己的线程上完成(https://github.com/rsocket/rsocket-java/blob/master/rsocket-core/src/main/java/io/rsocket/core/FireAndForgetRequesterMono.java#L150)

相关内容

最新更新