RPC是什么?HTTP是什么?RPC和HTTP有什么区别?

作者: 小白debug分类: 计算机技术 发布时间: 2022-11-27 10:10:34 浏览:137236 次

RPC是什么?HTTP是什么?RPC和HTTP有什么区别?

_Atg:
感谢up的视频 没看这个视频我还以为RPC是远程进程函数调用呢

【回复】回复 @难道哕哕不可爱 :Procedure=过程,Function=有返回值的Procedure RPC=Remote Procedure Call
【回复】回复 @SuAooooo :对c来说过程确实就是函数呢
【回复】回复 @难道哕哕不可爱 :那不就是返回值为void的函数
努力挣扎的javaer:
裸tcp会产生粘包问题无法区分消息要表达的准确意思,所以在此基础上又有了一层协议,规定每条信息的长度(大多通过头信息来定义),就产生了http和rpc,rpc诞生较早,多用于各公司的客户端和本公司的服务端通信所以各家公司的rpc协议大不相同。而http主要用于浏览器与各家公司服务端通信,一个浏览器不可能去适配所有公司的rpc协议,所以规定了http协议,各家公司的接口遵循http协议就能让浏览器正常访问本公司的服务。(这里是否意味着http可以理解为一个大一统的rpc协议呢?)而http(1.1)协议因为要兼顾众多公司的多种应用场景,所以兼容性强且附带有重定向等功能相应的性能就较差。而rpc就用于本公司各个服务间的调用了。http2.0之后的性能已经和rpc相差无几,且大多公司不仅有客户端也有网页端共用一套接口的话那就会选用http,http和rpc正呈现一种逐渐融合的趋势。感觉up可以讲一下(http1.1和2的区别)

【回复】粘包就是伪命题,说自己遇到粘包问题等于说自己TCP协议是什么都没学好
【回复】说出TCP粘包这个词都是没学好网络的,TCP是面向流的,不是包
【回复】回复 @hyperbin :tcp只是看起来像流,内部不还是一堆syn ack 这不就明显的数据包特征?
ForLearoy:
很迷惑啊,rpc这个东西对应的是lpc和ipc,在我印象中rpc这个协议在提出的时候(大家可以自己去找提出rpc这一概念的论文),是没有提到这个协议到底是传输层还是网络层还是应用层协议的,从论文角度来说http也是rpc的一种,为什么现在这么多人把http和rpc对立起来了?也许是我理解错了,希望up或者其他人能解答下

【回复】你这个理解是正确的,up这种理解就是以谬传谬的结果...
【回复】Rpc最初的目的是为了让远程调用像本地调用一样透明,所以开始的实现思路是以进程间调用的方式只支持unix系统,但这种透明方式没有考虑到网络现实导致其实我们使用起来并不透明,后来就从操作系统的一个基础设施层的解决方案变成了语言层面的,出现了支持面向对象的cobra ,用XML描述的web service,java的标准实现JMI 简单易用的json rpc 和具有服务治理能力的dubbing等以面向过程为核心思想的远程调用方式,与rpc 相对的概念不是http而是它的抽象 RESTful 架构风格,一个以面向资源为核心思想的远程调用方式。
【回复】回复 @白小骨呼呼 :是的,我又回头翻了一下那篇论文,全名叫Implementing Remote Procedure Calls,作者ANDREW D. BIRRELL and BRUCE JAY NELSON, rpc甚至不是个协议,明确的说是概念、机制或者思想,和Local Procedure Call(LPC)、Inter-Process Communication(IPC)对应
不怕不胖:
总结了,但也不是完全对。rpc是总称,http只是一种rpc实现。rpc有grpc,thrift,mina 这种,多得很。 普通rpc在性能和特性上比http好,但是http有个最大的好处,标准化和实现广泛。任何语言都实现了http的客户端服务器,2个不同程序交互简单太多。大部分程序都有http接口,你使用起来就方便。如果是grpc,你还得重新实现。运用最广泛的方案就是好方案。

花为什么会落呢:
有了rpc为什么还有http 服务发现不同,底层链接不同,传输内容不同

【回复】你好像再说有了人为什么还有男人
KNE丶:
其实主要原因是网络模型的区别,单路复用io,为了提高服务端的并发性能减少线程切换的损耗,推荐一个Java实现的rpc轻量框架,源码比较简单易懂,可以深入大家理解rpc框架 https://github.com/kwsc98/krpc

想被撑死的狗:
http其实是一种很糟糕的协议,特别是性能上。纯文本本身就浪费空间了,还要是通过回车符分字段,解析起来很可能动态分配内存,更别说1.1的多路复用为0。还有朋友们,世界上很多应用都不是仅靠请求响应就能完成的,譬如游戏业务。

Milolipop:
HTTP和RPC是两种不同的网络通信协议。HTTP是一种通用的应用层协议,主要用于Web浏览器和Web服务器之间的通信。它被广泛用于分布式系统中,例如在Web应用程序中。RPC(远程过程调用)是一种通信协议,它允许一个程序在另一个计算机上运行的程序上调用远程过程。它通常用于构建分布式应用程序。 总的来说,RPC比HTTP更强调远程过程调用的概念,而HTTP更侧重于客户端-服务器的模型。因此,在某些情况下,RPC可能更适合用于分布式系统中的通信,而在其他情况下,HTTP可能更适合用于Web应用程序中的通信。

LoveKdy丶:
rpc按我的理解是一种服务,或者说是一种概念,实现rpc的方式有很多,http只不过是其中的一种,所以rpc应该不能称作为协议

我本可以你说呢:
总有些艾斯比喜欢抖机灵 自己咋不出个视频讲讲?

科技猎手 程序员 网络 网络安全 python java http RPC web3.0 科技猎手计划·2022第五期

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!