性能对比

性能对比

既然有HTTP请求可以解决系统间调用的问题了,为什么还会有人使用RPC调用?题主明显是只看到现状,而忽略了两种远程请求调用的历史进程。RPC1984年就被人用来做分布式系统的通信,Java1.1版本提供了Java版本的RPC框架(RMI,而HTTP协议在1990年才开始作为主流协议出现,而且HTTP发明的场景是用于web架构,而不是分布式系统间通信,这导致了在很长一段时间内,HTTP都是浏览器程序和后端web系统通信用的东西,上面的文档格式都是HTML(非常啰嗦,没有人会把HTTP作为分布式系统通信的协议。在很长一段时间内,RPC才是正统。随着前端技术的发展,AJAX技术和JSON文档在前端界逐渐成为主流,HTTP调用才摆脱HTML,开始使用JSON这一相对简洁的文档格式,为后面用于系统间调用定下基础。最后随着RESTFUL思潮的兴起,越来越多系统考虑用HTTP来提供服务,但这时候,RPC已经是各种大型分布式调用的标配了。所以题主的问题真正应该要反过来问,既然有RPC了,为什么还要有HTTP请求?这个问题不难回答,因为现在大部分的系统都是给浏览器使用的,因此HTTP协议必不可少,而这大部分系统中的绝大部分,对于后端系统间调用的性能都是要求不高的,毕竟走的都是内网,它们关心的是前端和后端的性能,因此后端系统间调用如果能够采用和前端一样的技术栈,那无疑是维护成本最低的,而这时HTTP的技术生态也刚好满足这个条件,所以就星星之火可以燎原了。那么对于少数的部分系统,他们需要使用RPC,一可能是老架构,也不敢动这块,二是性能要求可能只有RPC可以满足。就我个人而言,我所任职的公司的云平台也早就统一要求走HTTP了,性能,有别的路可以想办法,而且HTTP2也有了很大改进了。

Links

上一页