美文网首页Java学习笔记
dubbo 大白话系列-服务暴露的本质

dubbo 大白话系列-服务暴露的本质

作者: 春天里的布谷鸟 | 来源:发表于2016-08-28 11:17 被阅读632次

    1. “暴露”的本质

    RPC调用的本质是进程间通信,就是不同JVM中两个服务之间的通信,在计算机操作系统上进程间通信的方式有几种:共享内存、管道、socket。其中socket通信是不同机器不同进程之间通信最方便的方式。所以说暴露的本质就是将需要的暴露服务监听一个端口,无论是哪一中RPC的实现,无论是dubbo还是RMI都是一样。 这样当别人访问这个ip和端口的时候就可以根据传入的参数来进行回调本地的实现,最后将处理的结果返回。

    2.dubbo 暴露服务的细节

    先说一些dubbo设计的基本概念:

    1. invoker
      整个dubbo调用过程的核心,在服务方封装了服务实现类
    2. invoker 调用链
      dubbo实现了类似 java web的filter,这样在实际的调用中间环节中可以进行不同的操作,比如监控调用时间、泛化引用的处理、回声测试、token的处理、tps限流,而且可以根据需要自定义filter加入invoker调用链。

    1. 一个基本的暴露流程

    1. 将服务实现封装成invoker
    2. 形成invoker调用链
    3. 将invoker调用链封装成exporter,存入exporterMap中,key是根据invoker的url来生成
    4. 起一个服务端的socketserver,监听端口。

    ** 2. 当服务端收到请求的时候,如何找到对应的实现类进行调用?**
    如果服务器使用的是netty服务器,我们知道在netty服务端创建的时候,可以增加通道处理器,这样在收到请求的时候,就可以回调这些通道处理器,在处理器中根据调用信息生成key,从exporterMap找到对应的expoter,从而找到invoker调用链,invoker中封装了底层的实现类,完成回调,最后将结果封装返回到请求方

    相关文章

      网友评论

        本文标题:dubbo 大白话系列-服务暴露的本质

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