日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MSE全鏈路灰度支持異步任務

MSE全鏈路灰度需要在請求的調用鏈路中傳遞灰度流量標簽,如果遇到一些不支持的異步任務場景,可能會導致流量的標簽傳遞中斷,從而引起灰度流量處理失敗。對于通過Spring的@Async注解實現的異步任務,MSE默認支持對其進行標簽傳遞。此外,MSE還支持通過添加異步透傳掃描包自定義異步任務實現流量標簽透傳。

前提條件

請確保您的MSE探針版本為v3.2.0及以上公測版本。如需將探針升級到新版本,請加入MSE釘釘群43525005207進行升級。

您可以使用以下命令查看探針版本:

cat /home/admin/.opt/ArmsAgent/version

方式一:默認支持Spring的@Async注解

MSE默認支持使用Spring的@Async注解實現的異步任務進行異步標簽透傳。對于下列Spring框架中默認的Executor和Task,MSE會自動完成增強:

  • Executor:

    • org.springframework.scheduling.concurrent.ConcurrentTaskExecutor

    • org.springframework.core.task.SimpleAsyncTaskExecutor

    • org.springframework.scheduling.quartz.SimpleThreadPoolTaskExecutor

    • org.springframework.core.task.support.TaskExecutorAdapter

    • org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor

    • org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler

    • org.springframework.jca.work.WorkManagerTaskExecutor

    • org.springframework.scheduling.commonj.WorkManagerTaskExecutor

  • Task:

    org.springframework.aop.interceptor.AsyncExecutionInterceptor$1

    org.springframework.aop.interceptor.AsyncExecutionInterceptor$$Lambda$

方式二:添加異步透傳掃描包

在Java應用中,您可以通過添加環境變量或Java啟動參數的方式使用異步透傳掃描包能力,實現異步任務的流量標簽透傳。這種能力涉及到的Runnable、Callable和Supplier接口在創建新對象時會自動捕獲當前線程調用鏈的上下文,并在異步線程中執行時使用該調用鏈上下文,實現灰度流量標的全鏈路透傳。

-Dprofiler.thread.match.package="com.alibaba.mse.brightroar.console.service"
說明

如需添加多個異步透傳掃描包,可以使用半角逗號(,)分隔。

例如,對于通過以下示例代碼創建的異步任務,您可以使用添加異步透傳掃描包的方式對此異步任務進行監控。此示例代碼中,異步透傳包名com.alibaba.mse.brightroar.console.service

說明

在配置時,您可以按需調整異步透傳包名的范圍。若需監控的異步任務過多,您可以縮小異步透傳包名的范圍。在本示例中,除了輸入完整的異步透傳包名com.alibaba.mse.brightroar.console.service以外,您還可以輸入更短的前綴包名com.alibaba.mse來自動掃描此目錄下的所有子透傳包。但需注意的是,若前綴包名范圍過大,會對性能產生影響,請謹慎操作。

package com.alibaba.mse.brightroar.console.service;

@Service
public class NameService {

    private ExecutorService es = Executors.newFixedThreadPool(5);

    public void name() {
        es.submit(new Runnable() {
            @Override
            public void run() {
                System.out.println(System.currentTimeMillis()+ ": my name is john, " + Thread.currentThread().getId());
            }
        });
    }
}

相關文檔

如果您的流量不符合預期,可以打開采集請求詳情開關對鏈路進行分析。具體操作,請參見全鏈路灰度可觀測問題排查