原文地址

基于SpringBoot的算法微服务,通常在启动阶段加载算法模型。但因为业务上,模型大小和数量是动态的,因此这一过程短则1分钟,长则5+分钟。在启动时加载导致的启动时间过长,会影响服务自身的监控告警、健康检测。

那么,理想的方式是先将服务启动,然后再加载算法模型。为此,我需要一个由SpringBoot提供的观察者模式的事件,在服务自身启动后触发。

修改前后的代码示例如下:

@Service
@Log4j2
public class QasEngine {

    @PostConstruct
    public void bootstrap() {
       //获取元数据
       //加载算法模型
    }
}
@Service
@Log4j2
public class QasEngine implements ApplicationListener<ApplicationReadyEvent> {

    @PostConstruct
    public void bootstrap() {
        //获取元数据
    }

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
       //加载算法模型
       //懒加载其他类型的服务
    }
}

需要注意的是,如果你的业务存在HSF、MetaQ等服务,请延迟启动这些服务,直至算法模型加载完毕。

原文地址

03-15 08:59