美文网首页
Dubbo的RPC

Dubbo的RPC

作者: 是我_7b3f | 来源:发表于2018-06-02 23:28 被阅读0次

    总结:RPC有三个要素:1,网络通信;2,序列化;3,代理

    网络通信

    Dubbo默认使用dubbo协议 DubboProtocol,在这个类中利用了Netty工具

    看一下导出export方法:

    参数invoker代表一种可执行体,可参考DubboInvoker的实现

    前面判断是否是是stub方法是的话缓存

    openServer方法:

    先判断地址是否已经有连接ExchangerServer如果没有则put到servermap如果有则reset

    看一下createServer方法:

    其中requestHandler为ExchangeHandlerAdapter的实现类,用来处理收到的消息

    返回一个HeaderExchangeServer

    DecodeHandler和HeaderExchangeHandler各是一个装饰类

    DecodeHandler在接到消息后加入编码的功能

    Transporters.bind

    NettyTransporter

    DubboProtoco中保存的是key(也就是地址)到HeaderExchangeServer的映射

    HeaderExchangeServer通过调用NettyServer发送消息,管理Channel,发送心跳

    序列化

    默认使用Hession2序列化

    在解码中ExchangecCodec.encodeRequest为例

    代理

    默认使用Javassist生成动态代理class类

    都添加EchoService接口

    InvokerInvocationHandler

    都是调用invoker.invoke方法

    在getProxy方法中使用Javassist动态生成了Proxy的子类实现了newInstance方法

    生成动态代理类.

    相关文章

      网友评论

          本文标题:Dubbo的RPC

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