超出 Akka 有效负载大小



我正在尝试查找处理 akka 有效负载大小超出异常。但是由于没有办法处理它,我想知道正在传递的消息的大小。为此,我想计算消息的大小,这个大小需要给出正在传递的集群消息的确切大小,而不仅仅是我的请求中的 json 大小。有没有办法知道这个大小?

例如,我的 json 大小为 31998 字节,但是当消息在参与者之间传递时,会发生一定量的编码,并且传递的消息的实际大小增加到 32778。我如何知道此最终消息大小?

当您在参与者系统之间发送消息时,消息有效负载周围有一个信封,其中包含收件人参与者 ref、发件人参与者 ref、标识要使用的序列化程序以及其他一些内容。其中一些包含字符串(参与者路径、参与者系统名称、节点主机名(,这将影响使得很难确切地说出开销有多大。

我建议您添加在预期参与者之间远程发送消息的测试覆盖率,然后保守,因为在决定接受多大的有效负载时,主机名可能会有所不同。

请注意,如果您需要比默认 128k 大很多倍的有效负载,最好考虑将有效负载拆分为较小的消息,或者使用某种形式的侧通道来传输数据,因为这会导致其他较小消息的行头阻塞,例如远程检测信号使远程处理和集群不太稳定。

使用新的远程处理子系统,它尚未稳定/生产就绪,支持大型消息的单独通道,并且还压缩了参与者引用,以便经常远程通信的参与者将由缓存中的索引而不是完全序列化的参与者引用来标识。

相关内容

最新更新