之前在想模块之前的通信为什么不打个jar包,这样会比较稳定之类的。问了个大神,给出了答案。
通过打jar包,提供给模块用,面临包频繁升级 ,改一下升一次,业务依赖太强了, jar升级后,然后依赖方不通知全,会出问题, 然后通知全所有人都得上线,代价太大。那种打jar包的可以是比较稳定的系统。如果升级频繁,需要通过模块之前通信来做。
通信一般都用RPC来跳过http协议,像双方协定一样,调用方需要服务提供方提供协定,调用方使用后 RPC就会发送过去,例如现在用的高速服务,Dubbo,HSF等。之前的公司我记得用的webservice,没有跳过http协议,优点是简单,直接,开发方便,但是对于大型企业来说,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,http 是短连接,rpc 是长连接,使用rpc不必要每次都创建,释放socket链接。
值得一提的是,RPC也需要打jar包,只不过在客户端可以打接口的jar包(大神说 是 jar层面的接口说明,可通过maven私服),在服务端打实现类的jar包,服务端服务发布,客户端服务引用,即可实现RPC高速服务。
rpc,http,webservice区别(转):
rpc是远程过程调用,你可以这么理解,就是在另外一台服务器上有一段代码(函数),你可以通过网络远程调用它。用什么协议(http,tcp,udp…),传输什么数据格式(json,xml,二进制…)你都可以自己定义。
http只是一种应用层的协议,和你要写的代码没有关系。你只需要好好的了解它,并且利用好它的特性就好了。
webservice,顾名思义这也是一种提供service的形式,只是它是通过http(web)来提供service而已。你可以基于http来提供你想提供的任意的服务,可以是rpc,也可以是restful。