【问题标题】:High performance distributed asynchronous RPC in javajava中的高性能分布式异步RPC
【发布时间】:2013-05-06 12:52:19
【问题描述】:

我想对具有以下要求的客户端列表进行 RPC:

  • 服务器不知道客户端(暗示一种代理?),客户端不知道服务器
  • 可能有多个客户端 - 它们分担处理 RPC 的负载
  • RPC 是异步的
  • 非常快(往返
  • 可选:提供故障转移机制。

可以使用并非真正用于此目的的底层工具来完成(Hazelcast 就是一个例子)。

你会用什么来满足这些要求?

谢谢!

【问题讨论】:

    标签: java asynchronous communication rpc distributed


    【解决方案1】:

    我会使用 ActiveMQ,因为它很容易上手和单元测试。

    它每秒可以支持 20K 条消息,这可能就足够了。

    如果您需要比这更快的速度,请考虑使用 HornetQ,但您需要测试它是否适合您的高性能需求。

    可以很容易地将一个 JMS 提供程序切换到另一个提供程序。


    如果你需要真正的高性能,你可以考虑我写的一个库,Java Chronicle。它不是为负载平衡而设计的,但每秒可以支持来自单个生产者的超过一百万条消息。

    【讨论】:

    • 我不相信 JMS 解决方案,因为我不需要存储消息和所有内容。对我来说,这似乎太多了。我也需要往返
    • 我实际上正在考虑通过 zeromq 做一些事情
    • 1000 微秒是相当长的时间。大多数 JMS 解决方案都应该支持这一点。 Java Chronicle 通过 TCP(往返)支持大约 100 微秒的延迟。
    • ZeroMQ 也是一个不错的选择。它在网络上的延迟相当低。 (与普通 TCP 的 10 微秒相比,环回 35 微秒的速度令人惊讶地慢)
    • 你的库看起来很有趣,我想我仍然需要在它上面构建 RPC 的东西。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多