不同项目数据交互

一、境遇

  不同web项目之间需要交互些数据。当然WebService是项目本来就提供了的接口。很多客户对它很介意。

解决方案1、

  相同架构情况下,直接把项目重构再一起。

  优点:无。缺点一堆,还不如使用webservice。 

解决方案2、

  使用远程调用通讯的一些开源框架帮忙

  eg:RMI /Httpinvoker/Hessian /Burlap/WebService 等等...

  优点:如RMI,Httpinvoker,Hessian传输速度都很快。

二、远程调用解决方案

RMI

  Remote Method Invocation为Java非常重要的底层技术,传输稳定高效。有一些开源的远程调用组件以rmi为底层可以选择。但是仅仅支持Java,有一些局限。

Httpinvoker:

  这是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。

Hessian

  hessian支持跨语言,采用的是二进制RPC协议,基于HTTP传输,服务端不用开防火墙端口。传输速度速度也不错,对象过于复杂会影响速度

效率区别   

  RMI > Httpinvoker >= Hessian >> Burlap >> web service

 

最终决定采用Hessian来解决远程交互。

 

三、使用Hessian构建系统之间的桥梁

系统B、系统C 获取系统A数据。

1、系统A开发对外传输数据的接口。

2、开发适配系统A对外接口的hession客户端接口组件(包含对象、接口方法)。

3、系统B/C等其他系统依赖该组件,就可以直接调用该组件的方法获取数据

4、配置A系统与组件的连接设置。

 

适用于 A系统为主数据中心,其他周边系统多为依赖的情况。

 

 

四、关于Hessian的使用....

 

 

当然,这种方式只适合简单的提供远程服务,如果企业应用到了一定规模,采用面向服务的分布式架构是必不可少的。那么Zookeeper+Dubbo是比较适合的方式。

 

posted @ 2015-10-04 02:47  沉毅寡言  阅读(444)  评论(0编辑  收藏  举报