我应该使用哪种Java RMI / RPC / IPC技术?
我正在开发一个
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |