首先分享之前的所有文章 , 欢迎点赞收藏转发三连下次一定 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164…
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca…
一 . 前言
这一篇只预览一下 Bootstrap 初始化的主流程 , 部分细节点会另外分析
Dubbo 3.0 通过 DubboBootstrap 进行初始化逻辑 , DubboBootstrap 的启动逻辑如下 :
1 | JAVA复制代码// 核心原理为 ApplicationContextEvent 事件的触发 , 当 SpringApplication 启动后 ,会发布该事件 |
主要涉及类
1 | java复制代码// 参考类 : |
二 . 入口详解
Dubbo 的初始化主要经过以下几个类 : DubboBootstrap -
1 | java复制代码// Step 1 : DubboBootstrapApplicationListener |
三 . DubboBootstrap 启动流程
3.1 Start 主流程
start 环节主要由以下几个环节 :
1 | java复制代码Step 1 : 设置启动参数 |
3.2 设置启动参数
1 | java复制代码if (started.compareAndSet(false, true)) |
3.3 initialize 初始化内容
1 | java复制代码public void initialize() { |
3.3.1 ApplicationModel.initFrameworkExts()
1 | java复制代码// C- DubboBootstrap |
PIC21005 : FrameworkExt 对象列表
3.3.2 startConfigCenter 简述
这个阶段总共可以分为3步 :
- 分别加载 ApplicationConfig 和 ConfigCenterConfig
- 对 configCenterConfig 进行配置
- 对 Application , Monitor , Modules 等多个组件进行最后的刷新
1 | java复制代码private void startConfigCenter() { |
补充 : ConfigCenterConfig 对象的作用
该对象中包含连接的基础配置信息 , 例如 protocol , address , port , cluster , namespace 等
灵活利用该 ConfigCenterConfig 对象可以集成多种不同的注册中心
补充 : PS:332001 结构
3.3.3 loadConfigsFromProps 简述
这里和上面其实差不多 , loadConfigs 是通过特殊的前缀对配置文件的配置进行读取
之前看过多个开源项目对于配置文件的加载思路 , 基本上殊途同归 , 都是以类区分 , 通过前缀加载 , 后面会单独分析
1 | java复制代码private void loadConfigsFromProps() { |
3.3.4 checkGlobalConfigs 简述
在这个环节中会通过 ConfigValidationUtils 进行配置校验 , 以及端口处理 , 最后通过 refresh 刷新
1 | java复制代码private void checkGlobalConfigs() { |
3.3.5 startMetadataCenter 简述
此处是元数据的处理 , 元数据是新特性 , 可以在配置文件中使用前缀“dubbo.metadata-report”设置MetadataReportConfig的属性
什么是元数据 :
- 元数据是为了减轻注册中心的压力,将部分存储在注册中心的内容放到元数据中心。
- 元数据中心的数据只是给自己使用的 , 改动无需刷新
- 不需要监听和通知 , 极大的减少了性能的消耗
1 | java复制代码private void startMetadataCenter() { |
3.3.6 initMetadataService 简述
1 | java复制代码 private void initMetadataService() { |
3.4 exportServices
详见服务注册体系
3.5 referServices
详见服务发现体系
3.6 onStart 调用监听器扩展
1 | java复制代码private void onStart() { |
总结
这一篇主要是为了总结, 以及对全部的概念有个初步的理解 , 后面会逐步完善整个流程中的细节点 , 以及对其代码的学习和使用
本文转载自: 掘金