服务暴露原理

配置文件

IOC容器启动,加载配置文件的时候
Dubbo标签处理器,解析每一个标签

封装成对应的组件

service

解析service标签
将service标签信息,封装成ServiceBean

ServiceBean

实现了两个重要机制

InitializingBean

Spring的接口
当组件创建完对象之后
会调用InitializingBean中的afterPropertiesSet方法

组件属性设置完成,会回调这个方法

ApplicationListener

应用监听器
监听IOC容器的刷新事件

当IOC容器中,所有对象都创建完成
会回调onApplicationEvent方法

Spring原理

ServiceBean在创建完对象之后
会调用afterPropertiesSet方法

IOC容器启动完成之后
会调用onApplicationEvent方法

afterPropertiesSet
设置beanClass的属性值

onApplicationEvent

当IOC容器刷新完成
如果,不是延迟的、是暴露的,没有暴露的
调用export方法,暴露服务

Export

暴露服务
调用doExport方法,执行暴露

doExport

执行暴露
调用doExportUrls方法,暴露URL地址

doExportUrls

读取注册中心地址,端口号
获取protocols协议,端口号

For循环
可以配置多个protocols标签
使用多个协议,暴露在多个端口

doExportUrlsFor1Protocol

注册服务到注册中心

Invoker

通过代理工厂,获取invoker
执行器,包装了执行者信息
包含了执行哪个对象、哪个方法、URL地址等

protocol.export

暴露invoker

Protocol
基于Java的SPI机制
获取类加载器,得到适配器

Protocol

Ctrl+T,查看依赖树
使用Dubbo协议暴露,注册到注册中心
使用DubboProtocol、RegistryProtocol

DubboProtocol

调用export方法

Export

DubboProtocol的export方法

RegistryProtocol

调用export方法

Export

RegistryProtocol的export方法

protocol.export(invoker)

首先,调用RegistryProtocol的export方法
将服务注册到注册中心

然后,调用DubboProtocol的export方法
启动Netty服务器,监听Dubbo协议端口

RegistryProtocol

export方法
doLocalExport方法,本地暴露

DubboProtocol

export方法
调用openServer方法

打开服务器
openServer
调用createServer方法

创建服务器
createServer

调用Exchangers.bind
绑定服务器、请求处理器

Exchangers.bind
调用getExchanger(url).bind

getExchanger(url).bind
调用Transporters.bind

传输器

Transporters.bind

调用getTransporter().bind

getTransporter().bind

调用底层的NettyTransporter

NettyTransporter

创建一个Netty服务器

openServer(url)
启动Netty服务器,监听20880端口

Dubbo服务暴露原理相关推荐

  1. dubbo服务暴露原理解析

    配置解析 dubbo 的各个配置项,详细的可以参考官网 只有 group,interface,version 是服务的匹配条件,三者决定是不是同一个服务,其它配置项均为调优和治理参数 所有的配置最终都 ...

  2. 面试官问我:解释一下Dubbo服务暴露

    今天我们要分析的就是Dubbo的服务暴露过程,这个过程属于Dubbo的核心过程之一了,因为Dubbo的大体流程就是服务暴露->服务引用->服务消费这几个主流程,当然还会涉及到注册发现.负载 ...

  3. Dubbo服务暴露的流程

    在Dubbo服务暴露中,需要被暴露的服务的接口类首先会通过proxyFactory代理工厂获得代理的对象invoker,而暴露之后的服务被调用,也将都会通过这个invoker来调用相关的类. 在dub ...

  4. Dubbo服务导出原理

    文章目录 1. 服务导出的入口方法 2. 服务导出原理 2.1 刷新配置参数 2.1 确定协议,生成URL 2.3 启动对应协议的服务器 2.4 向注册中心注册服务 2.6 监听动态配置修改 1. 服 ...

  5. Dubbo服务调用原理

    服务调用原理 参考文档 http://dubbo.apache.org/zh-cn/docs/dev/design.html 引用服务 最终,创建一个代理对象 InvokerInvocationHan ...

  6. 暴露的全局方法_Dubbo源码解析实战 - 服务暴露原理

    欢迎关注全是干货的技术公众号 dubbo面试中比较喜欢问的两个点:服务发布和服务引用. 人性的拷问 服务发布过程中做了哪些事 dubbo都有哪些协议,他们之间有什么特点,缺省值是什么 什么是本地暴露和 ...

  7. Dubbo服务暴露(导出)流程

    Dubbo作为一个Rpc框架,服务端必须得将自己暴露出去,以便客户端的调用,所以我们来看一下dubbo是如何将服务进行暴露的. 首先我们知道,启动dubbo得进行一些配置,如下图所示的一些dubbo标 ...

  8. dubbo服务暴露流程总结

    这篇文章主要总结一下dubbo服务端启动的时候服务暴露过程,虽然官方网站和各种博客上已经有很多介绍服务暴露的帖子,但还是想把自己跟源码过程中遇到的问题和心得记录下来,算是个总结,并且本篇文章是基于du ...

  9. Dubbo——服务暴露过程分析

    这篇文章来叙述对dubbo的服务暴露前的准备工作: 使用Spring配置文件,通过main方法来启动spring容器,来观察dubbo服务的启动过程. dubbo配置文件 <context:co ...

最新文章

  1. mysql配置文件没有spring_spring cloud config使用mysql存储配置文件
  2. 教程 | 基于LSTM实现手写数字识别
  3. python语言的理解-初学Python语言者必须理解的下划线
  4. ios-上拉电阻负载许多其他接口
  5. TClientDataSet使用要点
  6. 烟台大学计算机与控制工程学院研究生导师,烟台大学计算机与控制工程学院欢迎大家...
  7. Magisk —— 安卓新一代的第三方拓展,systemless模式
  8. MapReduce操作Hbase史上最完整范例
  9. 推荐一款超好用的vue的markdown 编辑器
  10. 2018年机器学习算法工程师——秋招自我总结
  11. 软件测试的功能点理解
  12. java创建表情包_表情包生成器
  13. nmf算法 python_推荐算法——非负矩阵分解(NMF)
  14. doc 问卷调查模板表_问卷调查Word模板.doc
  15. 外币兑换系统(某专业大作业)
  16. asp.net 邮件功能
  17. ug中模型不见了怎么办_UG双击prt文件却打不开模型是怎么回事?来看看解决方案吧...
  18. Linux指令--let
  19. 英语磁带与计算机磁带区别,鸡肋一般的英语磁带
  20. Linux服务器12小时制转24小时制

热门文章

  1. LuoguP2754 [CTSC1999]家园(分层图,最大流)
  2. solr搭建分布式搜索引擎
  3. TRUNCATE,DELETE,DROP的区别
  4. STL中各容器和适配器类的定义
  5. C++ Primer 5th笔记(chap 19 特殊工具与技术)类成员指针
  6. 趣链 BitXHub跨链平台 (4)跨链网关“初介绍”
  7. PKI/CA (4)根CA信任模型“概述”
  8. 《研磨设计模式》chap22 装饰模式Decorator(2)应用到场景
  9. 《研磨设计模式》chap15 组合模式(1)简介
  10. django_rest_framework—路由器机制