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