请教一下, 单纯的Protobuf只能直接实现序列化,而不能直接实现RPC吗?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请教一下, 单纯的Protobuf只能直接实现序列化,而不能直接实现RPC吗?

期待l 2019-01-07 12:37:41 1289

maven 引入Protobuf core,
只能直接用来序列化和反序列化吗, 而不能直接实现RPC ????

比如像Avro那样直接使用对应的实现类,Avro实现TCP的就使用 SocketServer和SocketTransceiver
Protobuf怎么实现???
跪谢

网络协议 Java Maven
分享到
取消 提交回答
全部回答(4)
  • suonayi
    2019-07-17 23:24:44
    已采纳

    Protobuf只是将所有字段按序序列化成出来,序列化结果里没有消息类型和整个消息长度的标识。
    做RPC的协议一般消息都是由消息类型、消息长度和消息体组成的,这样便于反序列出(识别)不同类型的消息和处理。
    比如通过消息头的消息类型就可能很快找到对应的反序列化类,再读取指定长度的消息体就可以反序列化结果了。
    比如需要检查每个消息体的大小防止恶意的消息交互,毕竟有坏人可能给你发一个超出你Xmx的消息,解析一下就OOM了。。

    如果你的场景里,客户端-服务端交互的消息类型只有一种,那么可以直接使用Protobuf做序列化和反序列化工具。

    需要RPC的场景,除了grpc外,还可以考虑protostuff,详情见 https://github.com/protostuff/protostuff

    1 0
  • s1ahs3r
    2019-07-17 23:24:44

    只有序列化过程没有传输与协议层面,无法实现 rpc 的哦

    0 0
  • yu_hc200
    2019-07-17 23:24:44

    protobuf是做的打包解包的工作,要做rpc,接口定义,服务寻址,通信协议等等工作都是需要的,对象的序列化(打包解包)只是其中很小一部分,常见的rpc框架有hessian,阿里也有开源框架dubbo可以参考

    0 0
  • 期待l
    2019-07-17 23:24:44

    在钉钉群中已经有一位大哥帮我回答了 ,总结一下

    Google的Protobuf只有实现了序列化的功能, 需要实现RPC只能去用grpc或者别的rpc框架

    恩...就是这样

    1 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程