基于美团文章实现的动态线程池,已开源
大家好, 我是龙台
给自己定了个小目标,hippo4j 年底达到 1k star!
GitHub:https://github.com/acmenlt/dynamic-threadpool
Site:https://www.hippox.cn
01
为什么写这个项目?
相信很多程序员都希望一件事,那就是能够参与到某款主流的中间件开发,我也不例外
虽然至今为止没有参与主流中间件的开发,但是无意中发现了一件更“有趣”的事情,hippo4j
hippo4j 的起始还要从看了美团那篇线程池文章说起,Java线程池实现原理及其在美团业务中的实践
可惜的是美团动态线程池并没有开源,而且去 GitHub、Gitee 等平台搜索动态线程池,也没有看到企业级可用的
然后就合计自己写,一来可以解决项目中的痛点,二来锻炼自己的编码能力
2021.6.16 号开始,在 GitHub 创建项目并提交了第一行代码
截止目前 2021.11.22 号为止,开启了为期六个月的编码之路
中间因为框架的设计不够满意,断层了一段时间,所幸最终还是找到合适的路
02
hippo4j 框架介绍
准备用 hippo4j 官网的一句话来介绍
强大的动态线程池,附带监控报警功能,打造轻量级运维监控平台
(一)强大的动态线程池
解决线程池参数不好预定义配置,完成核心线程、最大线程、阻塞队列大小等参数的动态配置
(二)附带监控报警功能
基于 Java 原生线程池扩展监控报警,报警类型包括:线程池活跃度、阻塞队列容量以及拒绝策略等
(三)打造轻量级运维监控平台
hippo4j 平台包括用户权限、租户、项目、报警、线程池配置等模块;可实时查看线程池实例运行参数,以及线程池运行历史记录
最后,总结下我对于 hippo4j 产出的意义:为业务系统提高线上运行保障
03
如何推广开源项目
最早的前三个月,一直保持着闷头写代码的习惯,因为不知道如何去推广自己的项目
后来看到 GitHub 漫游指南[1] 后,才算是对项目的推广入了一些门道,这里简短说明下
编写一个好的 README
在一个开源项目里,README 是最重要的内容。它快速地介绍了这个项目,并决定了它能不能吸引用户:
- 这个项目做什么?
- 它解决了什么问题?
- 它有什么特性?
- hello, world 示例程序
这个项目做什么?一句话文案
比如:强大的动态线程池,附带监控报警功能,打造轻量级运维监控平台
它解决了什么问题?
通过上面一句话不能很好的知道这个项目的具体应用场景,所以需要抛砖引玉将解决的问题带出来
它有什么特性?
当我们有 A、B、C 几个不同的框架的时候,作为一个开发人员,就需要对比他们的特性
hello, world 示例程序
在我们看完了上面的介绍之后,紧接着接一个 hello, world 的示例
具体步骤便不在文章一一说明了,详情查看官网:https://hippox.cn/zh-cn/docs/run/runConsole.html
多渠道推广
如果项目想要获得更多的认可,前提是项目要能被大家伙知道
为此,hippo4j 曾在 CSDN、掘金、微信公众号、开源中国等多个程序员交流平台写文章推广
当流量上来后,就体现到上面流程的重要性。小伙伴读过 README 以及运行过 Demo,大致也就明白了项目是做什么
对项目有兴趣,希望长期关注的小伙伴,自然会对项目进行 Star,方便跟进项目的成长
04
前端控制台
这里贴几张控制台的页面,帮助大家简单认识下 hippo4j
线程池配置
线程池配置变更
线程池实例
线程池运行时状态
报警通知
05
未来规划是什么?
hippo4j 未来的版本规划包括三方面,优先级从上到下
高可用部署
hippo4j 属于典型的 C/S 架构,1.0 版本 Server 端仅支持单机部署,因为内存中保留着配置中心的数据
1.0 发布后,下一目标就是将 Server 端支持集群部署,真正意义支持高可用
运行数据收集上报
线程池运行过程中,对于数据的处理不会保留痕迹,比如线程池运行状态、任务执行耗时以及拒绝策略抛出次数等信息
1.0 之后 hippo4j 会对线程池运行过程中产生的数据,进行收集并上报服务端存档,方便开发人员根据采集的数据预防或者回溯问题
前端 UI 优化
在半个月之前,我几乎没有写过前端代码。如果追溯的话,那就是4年前写 JQuery 的时候
为了让 hippo4j 能够继续走下去,不得不向命运“低了头”,乖乖写起了前端代码
让后端来写前端代码,进而就导致 hippo4j 的控制台界面还是有点糙的
我是个样式控,希望展现给大家的效果是:即实用又时髦。按照发展来看,这个重任还是要落到自己身上的
06
最后总结
如果说看了上面的介绍,让你对 hippo4j 产生了兴趣,通过以下方式联系到小编,不仅可以解答你对 hippo4j 项目的疑惑,同时也接受正向的功能建议
屏幕前的小伙伴,觉得项目功能规划、代码设计还不错的话,辛苦点个 🚀 Star ,方便后续的查看
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