| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Dubbo暴露服务过程源码分析 -> 正文阅读 |
|
[Java知识库]Dubbo暴露服务过程源码分析 |
Dubbo服务暴露机制前言在进行服务暴露机制的分析之前,必须谈谈什么是 一般情况下,
Dubbo就是用这种 Dubbo用
服务暴露流程大体流程分为三个步骤:
源码解析 先来到 可以看到这个类实现了 从 上述方法中主要就是进行配置检查,然后进入 从上述源码中可以看到Dubbo是支持多注册中心的,并且支持多种协议,一个服务如果有多个协议那么都需要暴露。
接下来进入 构建完成之后的URL如下图所示: 使用的是dubbo协议,接下来要做的就是根据URL来进行服务暴露 本地暴露 进入 此处的 经过转化后得到的 如图所示,具体实现类被层层包装。 为什么要封装成invoker呢? 封装成invoker是为了屏蔽调用的细节,统一暴露出一个可执行体,使得调用者调用时变得便捷简易。 为什么要使用本地暴露呢? 因为可能存在本地不同服务之间相互调用的情况,因此本地暴露后,内部可以直接进行调用,而省去了不必要的网络通信。 此处引用一下博主敖丙的文章中的本地暴露流程图: 远程暴露 此时本地暴露已经完成了,现在开始远程暴露。 流程与本地暴露相似,都需要先封装为invoker然后再进一步生成exporter,以下是 可以看到先是走 现在我们进入 上述操作主要是讲export转化为exporter,获取注册中心的相关配置,如果需要注册则向注册中心进行注册,并且在 然后进入 箭头指向的方法最终会调用 需要创建server 上述代码中,主要就是根据URL创建出key,然后将key和invoker存入exporterMap中关联起来,如果是初次服务暴露则需要创建监听服务器,默认是NettyServer,并且初始化各种Handler,比如心跳检测,解码等。 至此服务暴露流程结束。 此处引用博主敖丙的文章中的本地暴露流程图: 以上。 整理不易,如果对你有帮助留个三连吧! 如果不足或错误欢迎评论指正。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:07:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |