我意识到 Aeron 适合处理小消息,但是我希望在我们的堆栈中有一个单一的协议,并且我们的一些消息很容易达到 100Mb 的大小。
文档不清楚哪些设置会影响这个问题的答案。我担心的是默认缓冲区设置不允许这种大小的消息。或者缓冲区设置对最大应用程序消息大小没有影响吗?
我似乎无法在RSocket上找到任何资源/教程,只能在 GitHub 上阅读他们的代码,我不明白。
我的服务器上有一个文件路径: String serverFilePath;
我希望能够从我的客户端下载它(最好使用RSocket 的 Aeron 实现)。有谁知道如何使用 RSocket 做到这一点?
提前致谢。
我为我关于 Aeron 的演示做了一些基准测试,但我发现如果我对相同的传输使用不同的工具,我得到的结果会略有不同。
例如,如果我使用HDR 直方图,我得到的结果与维护者在测试中得到的数字一致:
另外,我尝试了另一个很酷的 Java 基准库 - JLBH
但结果让我有点困惑......
首先,我得到了 2 个不同版本的基准测试:
似乎 JLBH 鼓励为侦听器使用另一个线程,至少这样一些设置(例如吞吐量)更有意义,并且初始预热会打印一些统计信息。但我可能是非常错误的,如果我是,请纠正我。
但更重要的是,这些基准测试的结果完全不同,与我在 HDR 上看到的结果不一致:
我很有可能在某个地方搞砸了,但就目前而言,所有 3 个基准测试看起来或多或少都与我相似,但使用不同的工具集。
非常感谢!
聚苯乙烯
如果有人想自己尝试这个,你必须运行这个脚本https://github.com/easy-logic/transport-benchmarks/blob/master/run-aeron.sh
要选择要运行的版本,请mainClassName在此处更改参数:https :
//github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/build.gradle#L6
有3个选项:
我们想使用 Aeron 作为持久队列。是否可以设置 Aeron Cluster 以提供
目前我们生产环境的交易系统使用的是Kafka。由于Kafka延迟太高,我们希望用Aeron替代Kafka。如何正确使用Aeron?
如果我通过发布向某个通道(IPC 或 UDP)提供消息,并且此操作返回正值(新位置),这意味着数据是否已写入磁盘(fsynced 到 /dev/shm)?换句话说... Aeron 是否依赖页面缓存?当我通过发布提供新数据并收到积极的响应值后操作系统关闭时,我可能会丢失数据吗?
在这篇文章中,有一条已批准的评论,其中包含以下声明:
集群通过使用仲裁协议将其提升到一个新的水平,以防止节点发生故障时消息丢失。
我正在测试一个集群节点发生故障时的传递,但根据我的观察,如果节点发生故障,消息可能会丢失。
我正在使用aeron 代码库io.aeron.samples.cluster.tutorial.BasicAuctionClusterClient(版本1.38.1)io.aeron.samples.cluster.tutorial.BasicAuctionClusterClient
我做了一个小调整,BasicAuctionClusterClient看看是否收到消息:
public void onSessionMessage(
final ClientSession session,
final long timestamp,
final DirectBuffer buffer,
final int offset,
final int length,
final Header header)
{
final long correlationId = buffer.getLong(offset + CORRELATION_ID_OFFSET); // <1>
System.out.println("Received message with correlation ID " + correlationId); // this line is added
// the rest is the same
}
Run Code Online (Sandbox Code Playgroud)
当我启动具有 3 个节点的集群时,其中 1 个被选为LEADER。然后我启动它开始向集群BasicAuctionClusterClient发送请求。
当我停止领导者时,新领导者会按预期选举出来,但从此时点到新领导者选举的消息永远不会到达集群(请参见下面的相关 ID …
aeron ×7
java ×2
apache-kafka ×1
benchmarking ×1
download ×1
file-sharing ×1
performance ×1
rsocket ×1