当前位置:   article > 正文

Dubbo2.7.5 服务启动太慢的问题_dubbo-spring-boot-starter导致启动慢

dubbo-spring-boot-starter导致启动慢

前言

目前我们的后台管理服务,因为引入的提供者太多,导致项目启动太慢,打印了很多The configBean[type:ReferenceBean] has been built.的日志,在启动过程中,Dubbo需要去初始化提供者同时需要和zookeeper建立连接,在开发和测试环境中启动速度太慢,导致开发人员每次重启需要等待很久,所以需要迫切的解决这个问题,目前有2种方案来解决这个问题,下面分别对这2种方案进行测试。

Dubbo创建提供者的日志

在这里插入图片描述

第一种方案

目前我们在很多的service中都引入了很多相同的提供者,考虑把所有的提供者在一个位置统一管理,这样项目中所有使用这个提供者的位置都引用同一个引用。

统一管理提供者的BaseService
在这里插入图片描述
使用BaseService的位置
在这里插入图片描述

经过测试,速度提升不高,由此判断Dubbo在初始化提供者的时候会做判断,如果该提供者已经初始化,不再进行初始化,所以在一个项目中不同的位置引用同一个提供者,不会造成重复初始化。

第二种方案

通过Spring懒加载的形式,因为我们的Dubbo版本比较低,所以并没有Dubbo相关的懒加载的配置例如:lazyInit,所以计划通过Spring的功能来实现。

配置如下

import com.ctrip.framework.apollo.build.ApolloInjector;
import com.ctrip.framework.apollo.core.enums.Env;
import com.ctrip.framework.apollo.util.ConfigUtil;
import lombok.SneakyThrows;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.annotation.Configuration;

import static com.ctrip.framework.apollo.core.enums.Env.*;

/**
 * @author lwh
 * @date 2023/12/22
 * @description 提升启动速度
 **/
@Configuration
public class LazyInitBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

    @SneakyThrows
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
        Env apolloEnv = ApolloInjector.getInstance(ConfigUtil.class).getApolloEnv();
        if (apolloEnv == DEV || apolloEnv == FAT || apolloEnv == UAT) {
            for (String beanDefinitionName : beanFactory.getBeanDefinitionNames()) {
                beanFactory.getBeanDefinition(beanDefinitionName).setLazyInit(true);
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

通过在启动的过程中,修改所有Bean的元数据信息,给所有的Bean设置lazyInit属性,当然你也可以通过一些手段和配置,只给你想要的Bean进行懒加载,经过测试启动速度提升较明显,不建议生产环境使用这种方式,因为会影响性能,第一次调用会耗时。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/54072
推荐阅读
相关标签
  

闽ICP备14008679号