HTTP 请求和 RPC 调用

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

猜你喜欢

转载自blog.csdn.net/aliyunc/article/details/89337480