系统间调用
一、前言
工作上常碰到RPC,Http传输,WebService传输,Rest风格等词汇,这些东西,在我看来都是系统间传输。那么何时用这些,为什么用这些,今天在这里整理一下。
二、比较
1. Http
它是个文本传输协议,简单,群众基础广,性能比较差,http协议的信息往往比较臃肿,传输速度一般。但灵活度方面,它不关心实现细节,可以跨平台,跨语言。
2.WebService
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。在某些业务复杂,稳定性和正确性要求高的领域(如ERP、电商、支付),WebService是有用武之地的。
如果考虑到多个引用指向同一对象的传输情况,web service要落后更多。Web service有多少个引用,就要复制多少份对象实体。Web service传输的冗余信息过多是其速度慢的原因之一,另外,WEB SERVICE的处理也很耗时,xml解析器效率普遍不高,处理xml很耗资源。这比冗余信息更为严重,冗余信息占用的只是网络带宽,而每次调用的资源耗费直接影响到服务器的负载能力。在博客上看到过评论说,用WEB SERVICE不能负载100个以上的并发用户。
一句话总结:WEB SERVICE稳定,复杂,笨重,不合适高并发的场合。
3. Restful
前几年,比较火。它不是什么新的技术,只是定义了一套新的标准协议。工作中,我用过一次,没啥太多的感觉,我觉得当时直接Http调用就行,不明白为什么非要用Restful。但是要承认,它使用非常简单,与WebService相比开发效率更高;而且,它使用JSON传输,JSON可读性更好,好解析,体积小传输速度更快。
4. RPC
我们提到RPC,大家都会想到国内的Dubbo、Motan(新浪微博的内部框架)、gRPC(谷歌的)、SOFARPC(阿里开源的)等框架。这些都是分布式的框架,它们非常适合内部api,基于TCP、UDP的传输,速度更快,传输数据更小,性能更高,并且适合高并发的场景。
三、总结
系统对内,我们使用RPC,对外,我们使用Http、Restful。
Http、Restful两者相比如何取舍,有前辈知道的话,望赐教,先谢过!
参考资料:
http://www.cnblogs.com/alfily/articles/4835332.html
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
https://www.cnblogs.com/jager/p/6519321.html