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的性能比较

Java分布式 RPC 框架性能大比拼,Dubbo最差?

Java RPC 分布式框架性能大比拼,Dubbo排老几?

Java分布式:RPC(远程过程调用)

大数据分布式都用到了的Netty,这几大核心知识你一定要看看!

Dubbo 2.7.12发布,分布式RPC服务框架