普通socket, rpc, websocket,http等

霸气de小男生 提交于 2019-11-27 12:14:24

 

rpc的用法是客户端直接调用服务端的函数,其实他就是把数据传给服务端,服务端处理完以后返回给客户端,

websocket是把数据发出去,他是在tcp之上一层的,他有发送结束标志,就是一次ws.send的结束,服务器会知道,服务器按照协定可以拿出完整的一次ws.send那么区别就出来了:websocket并不关系对方拿到数据后处理的过程是否完成,而rpc是和处理过程相关的,其实他们不是同一个级别的东西。如果是短连接的话,rpc更像是http,

rpc适合做数据同步,websocket适合做流,当然也可以用websocket实现rpc

https://www.jianshu.com/p/3b5955940998

这个问题其实是有理解误区的,首先 http 和 rpc 并不是一个并行概念。
rpc是远端调用协议, 包含传输协议和编码协议。
传输协议包含: 如著名的 [gRPC](grpc / grpc.io**) 使用的 http2 协议,也有如dubbo一类的自定义报文的tcp协议。
编码协议包含: 如基于文本编码的 xml json,也有二进制编码的 protobuf binpack 等。
因此我理解的你想问的问题应该是:为什么要使用自定义 tcp 协议的 rpc 做后端进程通信?
要解决这个问题就应该搞清楚 http 使用的 tcp 协议,和我们自定义的 tcp 协议在报文上的区别。

那么假如我们使用自定义tcp协议的报文如下:

报头占用的字节数也就只有16个byte,极大地精简了传输内容。
这也就是为什么后端进程间通常会采用自定义tcp协议的rpc来进行通信的原因。
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!