RPC相关

1.RPC:
远程过程调用,电脑A调用电脑B里面的程序即为RPC
广义上来讲:HTTP请求即为一种RPC
狭义上来讲:区别于http请求,使用自定义格式(自定义请求头请求体,响应头响应体)的二进制方式。我们更多谈到的RPC就是狭义的RPC。
2.RPC优缺点:
相比于传统的http:
优点:A.效率高;B.发起RPC调用的一方,在编写代码时可忽略RPC的具体实现,如同编写本地函数调用一样
缺点:通用性不如http好,因为传输的数据不是http协议格式,所以调用双方需要专门实现的通信库,对于不同的编程开发语言,都要有相关实现。而http作为一个标准协议,大部分的语言都已有相关的实现,通用性更好。
http更多的是面向用户与产品服务器的通讯;而RPC更多的是面向产品内部服务器间的通讯。
调用过程:client-sever----client stub--(network service)--server stub----server 红色部分是需要我们去实现的,看起来就像是客户端直接调用服务器那样子
RPC消息协议
实现RPC调用时,通讯双方传输的数据如何表达描述,设计时一般考虑2个目标
1.性能高:将原始数据转换为消息数据的速度快,转换后消息数据的体积小
2.跨语言:客户机可以用Python 服务器端可以用java

边界:
分隔符法:message body \r\n message body \r\n 读到\r\n即为一条消息的结尾
长度声明法:接收者先读取出长度声明,再按照声明的长度读取出相应大小的数据即可 -----length(长度声明) message body length message body

内容:可以使用文本,也可以使用二进制
文本:可以将数据转换为具备某种格式的字符串(如json)
二进制:将数据在内存中的一些原始二进制位或字节直接在网络中传送

压缩:如果消息数据过大,为了减轻网络带宽的压力,可以考虑对消息数据进行压缩处理
压缩有压缩和解压成本,使用时得综合考虑,使得减轻的压力>成本

posted @ 2019-12-02 18:56  难离若雨  阅读(139)  评论(0编辑  收藏  举报