RPC

Remote Procedure Call,希望远程调用可以像本地函数调用一样简单,不需要了解底层网络技术。

和 HTTP 协议的区别

RPC的概念在HTTP之前,RPC是一种思想、一种解决远程过程调用的技术,而HTTP是一种应用层的传输协议。

RPC HTTP
传输效率 使用自定义的TCP或HTTP2协议,可以让请求报文体积更小,提高传输效率 如果是基于HTTP1.1的协议,请求中会包含很多无用的内容
性能消耗 可以基于thrift实现高效的二进制传输。 大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能
负载均衡 自带负载均衡策略 需要配置Nginx,HAProxy来实现
服务治理 能做到自动通知,不影响上游。 需要事先通知,修改Nginx/HAProxy配置

应用

RPC的诞生早于HTTP,在多年以前,RPC更多用于C/S架构,客户端通过RPC协议访问自家的服务器。HTTP更多用于B/S架构,浏览器还需要访问其他家的服务器。不过现在已经不怎么区分了,网页、客户端都采用HTTP协议,这样服务器开发维护起来也比较容易。RPC更多用于公司内部集群里,各个微服务之间的通信,同时也不需要像HTTP1.1协议那样需要去考虑浏览器的各种行为,比如302重定向啥的,所以性能更好一些。HTTP2对HTTP1.1进行了很多改进,所以性能可能比很多RPC协议还好,gRPC的底层直接用的HTTP2。

总之,RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

思考

微服务之间通信为什么用RPC而不用HTTP?

HTTP1.1传输的内容以字符串为主,header和body都是如此。body使用Json来序列化结构体数据。RPC协议定制化成都更高,可以采用体积更小的protobuf或者其他序列化协议去保存结构体数据。

常见的RPC框架:Thrift

posted @ 2024-10-29 15:13  千千菌  阅读(5)  评论(0编辑  收藏  举报