标签: aeron

Aeron 可以处理的最大消息是什么?

Aeron可以处理的最大消息真实逻辑的大小是多少?

我意识到 Aeron 适合处理小消息,但是我希望在我们的堆栈中有一个单一的协议,并且我们的一些消息很容易达到 100Mb 的大小。

文档不清楚哪些设置会影响这个问题的答案。我担心的是默认缓冲区设置不允许这种大小的消息。或者缓冲区设置对最大应用程序消息大小没有影响吗?

network-programming aeron

5
推荐指数
1
解决办法
1060
查看次数

如何使用 RSocket 创建文件发送客户端/服务器?

我似乎无法在RSocket上找到任何资源/教程,只能在 GitHub 上阅读他们的代码,我不明白。

我的服务器上有一个文件路径: String serverFilePath;

我希望能够从我的客户端下载它(最好使用RSocket 的 Aeron 实现)。有谁知道如何使用 RSocket 做到这一点?

提前致谢。

java file-sharing download aeron rsocket

5
推荐指数
1
解决办法
1559
查看次数

运输基准的不同结果

我为我关于 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个选项:

  • io.easylogic.benchmarks.AeronPingBenchmarkJlbhSingleThread(默认)
  • io.easylogic.benchmarks.AeronPingBenchmarkJlbhSeparateThread
  • io.easylogic.benchmarks.AeronPingBenchmarkHdrHistogram

java performance benchmarking multithreading aeron

5
推荐指数
1
解决办法
371
查看次数

是否可以从 Aeron Cluster 重播?

我们想使用 Aeron 作为持久队列。是否可以设置 Aeron Cluster 以提供

  • 复制,以及
  • 是否可以为客户重播(如 Aeron Archive)?

aeron

5
推荐指数
1
解决办法
409
查看次数

如何用 Aeron 替换 Kafka

目前我们生产环境的交易系统使用的是Kafka。由于Kafka延迟太高,我们希望用Aeron替代Kafka。如何正确使用Aeron?

apache-kafka aeron

2
推荐指数
1
解决办法
2391
查看次数

Aeron 会丢失消息吗?

如果我通过发布向某个通道(IPC 或 UDP)提供消息,并且此操作返回正值(新位置),这意味着数据是否已写入磁盘(fsynced 到 /dev/shm)?换句话说... Aeron 是否依赖页面缓存?当我通过发布提供新数据并收到积极的响应值后操作系统关闭时,我可能会丢失数据吗?

aeron

1
推荐指数
1
解决办法
335
查看次数

Aeron Cluster 交付保证是什么

在这篇文章中,有一条已批准的评论,其中包含以下声明:

集群通过使用仲裁协议将其提升到一个新的水平,以防止节点发生故障时消息丢失。

我正在测试一个集群节点发生故障时的传递,但根据我的观察,如果节点发生故障,消息可能会丢失。

我正在使用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

1
推荐指数
1
解决办法
262
查看次数