HTTP 请求和 RPC 调用

本文深入解析远程过程调用(RPC)的核心概念,探讨其在网络通信中的封装机制,包括请求体、响应体及客户端调用封装。通过对比HTTP请求,阐述RPC与Dubbo在企业级服务通信中的优势与应用场景。

rpc字面意思就是远程过程调用,只是对不同应用间相互调用的一种描述。实现方式可以是tcp和http。

这里我说一种rpc实现,可以对照dubbo

rpc最关键的地方有请求体的封装,响应体的封装以及客户端调用的封装。

求体:服务类class(一般是接口名),方法名methodName,还有参数类型,参数变量

响应体:响应状态(可以用boolean,表示是否成功),返回结果可以是Object(可以存放正常的返回结果),还有可以定义message(如果报错了,打出异常信息返回回来)

客户端调用:既然是远程调用,就避免不了网络连接的建立,需要建立tcp或http连接。但是每个服务都都要去手写个连接,岂不累死?所以通常会用到代理模式解决这个问题(写框架的时候才会体会到设计模式的威力)。具体的做法就是写个工厂类,以服务的接口名为参数,生成一个代理对象。

至此,一个简单的rpc就是实现了。

我们再看看题主的问题,什么是rpc?我觉得就是基于tcp和http的请求封装

而基于http请求的方式,通过请求路径已经确定了,你要请求的服务的类,方法名,比我上面的说的方式更傻瓜化。
所以rpc为啥不http请求,取决于你的服务端支不支持http

另外,dubbo这样的rpc一般在公司内部系统使用,而对外的open API一般会rest或者http方式。因为dubbo这样的rpc会暴露服务地址,不安全,而http方式是基于域名,网络要更安全。



skip
https://www.jianshu.com/p/f78b88632d10

### RPC调用HTTP调用的主要区别及适用场景 RPC(Remote Procedure Call Protocol)和HTTP调用是两种常见的远程通信方式,它们在技术实现、性能表现以及适用场景上存在显著差异。 #### 技术实现 RPC调用通常基于TCP/IP协议[^2],允许客户端像调用本地方法一样调用远程服务器上的服务。这种方式屏蔽了底层网络通信的复杂性,使开发者能够专注于业务逻辑的实现[^4]。相比之下,HTTP调用基于HTTP协议,这是一种更高层次的应用层协议,具有通用性和跨平台特性。由于HTTP协议本身包含额外的头部信息和处理逻辑,其性能相较于直接基于TCP的RPC调用略逊一筹[^2]。 #### 性能表现 从性能角度来看,RPC调用因其较低的协议开销和高效的通信机制,更适合对性能要求较高的场景。而HTTP调用虽然性能稍低,但其灵活性和广泛支持使其成为跨语言、跨平台集成的理想选择[^1]。 #### 适用场景 - **RPC调用**:适用于企业内部系统之间的紧密集成,尤其是在对性能有较高要求的情况下。例如,在大型企业的微服务架构中,RPC框架可以提供更快的响应时间和更低的延迟[^3]。 - **HTTP调用**:适用于需要跨平台、跨语言支持的开放系统集成。例如,对外提供的RESTful API服务通常使用HTTP协议,以确保不同技术栈的客户端都能够轻松接入。 ```python # 示例代码:简单的HTTP请求 import requests response = requests.get("https://api.example.com/data") print(response.json()) # 示例代码:RPC调用(以gRPC为例) import grpc from example_pb2 import RequestMessage from example_pb2_grpc import ExampleServiceStub channel = grpc.insecure_channel('localhost:50051') stub = ExampleServiceStub(channel) response = stub.GetData(RequestMessage(field="value")) print(response.result) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值