欢迎光临散文网 会员登陆 & 注册

既然有HTTP为什么还要有RPC?

2023-06-01 17:05 作者:取昵称重名好烦啊  | 我要投稿


00:07


1、为什么有HTTP还要有RPC?

socket:客户端 -> 服务端

TCP/UDP的封装 -> socket

纯裸TCP -> 字节粘包问题 -> 划分TCP一大串字节的规则(头身尾):协议诞生(HTTP/RPC)

HTTP:访问网址

RPC:远程调用服务器(gRPC、thrift)

回到一开始的问题:这个问题是个认知误区,事实上HTTP诞生的时间晚于RPC,所以应该反过来问为什么有RPC还要有HTTP?


03:40


2、为什么有RPC还要有HTTP?

C(client)/S架构:RPC,公司内部的服务器调用各成一套体系 -> 演化成现在公司项目的微服务调用方法

B(browser)/S架构:浏览器需要能够丝滑访问任何服务器,HTTP诞生于对统一标准的需要 -> HTTP可以做到内外通吃


04:42


3、如果HTTP可以内外通吃,为什么还要用RPC用作公司内部的微服务调用呢?——对比HTTP1.1和RPC的优劣

1)服务发现:HTTP(DNS)、RPC(Redis等中间服务)

2)底层连接形式:RPC会建立连接池,但目前很多语言的网络库中也会给HTTP加连接池

3)传输内容:结构体的序列化和反序列化 -> HTTP1.1注重html页面展示,传输内容以字符串为主(json);RPC私人定制,可以用更小的protobuf保存结构体,传输字节数据

第三点,RPC胜出,但目前HTTP2已经在性能上大大改善,甚至RPC也会基于HTTP2

回到一开始的问题,为什么还要有RPC,原因是:之前的项目都太老啦,那个时候的HTTP还没有进化得这么完善呢,所以很多都用的RPC,迁移到HTTP当然可以啦,但是程序员懒啊,又不是不能用!╭(╯^╰)╮


既然有HTTP为什么还要有RPC?的评论 (共 条)

分享到微博请遵守国家法律