如何设计解析rpc请求,避免出现粘包问题

背景

  对于远程调用的请求方,它的请求包含以下内容:服务的名称(请求的方法所在的类名称)、请求的方法名称、该请求方法的参数。由于请求方发来的数据是字符流,那么就涉及到接收方如何读取才能正确的解析各个部分数据。

字符流的构成

header_size(4个字节)+(service_name/method_name/args_size ) +args

1.header_size: 数据头的长度即(service_name/method_name/args_size )的长度
2.service_name/method_name/args_size:请求的header,该部分的格式在rpc框架中的proto文件中定义。
在这里插入图片描述
   **之所以加上args_size字段,就是为了避免粘包,使得可以正确读取参数
   **问题,为什么还需要单独解析args,直接定义在rpc的proto文件中,直接解析不就行了?
     答:rpc是个远程服务调用框架,会有不同的服务在上面发布,每个服务中的每个方法的参数格式都不可能相同,所以是不可能写在rpc框架的proto文件中的,args应该是写在使用rpc框架的proto文件中。
3.args:请求方法的参数

     //根据args_size 获取解析字符
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值