延遲載入演算法微服務的模型

六翁發表於2017-03-27

基於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等服務,請延遲啟動這些服務,直至演算法模型載入完畢。


相關文章