精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

太實(shí)用了!Spring Boot + Nacos 實(shí)現(xiàn)動態(tài)化線程池

開發(fā) 前端
優(yōu)秀的輪子還有好多,比如Hippo4J ,使用起來和dynamic-tp差不多。Hippo4J 有無依賴中間件實(shí)現(xiàn)動靜線程池,也有默認(rèn)實(shí)現(xiàn)Nacos和Apollo的版本,而dynamic-tp 默認(rèn)實(shí)現(xiàn)依賴Nacos或Apollo。

在后臺開發(fā)中,會經(jīng)常用到線程池技術(shù),對于線程池核心參數(shù)的配置很大程度上依靠經(jīng)驗(yàn)。然而,由于系統(tǒng)運(yùn)行過程中存在的不確定性,我們很難一勞永逸地規(guī)劃一個合理的線程池參數(shù)。在對線程池配置參數(shù)進(jìn)行調(diào)整時,一般需要對服務(wù)進(jìn)行重啟,這樣修改的成本就會偏高。一種解決辦法就是,將線程池的配置放到平臺側(cè),運(yùn)行開發(fā)同學(xué)根據(jù)系統(tǒng)運(yùn)行情況對核心參數(shù)進(jìn)行動態(tài)配置。

本文以Nacos作為服務(wù)配置中心,以修改線程池核心線程數(shù)、最大線程數(shù)為例,實(shí)現(xiàn)一個簡單的動態(tài)化線程池。

代碼實(shí)現(xiàn)

1.依賴

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2021.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2021.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

2.配置yml文件

bootstrap.yml:

server:
  port:8010
# 應(yīng)用名稱(nacos會將該名稱當(dāng)做服務(wù)名稱)
spring:
application:
    name:order-service
cloud:
    nacos:
      discovery:
        namespace:public
        server-addr:192.168.174.129:8848
      config:
        server-addr:192.168.174.129:8848
        file-extension:yml

application.yml:

spring:
  profiles:
    active: dev

為什么要配置兩個yml文件?

springboot中配置文件的加載是存在優(yōu)先級順序的,bootstrap優(yōu)先級高于application。

nacos在項(xiàng)目初始化時,要保證先從配置中心進(jìn)行配置拉取,拉取配置之后才能保證項(xiàng)目的正常啟動。

3.nacos配置

登錄到nacos管理頁面,新建配置,如下圖所示:

圖片圖片

注意Data ID的命名格式為,${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension} ,在本文中,Data ID的名字就是order-service-dev.yml

圖片圖片

這里我們只配置了兩個參數(shù),核心線程數(shù)量和最大線程數(shù)。

4.線程池配置和nacos配置變更監(jiān)聽

@RefreshScope
@Configuration
publicclass DynamicThreadPool implements InitializingBean {
    @Value("${core.size}")
    private String coreSize;

    @Value("${max.size}")
    private String maxSize;

    privatestatic ThreadPoolExecutor threadPoolExecutor;

    @Autowired
    private NacosConfigManager nacosConfigManager;

    @Autowired
    private NacosConfigProperties nacosConfigProperties;

    @Override
    public void afterPropertiesSet() throws Exception {
        //按照nacos配置初始化線程池
        threadPoolExecutor = new ThreadPoolExecutor(Integer.parseInt(coreSize), Integer.parseInt(maxSize), 10L, TimeUnit.SECONDS,
                new LinkedBlockingQueue<>(10),
                new ThreadFactoryBuilder().setNameFormat("c_t_%d").build(),
                new RejectedExecutionHandler() {
                    @Override
                    public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
                        System.out.println("rejected!");
                    }
                });

        //nacos配置變更監(jiān)聽
        nacosConfigManager.getConfigService().addListener("order-service-dev.yml", nacosConfigProperties.getGroup(),
                new Listener() {
                    @Override
                    public Executor getExecutor() {
                        returnnull;
                    }

                    @Override
                    public void receiveConfigInfo(String configInfo) {
                        //配置變更,修改線程池配置
                        System.out.println(configInfo);
                        changeThreadPoolConfig(Integer.parseInt(coreSize), Integer.parseInt(maxSize));
                    }
                });
    }

    /**
     * 打印當(dāng)前線程池的狀態(tài)
     */
    public String printThreadPoolStatus() {
        return String.format("core_size:%s,thread_current_size:%s;" +
                        "thread_max_size:%s;queue_current_size:%s,total_task_count:%s", threadPoolExecutor.getCorePoolSize(),
                threadPoolExecutor.getActiveCount(), threadPoolExecutor.getMaximumPoolSize(), threadPoolExecutor.getQueue().size(),
                threadPoolExecutor.getTaskCount());
    }

    /**
     * 給線程池增加任務(wù)
     *
     * @param count
     */
    public void dynamicThreadPoolAddTask(int count) {
        for (int i = 0; i < count; i++) {
            int finalI = i;
            threadPoolExecutor.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        System.out.println(finalI);
                        Thread.sleep(10000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }

    /**
     * 修改線程池核心參數(shù)
     *
     * @param coreSize
     * @param maxSize
     */
    private void changeThreadPoolConfig(int coreSize, int maxSize) {
        threadPoolExecutor.setCorePoolSize(coreSize);
        threadPoolExecutor.setMaximumPoolSize(maxSize);
    }
}

這個代碼就是實(shí)現(xiàn)動態(tài)線程池和核心了,需要說明的是:

  • @RefreshScope:這個注解用來支持nacos的動態(tài)刷新功能;
  • @Value("${max.size}")@Value("${core.size}"):這兩個注解用來讀取我們上一步在nacos配置的具體信息;同時,nacos配置變更時,能夠?qū)崟r讀取到變更后的內(nèi)容
  • nacosConfigManager.getConfigService().addListener:配置監(jiān)聽,nacos配置變更時實(shí)時修改線程池的配置。

5.controller

為了觀察線程池動態(tài)變更的效果,增加Controller類。

@RestController
@RequestMapping("/threadpool")
publicclass ThreadPoolController {

    @Autowired
    private DynamicThreadPool dynamicThreadPool;

    /**
     * 打印當(dāng)前線程池的狀態(tài)
     */
    @GetMapping("/print")
    public String printThreadPoolStatus() {
        return dynamicThreadPool.printThreadPoolStatus();
    }

    /**
     * 給線程池增加任務(wù)
     *
     * @param count
     */
    @GetMapping("/add")
    public String dynamicThreadPoolAddTask(int count) {
        dynamicThreadPool.dynamicThreadPoolAddTask(count);
        return String.valueOf(count);
    }
}

6.測試

啟動項(xiàng)目,訪問http://localhost:8010/threadpool/print打印當(dāng)前線程池的配置。

圖片圖片

可以看到,這個就是我們之前在nacos配置的線程數(shù)。

訪問http://localhost:8010/threadpool/add?count=20增加20個任務(wù),重新打印線程池配置

圖片圖片

可以看到已經(jīng)有線程在排隊(duì)了。

為了能夠看到效果,我們多訪問幾次/add接口,增加任務(wù)數(shù),在控制臺出現(xiàn)拒絕信息時調(diào)整nacos配置。

圖片圖片

此時,執(zhí)行/add命令時,所有的線程都會提示rejected。

調(diào)整nacos配置,將核心線程數(shù)調(diào)整為50,最大線程數(shù)調(diào)整為100.

圖片圖片

重新多次訪問/add接口增加任務(wù),發(fā)現(xiàn)沒有拒絕信息了。這時,打印具體的線程狀態(tài),發(fā)現(xiàn)線程池參數(shù)修改成功。

圖片

總結(jié)

這里,只是簡單實(shí)現(xiàn)了一個可以調(diào)整核心線程數(shù)和最大線程數(shù)的動態(tài)線程池。具體的線程池實(shí)現(xiàn)原理可以參考美團(tuán)的這篇文章:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html,結(jié)合監(jiān)控告警等實(shí)現(xiàn)一個完善的動態(tài)線程池產(chǎn)品。

優(yōu)秀的輪子還有好多,比如Hippo4J ,使用起來和dynamic-tp差不多。Hippo4J 有無依賴中間件實(shí)現(xiàn)動靜線程池,也有默認(rèn)實(shí)現(xiàn)Nacos和Apollo的版本,而dynamic-tp 默認(rèn)實(shí)現(xiàn)依賴Nacos或Apollo。

責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2024-11-08 14:11:09

2024-02-04 09:19:00

Nacos動態(tài)化線程池

2022-12-30 08:29:07

Nacos動態(tài)化線程池

2024-12-20 17:29:34

SpringBootAOP開發(fā)

2025-01-09 11:24:59

線程池美團(tuán)動態(tài)配置中心

2024-08-09 08:46:00

Springjar 包YAML

2024-12-27 08:43:17

2025-09-16 07:37:12

2022-04-19 13:07:25

SchedulePython

2021-05-19 15:06:44

MySQL數(shù)據(jù)庫命令

2022-03-18 09:25:49

Python圖片PDF

2023-03-08 07:43:07

DUCC配置平臺

2018-06-21 14:46:03

Spring Boot異步調(diào)用

2020-06-29 11:05:26

GitHub代碼開發(fā)者

2022-12-12 09:01:03

2020-09-04 09:32:54

蘇寧數(shù)據(jù)治理

2021-10-18 12:04:22

Spring BootJava開發(fā)

2021-10-18 10:36:31

Spring Boot插件Jar

2021-07-26 11:09:43

NacosSpring Boot配置

2015-08-05 13:24:15

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美日本亚洲视频| 日韩一区二区三区四区五区六区| 秋霞毛片久久久久久久久| www.av88| 你懂的成人av| 日韩av在线导航| 在线观看免费黄网站| www免费视频观看在线| www.色精品| 国产精品久久久久久久av大片| 91高清免费看| 五月综合久久| 欧美一区二区三区四区视频| 免费成人午夜视频| 秋霞成人影院| 99精品欧美一区二区蜜桃免费| 国产精品99蜜臀久久不卡二区| 99久久99久久精品国产| 欧美激情影院| 这里只有精品电影| 国产黄色特级片| 三级网站视频在在线播放| 国产夜色精品一区二区av| 99久久久精品免费观看国产| 中文字幕精品一区二区精| 激情婷婷欧美| 久久精品视频免费播放| 免费黄色在线视频| 凹凸av导航大全精品| 在线播放视频一区| 黑人粗进入欧美aaaaa| 91精品国产黑色瑜伽裤| 中文字幕字幕中文在线中不卡视频| 欧美日韩国产三区| 国产高潮失禁喷水爽到抽搐 | 国产精品va无码一区二区三区| 66国产精品| 中文字幕av一区二区| 午夜一区二区三区免费| 第四色在线一区二区| 97久久人国产精品婷婷| 欧美国产亚洲精品| 欧美日韩中文一区| 国产精品免费观看久久| 高清电影在线免费观看| 亚洲欧美一区二区三区久本道91| 亚洲mv在线看| 青青草免费在线| 成人性色生活片| 亚洲iv一区二区三区| 伊人成人在线观看| 日本免费新一区视频 | 在线手机中文字幕| 亚洲va中文字幕| 91精品久久久久久久| 国产寡妇亲子伦一区二区三区四区| 今天的高清视频免费播放成人| 精品少妇v888av| 欧美色图亚洲视频| 综合久久综合| 欧美日韩国产va另类| 黄色一级视频免费| 亚洲香蕉网站| 97免费在线视频| 人人干人人干人人干| 国产婷婷精品| 欧美自拍视频在线观看| www.com亚洲| 日韩制服丝袜先锋影音| 国产欧美日韩亚洲精品| 亚洲最大成人av| 国产一区二区精品在线观看| av一区二区三区免费| 欧美熟妇交换久久久久久分类 | 亚洲专区国产精品| 精品人妻伦一二三区久久| 国产福利视频一区二区三区| 国产视频一区二区三区四区| 日韩av成人| 中文字幕不卡在线观看| 中文字幕日韩精品久久| 日韩伦理av| 狠狠躁18三区二区一区| 人妻丰满熟妇av无码区app| 国精品产品一区| 日韩午夜激情免费电影| 一级特级黄色片| 欧美裸体在线版观看完整版| 久久久99免费视频| 久久综合亚洲色hezyo国产| 国产视频久久| 国产精品综合久久久| 亚洲AV无码精品国产| 久久免费午夜影院| 中文字幕第一页亚洲| 黄页网站在线| 在线精品国精品国产尤物884a | 91香蕉视频在线| 日本中文不卡| 在线黄色网页| 一本一道久久a久久精品| 亚洲精品国产一区二区三区| 欧美大胆视频| 日韩中文字幕在线观看| 日本高清www免费视频| 免费视频最近日韩| 国产精品视频在线免费观看 | 欧美疯狂做受xxxx高潮| youjizz在线视频| 国产高清不卡一区| 亚洲精品成人a8198a| 成年网站在线视频网站| 精品视频一区二区不卡| 无码成人精品区在线观看| 欧美高清在线| 欧美性受xxxx白人性爽| 99久久99久久久精品棕色圆| 久久色中文字幕| 五月天激情图片| 日本一区免费网站| 日韩av在线影院| 中文字幕在线2021| 久久久www| 国产在线精品日韩| av网站在线免费看推荐| 欧美综合亚洲图片综合区| 日韩av手机在线播放| 91精品国产91久久久久久密臀 | 亚洲日本中文| 亚洲视频欧洲视频| 亚洲黄色一区二区| 丁香婷婷深情五月亚洲| 色呦呦网站入口| 精品日本视频| 亚洲网在线观看| 日韩无码精品一区二区三区| 国产福利电影一区二区三区| 天堂av免费看| 成人免费观看49www在线观看| 亚洲视频在线观看网站| 五月婷婷亚洲综合| 99久久精品国产一区二区三区| 国产在线拍揄自揄拍无码| www久久久| 中文字幕亚洲图片| 中文在线观看av| 久久久久久久久久久99999| 欧美日本视频在线观看| 国产精品宾馆| 97国产精品视频| 日本久久一级片| 亚洲高清免费视频| 韩国黄色一级片| 欧美精品三区| 波多野结衣久草一区| 在线视频中文字幕第一页| 日韩欧美一级片| 欧美久久久久久久久久久久| 国产精品18久久久久久久久久久久| 欧美aaa在线观看| 91国产精品| 久久精品在线视频| av一级黄色片| 亚洲永久精品国产| 国产69视频在线观看| 亚洲激情自拍| 久久久神马电影| 亚洲成人一区在线观看| 深夜福利91大全| 国产理论视频在线观看| 一区二区免费在线| 亚洲视频在线播放免费| 免费亚洲视频| 一区二区三区四区在线视频| 久久久久久亚洲精品美女| 欧美国产第一页| 天天综合在线视频| 久久久久高清精品| 一级黄色香蕉视频| 99久久激情| 成人9ⅰ免费影视网站| 阿v视频在线| 亚洲视频在线免费看| 国产精品久久777777换脸| 亚洲一卡二卡三卡四卡无卡久久| 人妻无码中文久久久久专区| 日韩国产成人精品| 免费观看黄色大片| 欧美人妖在线观看| 国产精品视频内| 国产一线二线在线观看| 国产视频久久久久久久| 中文字幕码精品视频网站| 亚洲激情成人在线| 最近中文字幕免费| 国产精品 欧美精品| 黑人糟蹋人妻hd中文字幕 | 黄色一级片av| 香蕉久久夜色精品国产更新时间 | vam成人资源在线观看| 91国产精品电影| 777电影在线观看| 欧美精品一区二区不卡| 国产九色91回来了| 亚洲成人av在线电影| 国产三级aaa| av成人老司机| 伦伦影院午夜理论片| 亚洲欧美网站| 男人j进女人j| 欧美日韩国产一区二区三区不卡| 亚洲最大福利视频网| 日韩精选视频| 性欧美xxxx交| av中文字幕在线观看| 国产亚洲精品一区二555| 亚洲女同志亚洲女同女播放| 欧美日韩久久久一区| 国产一级18片视频| 一区二区三区在线免费视频| 国产白丝一区二区三区| 91网站最新网址| 95视频在线观看| 国产一区二区在线电影| 性chinese极品按摩| 可以看av的网站久久看| 霍思燕三级露全乳照| 欧美成人亚洲| 在线一区亚洲| 成人免费在线观看av| 免费精品视频一区二区三区| 国内精品国产成人国产三级粉色| 91久久久久久久久久久| 成人四虎影院| 日本久久中文字幕| 国产99在线观看| 欧美激情综合色| 最新国产在线拍揄自揄视频| 久久久国产91| 黄页视频在线播放| 日韩在线播放视频| 亚洲精品传媒| 中文字幕免费精品一区| 在线日本视频| 国产一区二区三区毛片| 国产免费av在线| 亚洲视频777| 国产永久免费高清在线观看视频| 精品亚洲一区二区三区| 亚洲aⅴ乱码精品成人区| 亚洲经典中文字幕| 天堂网在线中文| 日韩av在线免费播放| 日韩精品视频在线观看一区二区三区| 亚洲福利视频专区| 视频二区在线观看| 亚洲精品电影网站| 日韩精品系列| 亚洲小视频在线| 北条麻妃在线| 久久久国产91| 精品日韩av| 91av视频在线免费观看| 色综合桃花网| 国产精品欧美激情在线播放| 99久久婷婷国产综合精品首页| 国产精品自拍偷拍| 久久丁香四色| 国产女人水真多18毛片18精品 | 亚洲一区二区三区精品动漫| 欧美成人精品一区二区三区在线看| 亚洲一二区在线| 欧美精品综合| 欧美在线观看成人| 日韩中文字幕av电影| 亚洲妇熟xx妇色黄蜜桃| 国产福利不卡视频| 中文字幕丰满乱子伦无码专区| 中文在线资源观看网站视频免费不卡| 三级黄色片在线观看| 亚洲激情五月婷婷| 依依成人综合网| 欧美日韩美少妇| 欧洲av在线播放| 亚洲图中文字幕| gogogogo高清视频在线| 久久免费少妇高潮久久精品99| 精品国产免费人成网站| 国产精品人人做人人爽| 麻豆国产一区| 欧美日韩一区二区视频在线| 婷婷丁香综合| 两根大肉大捧一进一出好爽视频| 日本不卡一区二区| 曰本三级日本三级日本三级| 国产午夜精品久久| 卡通动漫亚洲综合| 欧美午夜电影在线| 在线观看免费观看在线| 亚洲精品xxx| 91ph在线| 538国产精品视频一区二区| 91嫩草国产线观看亚洲一区二区| 久久久久久久久一区二区| 五月开心六月丁香综合色啪| 国产肥臀一区二区福利视频| 国产精品伊人色| 无码 人妻 在线 视频| 悠悠色在线精品| 欧美在线视频精品| 精品久久久久av影院 | 久久视频在线观看| 综合视频免费看| 欧美亚洲视频| 日本精品一二三| 国产精品成人网| 免费看毛片网站| 精品久久久久99| 国产黄a三级三级三级av在线看| 欧美在线不卡区| 国产成人澳门| 日本一二三区视频在线| 日本不卡不码高清免费观看| 日本丰满少妇裸体自慰| 一区二区三区四区蜜桃| 一区二区精品视频在线观看| 亚洲欧美福利视频| 超碰在线cao| 俄罗斯精品一区二区| 91精品国产91久久久久久密臀| 亚洲中文字幕久久精品无码喷水| 99视频有精品| www青青草原| 717成人午夜免费福利电影| 成人jjav| 国产精品极品美女粉嫩高清在线| 日韩三级毛片| 欧美 日韩 亚洲 一区| 国产aⅴ综合色| 青青草手机在线视频| 欧美一区二区三区四区在线观看 | 国产精品乱人伦一区二区| 黄色av网站免费观看| 亚洲激情视频网站| 99热99re6国产在线播放| 北条麻妃高清一区| 欧美日韩综合| 亚洲一区和二区| 亚洲第一激情av| 婷婷色在线视频| 91精品国产高清久久久久久久久| 岛国精品一区| 亚洲熟妇av一区二区三区漫画| 不卡的电视剧免费网站有什么| 久久精品99国产精| 亚洲福利视频久久| 国产精品一二三产区| 久久综合久久久| 日韩av在线播放中文字幕| 先锋影音av在线| 欧美日韩亚洲国产综合| 色视频在线免费观看| 亚洲自拍小视频| 黄色国产精品| 国产精品手机在线观看| 欧美视频不卡中文| 成人在线高清视频| 91精品视频一区| 欧美在线免费| 精品人妻一区二区免费视频| 色综合一个色综合亚洲| 992tv免费直播在线观看| 91精品久久久久久久久久久久久 | 无码人妻精品一区二区三区在线| 91免费看片在线观看| 中文字幕丰满人伦在线| 麻豆成人在线看| 国产无遮挡裸体免费久久| 丰满爆乳一区二区三区| 日本一区二区三级电影在线观看| 91精品国自产| 久久久久久久久久久国产| 国产成人av| 一区二区三区国产好的精华液| 亚洲国产成人91porn| 国产亚洲依依| 91色琪琪电影亚洲精品久久| 亚洲欧洲日本mm| xxxx日本黄色| 日韩欧美久久久| 性欧美hd调教| 国产 国语对白 露脸| 久久综合九色综合久久久精品综合| 亚洲图片视频小说| 欧美激情网站在线观看| re久久精品视频| 亚洲一二三四五| 欧美特级限制片免费在线观看| 欧美xxxx黑人又粗又长| 日本不卡二区高清三区|