首页 文章详情

基于美团文章实现的动态线程池,已开源

月伴飞鱼 | 634 2021-12-05 08:46 0 0 0
UniSMS (合一短信)

大家好, 我是龙台

给自己定了个小目标,hippo4j 年底达到 1k star!

77db28a0ded30edeabd78f4883168478.webp

GitHub:https://github.com/acmenlt/dynamic-threadpool

Site:https://www.hippox.cn





01

为什么写这个项目?



相信很多程序员都希望一件事,那就是能够参与到某款主流的中间件开发,我也不例外

虽然至今为止没有参与主流中间件的开发,但是无意中发现了一件更“有趣”的事情,hippo4j

hippo4j 的起始还要从看了美团那篇线程池文章说起,Java线程池实现原理及其在美团业务中的实践

可惜的是美团动态线程池并没有开源,而且去 GitHub、Gitee 等平台搜索动态线程池,也没有看到企业级可用的

然后就合计自己写,一来可以解决项目中的痛点,二来锻炼自己的编码能力

2021.6.16 号开始,在 GitHub 创建项目并提交了第一行代码

9609c5fce1ed90091af302943b2c5ab2.webp

截止目前 2021.11.22 号为止,开启了为期六个月的编码之路

d9739474e87c783de91591b0fa2fa563.webp

中间因为框架的设计不够满意,断层了一段时间,所幸最终还是找到合适的路





02

hippo4j 框架介绍



准备用 hippo4j 官网的一句话来介绍

强大的动态线程池,附带监控报警功能,打造轻量级运维监控平台

(一)强大的动态线程池

解决线程池参数不好预定义配置,完成核心线程、最大线程、阻塞队列大小等参数的动态配置

(二)附带监控报警功能

基于 Java 原生线程池扩展监控报警,报警类型包括:线程池活跃度、阻塞队列容量以及拒绝策略等

(三)打造轻量级运维监控平台

hippo4j 平台包括用户权限、租户、项目、报警、线程池配置等模块;可实时查看线程池实例运行参数,以及线程池运行历史记录

最后,总结下我对于 hippo4j 产出的意义:为业务系统提高线上运行保障





03

如何推广开源项目



最早的前三个月,一直保持着闷头写代码的习惯,因为不知道如何去推广自己的项目

后来看到 GitHub 漫游指南[1] 后,才算是对项目的推广入了一些门道,这里简短说明下

编写一个好的 README

在一个开源项目里,README 是最重要的内容。它快速地介绍了这个项目,并决定了它能不能吸引用户:

  • 这个项目做什么?
  • 它解决了什么问题?
  • 它有什么特性?
  • hello, world 示例程序

这个项目做什么?一句话文案

比如:强大的动态线程池,附带监控报警功能,打造轻量级运维监控平台

它解决了什么问题?

通过上面一句话不能很好的知道这个项目的具体应用场景,所以需要抛砖引玉将解决的问题带出来

88d7e3eb6e7dda6b4f031c69b373dab9.webp

它有什么特性?

当我们有 A、B、C 几个不同的框架的时候,作为一个开发人员,就需要对比他们的特性

544891266b90b4ee68ce7d909a4cbc59.webp19c4746b1cf000194e77b7cdb8bb31d5.webp

hello, world 示例程序

在我们看完了上面的介绍之后,紧接着接一个 hello, world 的示例

具体步骤便不在文章一一说明了,详情查看官网:https://hippox.cn/zh-cn/docs/run/runConsole.html

多渠道推广

如果项目想要获得更多的认可,前提是项目要能被大家伙知道

为此,hippo4j 曾在 CSDN、掘金、微信公众号、开源中国等多个程序员交流平台写文章推广

当流量上来后,就体现到上面流程的重要性。小伙伴读过 README 以及运行过 Demo,大致也就明白了项目是做什么

对项目有兴趣,希望长期关注的小伙伴,自然会对项目进行 Star,方便跟进项目的成长

f5f82a52ed2dfe2358b2ff5556ee885b.webp



04

前端控制台



这里贴几张控制台的页面,帮助大家简单认识下 hippo4j

线程池配置

e5f8d92d226668aa9520736c10a4691b.webp

线程池配置变更

82cc0d46e19e865add0aa84f66e2e28b.webp

线程池实例

c3b7a6edf4b3f8e31560e2be1b4ace02.webp

线程池运行时状态

be208a82a24c332343848fd5d0f8e262.webp

报警通知

7e37bf0956bf0fd3df020f50985dbc32.webp



05

未来规划是什么?



hippo4j 未来的版本规划包括三方面,优先级从上到下

高可用部署

hippo4j 属于典型的 C/S 架构,1.0 版本 Server 端仅支持单机部署,因为内存中保留着配置中心的数据

1.0 发布后,下一目标就是将 Server 端支持集群部署,真正意义支持高可用

运行数据收集上报

线程池运行过程中,对于数据的处理不会保留痕迹,比如线程池运行状态、任务执行耗时以及拒绝策略抛出次数等信息

1.0 之后 hippo4j 会对线程池运行过程中产生的数据,进行收集并上报服务端存档,方便开发人员根据采集的数据预防或者回溯问题

前端 UI 优化

在半个月之前,我几乎没有写过前端代码。如果追溯的话,那就是4年前写 JQuery 的时候

为了让 hippo4j 能够继续走下去,不得不向命运“低了头”,乖乖写起了前端代码

让后端来写前端代码,进而就导致 hippo4j 的控制台界面还是有点糙的

我是个样式控,希望展现给大家的效果是:即实用又时髦。按照发展来看,这个重任还是要落到自己身上的





06

最后总结



如果说看了上面的介绍,让你对 hippo4j 产生了兴趣,通过以下方式联系到小编,不仅可以解答你对 hippo4j 项目的疑惑,同时也接受正向的功能建议

b4d0bcc6e9bd55b20efb4793f4a36e4b.webp

屏幕前的小伙伴,觉得项目功能规划、代码设计还不错的话,辛苦点个 🚀 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


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter