java中的高性能分布式异步RPC
Posted
技术标签:
【中文标题】java中的高性能分布式异步RPC【英文标题】:High performance distributed asynchronous RPC in java 【发布时间】:2013-05-06 12:52:19 【问题描述】:我想对具有以下要求的客户端列表进行 RPC:
服务器不知道客户端(暗示一种代理?),客户端不知道服务器 可能有多个客户端 - 它们分担处理 RPC 的负载 RPC 是异步的 非常快(往返 可选:提供故障转移机制。可以使用并非真正用于此目的的底层工具来完成(Hazelcast 就是一个例子)。
你会用什么来满足这些要求?
谢谢!
【问题讨论】:
【参考方案1】:我会使用 ActiveMQ,因为它很容易上手和单元测试。
它每秒可以支持 20K 条消息,这可能就足够了。
如果您需要比这更快的速度,请考虑使用 HornetQ,但您需要测试它是否适合您的高性能需求。
可以很容易地将一个 JMS 提供程序切换到另一个提供程序。
如果你需要真正的高性能,你可以考虑我写的一个库,Java Chronicle。它不是为负载平衡而设计的,但每秒可以支持来自单个生产者的超过一百万条消息。
【讨论】:
我不相信 JMS 解决方案,因为我不需要存储消息和所有内容。对我来说,这似乎太多了。我也需要往返 我实际上正在考虑通过 zeromq 做一些事情 1000 微秒是相当长的时间。大多数 JMS 解决方案都应该支持这一点。 Java Chronicle 通过 TCP(往返)支持大约 100 微秒的延迟。 ZeroMQ 也是一个不错的选择。它在网络上的延迟相当低。 (与普通 TCP 的 10 微秒相比,环回 35 微秒的速度令人惊讶地慢) 你的库看起来很有趣,我想我仍然需要在它上面构建 RPC 的东西。【参考方案2】:看到这个异步框架:https://github.com/reactor/reactor 和幻灯片:http://www.slideshare.net/eonnen/high-performance-network-programming-on-the-jvm-oscon-2012。
【讨论】:
以上是关于java中的高性能分布式异步RPC的主要内容,如果未能解决你的问题,请参考以下文章
分布式RPC框架性能大比拼 dubbomotanrpcxgRPCthrift的性能比较