跳到主要内容

架构设计

简单来说,Hippo4J 从部署的角度上分为两种角色:Server 端和 Client 端。

Server 端是 Hippo4J 项目打包出的 Java 进程,功能包括用户权限、线程池监控以及执行持久化的动作。

Client 端指的是我们 SpringBoot 应用,通过引入 Hippo4J Starter Jar 包负责与 Server 端进行交互。

比如拉取 Server 端线程池数据、动态更新线程池配置以及采集上报线程池运行时数据等。

基础组件

配置中心(Config)

配置中心位于 Server 端,它的主要作用是监控 Server 端线程池配置变更,实时通知到 Client 实例执行线程池变更流程。

代码设计基于 Nacos 1.x 版本的 长轮询以及异步 Servlet 机制 实现。

注册中心(Discovery)

负责管理 Client 端(单机或集群)注册到 Server 端的实例,包括不限于实例注册、续约、过期剔除 等操作,代码基于 Eureka 源码实现。

上面的配置中心很容易理解,动态线程池参数变更的根本。但是注册中心是用来做什么的?

注册中心管理 Client 端注册的实例,通过这些实例可以 实时获取线程池的运行时参数信息

目前的设计是如此,不排除后续基于 Discovery 做更多的扩展。

控制台(Console)

对接前端项目,包括不限于以下模块管理:

消息通知(Notify)

Hippo4J 内置了很多需要通知的事件,比如:线程池参数变更通知、线程池活跃度报警、拒绝策略执行报警以及阻塞队列容量报警等。

目前 Notify 已经接入了钉钉、企业微信和飞书,后续持续集成邮件、短信等通知渠道;并且,Notify 模块提供了消息事件的 SPI 方案,可以接受三方自定义的推送。

Hippo4j-Spring-Boot-Starter

熟悉 SpringBoot 的小伙伴对 Starter 应该不会陌生。Hippo4J 提供以 Starter Jar 包的形式嵌套在应用内,负责与 Server 端完成交互。

功能架构