简易的暴露流程
1.首先将服务的实现封装成一个Invoker,Invoker中封装了服务的实现类。
2.将Invoker封装成Exporter,并缓存起来,缓存里使用Invoker的url作为key。
3.服务端Server启动,监听端口。(请求来到时,根据请求信息生成key,到缓存查找Exporter,就找到了Invoker,就可以完成调用。)
Spring容器初始化调用
当Spring容器实例化bean完成,
走到最后一步发布ContextRefreshEvent事件的时候,
ServiceBean会执行onApplicationEvent方法,该方法调用ServiceConfig的export方法。
ServiceConfig初始化的时候,会先初始化静态变量protocol和proxyFactory,这两个变量初始化的结果是通过dubbo的spi扩展机制得到的。
链接:
https://blog.csdn.net/dachengxi/article/details/62567065
分享到:
相关推荐
`ServiceBean`在属性加载完成后会调用`afterPropertiesSet`方法,进一步调用`export()`方法来暴露服务。`export()`方法涉及`Protocol`、`Invoker`和`Exporter`等组件。`RegisterProtocol`负责将服务提供者的URL和...
本文将深入源码,详细解析这两个关键过程,帮助你理解Dubbo是如何在服务提供者和服务消费者之间建立通信桥梁的。 一、服务发布 1. 配置服务:首先,服务提供者需要在配置文件(如Spring XML)中定义服务接口及其...
服务调用的核心组件包括 Invoker 和 Exporter,Invoker 是服务调用的抽象,Exporter 是服务暴露的抽象。 2. **超时机制** 在网络通信中,由于各种不可预知的因素,请求可能会出现延迟。Dubbo 提供了超时设置,允许...
3. 暴露服务:最后,Protocol会将Invoker暴露到网络上,使得服务消费者可以通过网络进行调用。 三、服务消费 服务消费涉及Consumer、ProxyFactory和Invoker等组件,服务消费者通过这些组件获取并调用服务。 1. ...
- **Invoker 和 Exporter**:Invoker 表示服务的调用者,Exporter 表示服务的发布者,它们是 Dubbo 服务调用的核心组件。 - **Protocol**:定义服务的通信协议,如 DubboProtocol、HttpProtocol 等。 - **Cluster...
此时,服务信息会被封装成 **Invoker** 对象,并通过 **Exporter** 接口导出至网络。同时,Protocol 会调用 **Directory** 的 `register` 方法将服务信息注册到注册中心。 - **示例代码**: ```java // 服务提供...
Protocol接口定义了服务调用的基本操作,如refer、invoke等,而Exporter和Invoker接口则封装了服务暴露和调用的具体逻辑。 2. 服务注册与发现:Registry接口实现了服务注册和订阅,而Directory接口则管理和维护服务...
1. **服务提供者(Provider)**:提供服务的实体,需要通过配置暴露服务,指定服务接口、实现类、版本、超时时间等参数。 2. **服务消费者(Consumer)**:调用服务的实体,通过引用服务提供者提供的服务,指定服务...
当服务消费者发起调用时,Proxy会根据配置创建Invoker对象,然后通过Transporter进行网络通信,最后由Exporter将服务暴露给消费者。 四、负载均衡策略 Dubbo支持多种负载均衡策略,如Random、RoundRobin、...
- **服务提供者(Provider)**:提供服务的节点,负责暴露服务。 - **服务消费者(Consumer)**:消费服务的节点,通过接口调用远程服务。 - **注册中心(Registry)**:服务提供者和服务消费者注册并发现服务的地方。 ...
7. 远程调用层(Protocol):封装RPC调用细节,通过Protocol、Invoker和Exporter等核心组件实现服务的暴露和引用。 8. 信息交换层(Exchange):封装请求响应模式,实现同步转异步的通信,主要接口为Exchanger、...
在 Dubbo 的架构设计中,Protocol 是核心,可以与 Invoker 和 Exporter 结合实现非透明的 RPC 调用。Cluster 是一个外围概念,它的作用是将多个 Invoker 转换为单一的 Invoker,简化调用。Consumer 和 Provider 是...
7. 远程调用层(Protocal):封装RPC调用,以Invocation和Result为中心,扩展接口为Protocal、Invoker和Exporter。 8. 信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心,扩展...
`Exporter`接口表示服务的暴露,它将服务提供者包装成可被网络调用的对象。而`Invoker`接口则是服务引用的抽象,它是服务消费者调用服务的入口。 8. **异常处理与回调** Dubbo的`Filter`机制允许开发者定义自定义...
11. remoting模块:负责Dubbo的远程通信,包括server的启动和暴露服务。 12. Exchangers.bind(url, requestHandler):用于绑定url和请求处理器,启动服务端通信。 13. HeaderExchanger.bind():这是Exchanger接口...
Protocol 接口定义了服务暴露和引用的协议,Invoker 和 Exporter 分别代表服务提供者和服务暴露者。 7. **信息交换层**: 信息交换层负责将请求和响应模型抽象出来,实现同步调用到异步调用的转换。Request 和 ...
`RpcInvocation`对象封装了调用参数,`Invoker`接口表示服务的调用者,`Exporter`接口代表服务的发布者。在`ProxyFactory`中,Dubbo动态生成代理类,使得客户端可以像调用本地方法一样调用远程服务。 3. **负载均衡...
- **Protocol层**是整个RPC调用流程的核心,通过`Protocol`、`Invoker`和`Exporter`等接口实现了非透明的RPC调用。`Invoker`是Dubbo框架中最核心的概念之一,它代表了一个可以被调用的对象。 - **Cluster层**是一个...
- **服务消费流程**:消费者如何发现并调用服务,涉及ReferenceConfig、Invoker、Exporter等核心组件。 - **调用链路追踪**:理解Dubbo如何记录并追踪一次完整的请求调用过程,涉及到的Trace、Stat等模块。 - **...
Dubbo 的整体架构设计包括接口服务层、配置层、服务代理层、服务注册层、路由层、监控层、远程调用层、信息交换层、网络传输层和数据序列化层等。 Dubbo Monitor 的实现原理是:Consumer 端在发起调用之前会先走 ...