• dubbo-RPC学习(二) http protocol


    dubbo中的协议默认支持很多种,从简单的开始,先解读HttpProtocol吧。

    dubbo中的http-RPC基于spring web支持的http invoker,web容器默认使用jetty。

    因为调用不是基于dubbo协议,在这里,存在一个抽象代理AbstractProxyProtocol,像http、RMI、webservice、hessian等等协议都继承自该代理类。该代理主要负责在发布服务的时候将服务代理发布出去,在引用服务的时候,转换为dubbo内部的执行体invoker。

    在HttpProtocol中,有一个关键的内部类InternalHandler,该类用于将http请求接入http invoker中,而且,默认只支持POST的http请求。

    先简单说说spring的http invoker。

    Spring HTTP Invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用,也就是说,可以通过防火墙,并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象,要注意的一点是,服务端、客户端都是使用Spring框架。

    客户端

    1. 向服务器发送远程调用请求
      远程调用信息-->封装为远程调用对象-->序列化写入到远程调用http请求中-->向服务器端发送
    2. 接收服务器端返回的远程调用结果
      服务器端返回的远程调用结果HTTP响应——>反序列化为远程调用结果对象

    服务端

    1. 接收客户端发送的远程调用请求
      客户端发送的远程调用HTTP请求——>反序列化为远程调用对象——>调用服务器端目标对象的目标方法处理
    2. 向客户端返回远程调用结果
      服务器端目标对象方法的处理结果——>序列化写入远程调用结果HTTP响应中——>返回给客户端。

    在dubbo中,是采用API的形式使用HTTP invoker的,针对HTTP invoker,还可以通过spring的xml进行配置来进行操作。在这里就不细说了。

  • 相关阅读:
    Python学习——模块的基本知识
    Python学习-软件目录结构规范
    路径追踪的理论与实现:复合重要性采样
    路径追踪的理论与实现:渲染方程
    记一个C++随机数导致的bug
    Gamma矫正的原理和实现
    聊一聊Python的sort函数
    BVH树的构建与遍历
    Cocos动画系统
    Cocos事件分发系统
  • 原文地址:https://www.cnblogs.com/asfeixue/p/3689250.html
Copyright © 2020-2023  润新知