美文网首页BATJ架构
RPC (Remote Procedure Call Proto

RPC (Remote Procedure Call Proto

作者: 裘马轻狂大帅 | 来源:发表于2020-07-07 07:12 被阅读0次

    RPC (Remote Procedure Call Protocol)远程调用协议

    怎么做到透明化的远程调用协议?---动态代理

      怎么封装才能像调用本地程序一样调用服务?对java而言就是使用代理!

      java的代理方式有两种:①动态代理 ② 字节码生成

      字节码生成 这种方式更为高效和强大,但代码不易维护,所以大部分公司实现RPC框架时选择 动态代理!

    有了实现方式以后,就面临对消息的编码和解码处理,以便于传输

     动态代理需要实现InvotionHandler接口,里面有个invoke方法,该方法封装通信细节,此时需呀确定服务端和客户端互相通讯的消息结构。

     客户端的消息结构一般包括以下几种:

    接口名称

    方法名

    参数类型和参数值

    超时时间

    requestID,标示唯一请求ID

     同理,服务端返回的消息结构一般包括以下内容:

    返回值

    状态code

    requestID

     确定了消息结构下一步就考虑序列化

     序列化,就是将数据结构或者对象转换成二进制串的过程,也就是编码过程

     反序列化,就是把序列化过程中生成的二进制串转换成数据结构或者对象的过程

     目前国内各大互联网公司较早广泛使用hessian、protobuf、thrift、avro等成熟的序列化解决方案来搭建RPC框架,这些都是久经考验的解决方案。

    序列化完之后,就考虑通信。

    相关文章

      网友评论

        本文标题:RPC (Remote Procedure Call Proto

        本文链接:https://www.haomeiwen.com/subject/ogmoqktx.html