加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

我应该使用哪种Java RMI / RPC / IPC技术?

发布时间:2020-12-14 05:45:35 所属栏目:Java 来源:网络整理
导读:我正在开发一个 Java应用程序,它包含一个服务器和一个客户端(将来可能有多个客户端),可以在不同的主机上运行. 对于这两者之间的通信,我目前使用自定义协议,该协议由通过网络套接字发送的JSON消息组成,并且两端都转换回Java Bean对象.然而,应用程序越复杂,我
我正在开发一个 Java应用程序,它包含一个服务器和一个客户端(将来可能有多个客户端),可以在不同的主机上运行.

对于这两者之间的通信,我目前使用自定义协议,该协议由通过网络套接字发送的JSON消息组成,并且两端都转换回Java Bean对象.然而,应用程序越复杂,我注意到这种方法不符合我的标准并且过于复杂.

我正在寻找一个完善的,可能标准化的替代方案.

我已经看过远程方法调用(RMI),但是读到协议很慢(网络开销很大).

我正在寻找的技术应该是轻量级的(协议和库明智的),健壮的,可能支持压缩(如果它支持大的话!),可能支持加密,良好的文档和完善的(例如Apache项目).它应该像使用RMI调用远程对象上的方法一样简单,但没有缺点.

你能推荐什么?

解决方法

Avro是一个专为跨语言RPC而设计的Apache项目(其精神前身见 Thrift).它是相当新的(不到两年),因此它没有像RMI那样完善.不过,你应该给它一个机会;像卡桑德拉这样的大型项目正在转向Avro. Avro也是Hadoop下的一个子项目,并且一直得到该社区的健康支持.

它旨在快速并支持多种语言,因此您可能需要在编译期间引入另一个步骤,将Avro IDL文件转换为Java,尽管这不是绝对必要的.其余的是典型的RPC.

Avro的一个好处是它的传输层与数据的表示方式无关.例如,它为原始套接字,HTTP甚至本地进程内调用提供了各种“收发器”(它们的基本通信类). HTTPS和SASL收发器可以提供安全性.

为了表示数据,有各种类型的编码器和解码器,虽然默认的BinaryEncoder通常就足够了,因为Hadoop,Cassandra等……专注于效率.如果您发现有用,还有一个JsonEncoder.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读