基于美團文章實現(xiàn)的動態(tài)線程池,已開源
大家好, 我是龍臺
給自己定了個小目標(biāo),hippo4j 年底達(dá)到 1k star!

GitHub:https://github.com/acmenlt/dynamic-threadpool
Site:https://www.hippox.cn
01
為什么寫這個項目?
相信很多程序員都希望一件事,那就是能夠參與到某款主流的中間件開發(fā),我也不例外
雖然至今為止沒有參與主流中間件的開發(fā),但是無意中發(fā)現(xiàn)了一件更“有趣”的事情,hippo4j
hippo4j 的起始還要從看了美團那篇線程池文章說起,Java線程池實現(xiàn)原理及其在美團業(yè)務(wù)中的實踐
可惜的是美團動態(tài)線程池并沒有開源,而且去 GitHub、Gitee 等平臺搜索動態(tài)線程池,也沒有看到企業(yè)級可用的
然后就合計自己寫,一來可以解決項目中的痛點,二來鍛煉自己的編碼能力
2021.6.16 號開始,在 GitHub 創(chuàng)建項目并提交了第一行代碼

截止目前 2021.11.22 號為止,開啟了為期六個月的編碼之路

中間因為框架的設(shè)計不夠滿意,斷層了一段時間,所幸最終還是找到合適的路
02
hippo4j 框架介紹
準(zhǔn)備用 hippo4j 官網(wǎng)的一句話來介紹
強大的動態(tài)線程池,附帶監(jiān)控報警功能,打造輕量級運維監(jiān)控平臺
(一)強大的動態(tài)線程池
解決線程池參數(shù)不好預(yù)定義配置,完成核心線程、最大線程、阻塞隊列大小等參數(shù)的動態(tài)配置
(二)附帶監(jiān)控報警功能
基于 Java 原生線程池擴展監(jiān)控報警,報警類型包括:線程池活躍度、阻塞隊列容量以及拒絕策略等
(三)打造輕量級運維監(jiān)控平臺
hippo4j 平臺包括用戶權(quán)限、租戶、項目、報警、線程池配置等模塊;可實時查看線程池實例運行參數(shù),以及線程池運行歷史記錄
最后,總結(jié)下我對于 hippo4j 產(chǎn)出的意義:為業(yè)務(wù)系統(tǒng)提高線上運行保障
03
如何推廣開源項目
最早的前三個月,一直保持著悶頭寫代碼的習(xí)慣,因為不知道如何去推廣自己的項目
后來看到?GitHub 漫游指南[1]?后,才算是對項目的推廣入了一些門道,這里簡短說明下
編寫一個好的 README
在一個開源項目里,README 是最重要的內(nèi)容。它快速地介紹了這個項目,并決定了它能不能吸引用戶:
- 這個項目做什么?
- 它解決了什么問題?
- 它有什么特性?
- hello, world 示例程序
這個項目做什么?一句話文案
比如:強大的動態(tài)線程池,附帶監(jiān)控報警功能,打造輕量級運維監(jiān)控平臺
它解決了什么問題?
通過上面一句話不能很好的知道這個項目的具體應(yīng)用場景,所以需要拋磚引玉將解決的問題帶出來

它有什么特性?
當(dāng)我們有 A、B、C 幾個不同的框架的時候,作為一個開發(fā)人員,就需要對比他們的特性


hello, world 示例程序
在我們看完了上面的介紹之后,緊接著接一個 hello, world 的示例
具體步驟便不在文章一一說明了,詳情查看官網(wǎng):https://hippox.cn/zh-cn/docs/run/runConsole.html
多渠道推廣
如果項目想要獲得更多的認(rèn)可,前提是項目要能被大家伙知道
為此,hippo4j 曾在 CSDN、掘金、微信公眾號、開源中國等多個程序員交流平臺寫文章推廣
當(dāng)流量上來后,就體現(xiàn)到上面流程的重要性。小伙伴讀過 README 以及運行過 Demo,大致也就明白了項目是做什么
對項目有興趣,希望長期關(guān)注的小伙伴,自然會對項目進行 Star,方便跟進項目的成長

04
前端控制臺
這里貼幾張控制臺的頁面,幫助大家簡單認(rèn)識下 hippo4j
線程池配置

線程池配置變更

線程池實例

線程池運行時狀態(tài)

報警通知

05
未來規(guī)劃是什么?
hippo4j 未來的版本規(guī)劃包括三方面,優(yōu)先級從上到下
高可用部署
hippo4j 屬于典型的 C/S 架構(gòu),1.0 版本 Server 端僅支持單機部署,因為內(nèi)存中保留著配置中心的數(shù)據(jù)
1.0 發(fā)布后,下一目標(biāo)就是將 Server 端支持集群部署,真正意義支持高可用
運行數(shù)據(jù)收集上報
線程池運行過程中,對于數(shù)據(jù)的處理不會保留痕跡,比如線程池運行狀態(tài)、任務(wù)執(zhí)行耗時以及拒絕策略拋出次數(shù)等信息
1.0 之后 hippo4j 會對線程池運行過程中產(chǎn)生的數(shù)據(jù),進行收集并上報服務(wù)端存檔,方便開發(fā)人員根據(jù)采集的數(shù)據(jù)預(yù)防或者回溯問題
前端 UI 優(yōu)化
在半個月之前,我?guī)缀鯖]有寫過前端代碼。如果追溯的話,那就是4年前寫 JQuery 的時候
為了讓 hippo4j 能夠繼續(xù)走下去,不得不向命運“低了頭”,乖乖寫起了前端代碼
讓后端來寫前端代碼,進而就導(dǎo)致 hippo4j 的控制臺界面還是有點糙的
我是個樣式控,希望展現(xiàn)給大家的效果是:即實用又時髦。按照發(fā)展來看,這個重任還是要落到自己身上的
06
最后總結(jié)
如果說看了上面的介紹,讓你對 hippo4j 產(chǎn)生了興趣,通過以下方式聯(lián)系到小編,不僅可以解答你對 hippo4j 項目的疑惑,同時也接受正向的功能建議
屏幕前的小伙伴,覺得項目功能規(guī)劃、代碼設(shè)計還不錯的話,辛苦點個 ?? Star ,方便后續(xù)的查看
GitHub:https://github.com/acmenlt/dynamic-threadpool
Site:https://www.hippox.cn
參考資料
[1]GitHub 漫游指南: http://github.phodal.com/#%E5%A6%82%E4%BD%95%E6%8E%A8%E5%B9%BF
