成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

美團的動態線程池,不依賴中間件可以實現么?

開發 項目管理
線程池在業務系統應該都有使用到,幫助業務流程提升效率以及管理線程,多數場景應用于大量的異步任務處理,雖然線程池提供了我們許多便利,但也并非盡善盡美,比如下面這些問題就無法很好解決.

[[430661]]

為什么寫這個項目?

大家好,我是龍臺。

美團線程池文章[1] 介紹中,因為業務對線程池參數沒有合理配置,觸發過幾起生產事故,進而引發了一系列思考。最終決定封裝線程池動態參數調整,擴展線程池監控以及消息報警等功能

在開源平臺找了挺多動態線程池項目,從功能性以及健壯性而言,個人感覺不滿足企業級應用

因為對動態線程池比較感興趣,加上想寫一個有意義的項目,所以決定自己來造一個輕量級的輪子

想給項目起一個簡單易記的名字,類似于 Eureka、Nacos、Redis;后來和朋友商量,決定以動物命名:Hippo(河馬)

GitHub:https://github.com/acmenlt/dynamic-threadpool(建議復制到電腦查看)

  1. ├── dynamic-threadpool 
  2. │   ├── dynamic-threadpool-common  -- 公共模塊 
  3. │   ├── dynamic-threadpool-config  -- 配置中心 
  4. │   ├── dynamic-threadpool-console  -- 控制臺 
  5. │   ├── dynamic-threadpool-discovery  -- 注冊中心 
  6. │   ├── dynamic-threadpool-spring-boot-starter  -- Client 依賴組件 
  7. │   ├── dynamic-threadpool-example  -- 示例項目 
  8. │   └── dynamic-threadpool-server  -- 服務端 
  9. │   └── dynamic-threadpool-tools  -- 抽象工具類 

它解決了什么問題?

線程池在業務系統應該都有使用到,幫助業務流程提升效率以及管理線程,多數場景應用于大量的異步任務處理

雖然線程池提供了我們許多便利,但也并非盡善盡美,比如下面這些問題就無法很好解決

如果線程池的配置涉及到上述問題,那么就有可能需要發布業務系統來解決;如果發布后參數仍不合理,繼續發布......

Hippo 很好解決了這個問題,它將業務中所有線程池統一管理,遇到上述問題不需要發布系統就可以替換線程池參數

它有什么特性?

應用系統中線程池并不容易管理

參考美團的設計,Hippo 按照租戶、項目、線程池的維度劃分。再加上系統權限,讓不同的開發、管理人員負責自己系統的線程池操作

舉個例子,小編在一家公司的公共組件團隊,團隊中負責消息、短鏈接網關等項目。公共組件是租戶,消息或短鏈接就是項目

Hippo 除去動態修改線程池,還包含實時查看線程池運行時指標、負載報警、配置日志管理等。具體功能如下圖

如何運行 Demo?

目前動態線程池功能已經完成,可以直接把代碼拉到本地運行。項目中數據庫是作者 ECS Docker 搭建,大家直接使用即可

  1. 啟動 dynamic-threadpool-server 模塊下 ServerApplication 應用類
  2. 啟動 dynamic-threadpool-example 模塊下 ExampleApplication 應用類

通過接口修改線程池中的配置。HTTP POST 路徑:http://localhost:6691/v1/cs/configs,Body 請求體如下:

  1.     "ignore""tenantId、itemId、tpId 代表唯一線程池,請不要修改"
  2.     "tenantId""common"
  3.     "itemId""message-center"
  4.     "tpId""message-produce"
  5.     "coreSize": 10, 
  6.     "maxSize": 15, 
  7.     "queueType": 9, 
  8.     "capacity": 100, 
  9.     "keepAliveTime": 10, 
  10.     "rejectedType": 7, 
  11.     "isAlarm": 0, 
  12.     "capacityAlarm": 81, 
  13.     "livenessAlarm": 82 

接口調用成功后,觀察 dynamic-threadpool-example 控制臺日志輸出,日志輸出包括不限于此信息即為成功

  1. [🔥 MESSAGE-PRODUCE] Changed thread pool. coreSize :: [11=>10], maxSize :: [15=>15], queueType :: [9=>9] 
  2. capacity :: [100=>100], keepAliveTime :: [10000=>10000], rejectedType :: [7=>7] 

現階段已集成釘釘消息推送,后續會持續接入企業微信、郵箱、飛書、短信等通知渠道。可以通過添加釘釘群體驗消息推送,群號:31764717

項目代碼功能還在持續開發,初定發布 1.0.0 RELEASE 完成以下功能。部署了 Server 服務,只需要引入 Starter 組件到業務系統中,即可完成動態修改、監控、報警等特性

查看源碼能收獲什么?

目前還沒有發布 Release 版本,小伙伴可以閱讀框架源碼,查看框架中好的設計理念或者編碼技巧

在項目開發過程中,借鑒了 Nacos、Eureka、Seata、ShardingSphere 等中間件項目的優雅設計

總結回顧

小編是個有代碼潔癖的程序員,項目中的代碼開發完全遵守阿里巴巴代碼規約,也推薦大家使用,培養好的編碼習慣

參考資料

[1]美團線程池文章: https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html

 

責任編輯:姜華 來源: 龍臺的技術筆記
相關推薦

2025-01-09 11:24:59

線程池美團動態配置中心

2022-02-14 16:08:15

開源項目線程池動態可監控

2019-08-12 11:00:59

美團網MySQL數據庫

2024-09-14 15:07:03

2015-12-21 14:56:12

Go語言Http網絡協議

2014-06-20 09:18:54

Dustjs中間件

2016-11-11 21:00:46

中間件

2011-05-24 15:10:48

2021-02-11 08:21:02

中間件開發CRUD

2018-02-01 10:19:22

中間件服務器系統

2018-07-29 12:27:30

云中間件云計算API

2021-07-19 07:55:24

Redux中間件原理

2013-03-13 10:37:22

中間件Windows

2018-05-02 16:23:24

中間件RPC容器

2021-07-27 05:49:59

MySQL數據庫中間件

2015-10-15 10:32:48

WiFi物聯網智能家居

2011-12-06 12:21:55

企業級移動應用

2010-03-26 13:52:29

Python生成

2015-02-07 21:52:45

PaaS中間件

2023-11-27 07:10:06

日志中間件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产黄色片 | 亚洲精品久久区二区三区蜜桃臀 | 免费黄色a级毛片 | 在线观看欧美一区 | 精品视频一区二区三区在线观看 | 日韩精品一区二区三区 | 在线免费观看黄a | 日本精品视频 | 国产伦精品一区二区三区高清 | 日韩成人在线网站 | 本地毛片| 日韩中文字幕视频 | 国外成人在线视频 | 亚洲免费视频一区 | 国产精品久久久久久久久久久久 | 国产亚洲久 | 欧美偷偷操 | 一区二区三区四区不卡视频 | 国产激情一区二区三区 | 精品一区二区三区在线观看 | 国产精品久久久久久妇女6080 | 久久不卡视频 | 99色视频| 一区二区三区四区在线播放 | 国产精品九九 | 在线观看免费观看在线91 | 中文字幕欧美一区二区 | 日本精品久久久久久久 | www.亚洲 | 亚洲三区在线 | 一区二区免费 | 欧美一区二区综合 | 亚洲综合一区二区三区 | 毛片免费在线 | 在线免费观看毛片 | 澳门永久av免费网站 | 亚洲伊人久久综合 | 午夜寂寞福利视频 | 国产成人综合一区二区三区 | 日本不卡在线观看 | 免费日韩网站 |