Dubbo的服务引用过程

目录

服务引用大致流程

服务引入的时机

BeanFactory 、FactoryBean、ObjectFactory

服务引入的三种方式

服务引入流程解析

官网的一个小问题

源码分析

总结


注意:本文参考   女朋友问我:Dubbo的服务引用过程

服务引用大致流程

我们已经得知 Provider将自己的服务暴露出来,注册到注册中心,而 Consumer无非就是通过一波操作从注册中心得知 Provider 的信息,然后自己封装一个调用类和 Provider 进行深入地交流。

而之前的文章我都已经提到在 Dubbo中一个可执行体就是 Invoker,所有调用都要向 Invoker 靠拢,因此可以推断出应该要先生成一个 Invoker,然后又因为框架需要往不侵入业务代码的方向发展,那我们的 Consumer 需要无感知的调用远程接口,因此需要搞个代理类,包装一下屏蔽底层的细节。

整体大致流程如下:

服务引入的时机

服务的引入和服务的暴露一样,也是通过 spring 自定义标签机制解析生成对应的 Bean,Provider Service 对应解析的是 ServiceBean 而 Consumer Reference 对应的是 ReferenceBean

 

前面服务暴露的时机我们上篇文章分析过了,在 Spring 容器刷新完成之后开始暴露,而服务的引入时机有两种,第一种是饿汉式,第二种是懒汉式。

饿汉式是通过实现 Spring 的InitializingBean接口中的 afterPropertiesSet方法,容器通过调用 ReferenceBean的 afterPropertiesSet方法时引入服务。

懒汉式是只有当这个服务被注入到其他类中时启动引入流程,也就是说用到了才会开始服务引入。

默认情况下,Dubbo 使用懒汉式引入服务,如果需要使用饿汉式,可通过配置 dubbo:reference 的 init 属性开启。

我们可以看到 ReferenceBean还实现了FactoryBean接口,这里有个关于 Spring 的面试点我带大家分析一波。

BeanFactory 、FactoryBean、ObjectFactory

就是这三个玩意,我单独拿出来说一下,从字面上来看其实可以得知BeanFactoryObjectFactory是个工厂而FactoryBean是个 Bean。

BeanFactory 其实就是 IOC 容器,有多种实现类我就不分析了,简单的说就是 Spring 里面的 Bean 都归它管,而FactoryBean也是 Bean 所以说也是归 BeanFactory 管理的。

那 FactoryBean 到底是个什么 Bean 呢?它其实就是把你真实想要的 Bean 封装了一层,在真正要获取这个 Bean 的时候容器会调用 FactoryBean#getObject() 方法,而在这个方法里面你可以进行一些复杂的组装操作。

这个方法就封装了真实想要的对象复杂的创建过程

到这里其实就很清楚了,就是在真实想要的 Bean 创建比较复杂的情况下,或者是一些第三方 Bean 难以修改的情形,使用 FactoryBean 封装了一层,屏蔽了底层创建的细节,便于 Bean 的使用。

而 ObjectFactory 这个是用于延迟查找的场景,它就是一个普通工厂,当得到 ObjectFactory 对象时,相当于 Bean 没有被创建,只有当 getObject() 方法时,才会触发 Bean 实例化等生命周期。

主要用于暂时性地获取某个 Bean Holder 对象,如果过早的加载࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dubbo是一个分布式服务框架,它可以帮助我们快速开发分布式系统。Dubbo服务的暴露和引用过程分为以下几个步骤: 1. 服务提供者暴露服务服务提供者需要在Dubbo中注册服务,并将服务暴露出来。Dubbo提供了多种方式来注册和暴露服务,比如XML配置方式、注解方式等。服务提供者可以选择合适的方式来注册和暴露服务。 2. 服务消费者引用服务服务消费者需要在Dubbo引用服务Dubbo提供了多种方式来引用服务,比如XML配置方式、注解方式等。服务消费者可以选择合适的方式来引用服务。 3. 服务调用:服务消费者可以通过调用Dubbo提供的API来调用服务Dubbo支持多种调用方式,比如同步调用、异步调用、单向调用等。服务调用的过程中,Dubbo会自动进行负载均衡、容错处理等操作,从而提高系统的可用性和稳定性。 4. 服务监控和管理:Dubbo提供了丰富的监控和管理功能,可以帮助我们了解系统的运行情况和性能瓶颈。比如可以通过Dubbo的监控中心来查看服务的调用次数、调用时间、响应时间等指标,从而帮助我们优化系统的性能。 总的来说,Dubbo服务的暴露和引用过程包括服务提供者的服务暴露、服务消费者的服务引用服务的调用和服务的监控和管理等步骤。在实际应用中,需要根据具体的业务需求和场景选择合适的Dubbo配置方式和调用方式,从而实现高效、稳定的分布式服务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值