RPC与HTTP的区别 | 青训营笔记

186 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记

首先感谢青训营在同一天同时开设HTTP和RPC的网络通信课程,加深了我对两者的理解。

对于大部分校内同学来说,基于HTTP通信搭建WEB服务是一件比较常见的事情。或者说运行在互联网上的大部分程序都是基于传统HTTP进行通信服务。而对于近年来微服务架构的出现使得RPC通信逐渐走进人们的视野,有利于大型企业服务内部间的快速通信。

首先,从通信报文的大小来区分。对于HTTP来说,由于是早期定义的协议规范,常用的HTTP1.1,HTTP2.0都存在着一些冗余数据。为了适配互联网的大部分设备/网站,因此会存在一定的消息冗余。而RPC通信双方都是已知设备,为了提升数据传输性能,可以通过压缩数据、减少无用的报文头等方式来压缩传输的数据总量。就结论而言,RPC通信的数据比HTTP的数据少,因此可以更高效的进行网络通信。

其次,从架构上理解的话。RPC通信常见于各种框架如kitex、gRPC等,相当于依赖于注册中心etcd实现服务注册,服务发现,心跳检测来协调服务之间的发现。同时为了保证RPC通信能够以正确的形式,通过需要些IDL文件生成对应的probuffer和thrift代码,实现双方进行通信;具体操作表现为先写IDL调用函数,生成相应的代码,撰写业务逻辑,部署服务。这样就是一个完成的RPC微服务开发流程;

而HTTP的话比较简单,作为服务端只需要通过gin等web开发框架首先开启TCP网络监听、通过设置路由树,配置调用的API函数。通过实现API函数的Serve服务,针对数据库操作DAO层。通过以上步骤就可以配置一个支持http请求的服务器,好处就在于只需要设置好对应的请求方法,分配好路由,就能直接部署服务上线。

相同点:无论是RPC还是HTTP,本质都是客户端利用远程服务器资源进行计算并返回相应的结果进行处理或展示。