Stargazers Over Time | Contributors Over Time |
---|---|
GitHub:opengoofy/hippo4j
Gitee:opengoofy/hippo4j
For full documentation & more details, visit: Docs
執行緒池是一種基於池化思想管理執行緒的工具,使用執行緒池可以減少建立銷毀執行緒的開銷,避免執行緒過多導致系統資源耗盡。在高並發以及大批量的任務處理場景,線程池的使用是必不可少的。
如果有在專案中實際使用線程池,相信你可能會遇到以下痛點:
執行緒池隨便定義,執行緒資源太多,造成伺服器高負載。
線程池參數不易評估,隨著業務的並發提升,業務面臨故障的風險。
線程池任務執行時間超過平均執行週期,開發人員無法感知。
線程池任務堆積,觸發拒絕策略,影響既有業務正常運作。
當業務出現逾時、熔斷等問題時,因為沒有監控,無法確定是不是執行緒池引起。
原生執行緒池不支援運行時變數的傳遞,例如MDC 上下文遇到執行緒池就GG。
無法執行優雅關閉,當專案關閉時,大量正在運行的線程池任務被丟棄。
在執行緒池運作中,任務執行停止,懷疑發生死鎖或執行耗時操作,但無從下手。
提供以下功能支援:
全域管控- 管理應用程式執行緒池實例。
動態變更- 應用運行時動態變更執行緒池參數,包括但不限於:核心、最大執行緒數、阻塞佇列容量、拒絕策略等。
通知警報- 內建四種警報通知策略,執行緒池活躍度、容量水位、拒絕策略、任務執行時間超長。
資料採集- 支援多種方式採集線程池數據,包括但不限於:日誌、內建採集、Prometheus、InfluxDB、ElasticSearch 等。
運行監控- 即時查看線程池運行時數據,自訂時間內線程池運行數據圖表展示。
功能擴充- 支援執行緒池任務傳遞上下文;專案關閉時,支援等待執行緒池在指定時間內完成任務。
多種模式- 內建兩種使用模式:依賴配置中心和無中介軟體依賴。
容器管理- Tomcat、Jetty、Undertow 容器線程池運行時查看和線程數變更。
框架適配- Dubbo、Hystrix、RabbitMQ、RocketMQ 等消費性執行緒池運行時資料查看和執行緒數變更。
變更審核- 提供多種使用者角色,一般使用者變更執行緒池參數需要Admin 使用者審核者可生效。
動態化插件- 內建多種執行緒池插件,支援使用者自訂插件以及運行時擴充。
多版本適配- 經過實際測試,已支援客戶端SpringBoot 1.5.x => 2.7.5 版本(更高版本未測試)。
對於本地演示目的,請參閱Quick start
示範環境: http://console.hippo4j.cn/index.html
更多接取的公司,歡迎在登記地址登記,登記僅為了產品推廣。
開源不易,右上角點個Star 鼓勵一下吧!
如果大家想要即時關注Hippo4j 更新的文章以及分享的乾貨的話,可以關注我的公眾號。
使用過程中有任何問題,或對項目有什麼建議,關注公眾號回覆:加群,和1000+
志同道合的朋友交流討論。
如果您公司沒有使用Hippo4j 場景的話,我也建議去閱讀下專案的底層原理,主要有以下幾個原因:
為了提高程式碼品質以及後續的擴展行為,運用多種設計模式實現高內聚、低耦合。
框架底層依賴Spring 框架運行,並在原始碼中大量使用Spring 相關功能。
運用JUC 並發包下多種工具保障多執行緒運作安全,透過實際場景理解並發程式設計。
借鑒主流開源框架Nacos、Eureka 實現輕量級配置中心和註冊中心功能。
自訂RPC 框架實現,封裝Netty 完成客戶端/服務端網路通訊最佳化。
透過CheckStyle、Spotless 等外掛程式規範程式碼編寫,保障高品質程式碼行為與程式碼樣式。
[ Sa-Token ]:一個輕量級java 權限認證框架,讓鑑權變得簡單、優雅!
[ HertzBeat ]:易用友善的雲端監控系統, 無需Agent, 強大自訂監控能力。
[ JavaGuide ]:一份涵蓋大部分Java 程式設計師所需掌握的核心知識。
[ toBeBetterJavaer ]:一本簡單易懂、風趣幽默的Java 學習指南。
[ Jpom ]:簡而輕的低侵入式線上建置、自動部署、日常維運、專案監控軟體。
[ 12306 ]:完成高仿12306 用戶+搶票+訂單+支付服務,幫助學生主打就業的項目。
[ CongoMall ]:企業級商城,基於DDD 領域驅動模型開發,包含商城業務與基礎架構。
感謝所有為專案作出貢獻的開發者。如果有意貢獻,請參考good first issue。
Hippo4j 社群收到Jetbrains 多份Licenses,並已分配專案活躍開發者,非常感謝Jetbrains 對開源社群的支持。