为什么要写这个项目?大家好,我是龙泰。在介绍美团线程池的文章[1]中,由于业务没有合理配置线程池参数,引发了几次生产事故,引发了一系列的思考。最后决定封装线程池动态调参,扩展线程池监控和消息告警等功能。在开源平台上找了很多动态线程池的项目。在功能和健壮性方面,个人感觉对于企业级应用来说,因为动态线程的缘故,并不尽如人意。Chi比较感兴趣,想写一个有意义的项目,于是决定自己造一个轻量级的轮子,想给项目取一个简单好记的名字,类似于Eureka、Nacos、Redis;后来和朋友商量,决定以动物的名字命名:河马(hippo)GitHub:https://github.com/acmenlt/dynamic-threadpool(建议复制到电脑上查看)├──dynamic-threadpool│├──dynamic-threadpool-common--公共模块│├──dynamic-threadpool-config--配置中心│├──dynamic-threadpool-console--控制台│├──dynamic-threadpool-discovery--注册中心│├──dynamic-threadpool-spring-boot-starter--客户端依赖组件│├──dynamic-threadpool-example--示例工程│└──dynamic-threadpool-server--server│└──dynamic-threadpool-tools——它解决的抽象工具类是什么问题?在业务系统中应该使用线程池来帮助业务流程提高效率和管理线程。大多数场景都应用于大量的异步任务处理。线程池虽然给我们提供了很多便利,但是也不是完美的,比如下面的问题如果线程池的配置涉及到上面的问题,可能需要发布业务系统来解决;如果释放后参数还是不合理,继续释放。。。Hippo很好的解决了这个问题,它统一管理了业务中的所有线程池。遇到以上问题时,可以在不发布系统的情况下更换线程池参数。它有什么特点?应用系统中的线程池不容易管理。参考美团的设计。Hippo是根据租户、项目、线程池维度划分的。再加上系统权限,不同的开发和管理人员负责各自系统的线程池操作。比如小编在某公司的公共组件团队,该团队负责消息、短链接网关等项目。公共组件是租户,消息或短链接是项目Hippo。除了动态修改线程池外,还包括实时查看线程池运行指标、负载告警、配置日志管理等。具体功能如下图所示。如何运行演示?目前动态线程池功能已经完成,可以直接拉取代码本地运行。项目中的数据库是作者ECSDocker搭建的,可以直接使用启动dynamic-threadpool-server模块下的ServerApplication应用类启动dynamic-threadpool-example模块下的ExampleApplication应用类,修改配置中的线程池通过接口。HTTPPOST路径:http://localhost:6691/v1/cs/configs,Body请求体如下:{"ignore":"tenantId,itemId,tpId代表唯一的线程池,请勿修改","tenantId":"common","itemId":"message-center","tpId":"message-produce","coreSize":10,"maxSize":15,"queueType":9,"capacity":100,"keepAliveTime":10,"rejectedType":7,"isAlarm":0,"capacityAlarm":81,"livenessAlarm":82}接口调用成功后,观察dynamic-threadpool-example的控制台日志输出。日志输出包括但不限于这些信息。为了成功[🔥MESSAGE-PRODUCE]Changedthreadpool.coreSize::[11=>10],maxSize::[15=>15],queueType::[9=>9]capacity::[100=>100],keepAliveTime::[10000=>10000],rejectedType::[7=>7]现阶段已集成钉钉消息推送,后续将继续对接企业微信、邮箱、飞书、短信等通知渠道.加入钉钉群即可体验消息推送,群号:31764717项目代码功能还在开发中,初始版本1.0.0RELEASE将完成以下功能。部署Server服务后,只需要在业务系统中引入Starter组件即可完成动态修改、监控、告警等功能。查看源代码能获得什么?目前还没有发布Release版本。朋友们可以阅读框架的源码,查看框架。在项目开发过程中借鉴了Nacos、Eureka、Seata、ShardingSphere等中间件项目的优雅设计。总结回顾小编是一个代码干净的程序员。项目中的代码开发完全遵循阿里巴巴代码协议,也推荐大家使用。培养良好编码习惯的参考资料[1]美团线程池文章:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html
