Documentation Supplement for Version 1.4.0

1.4.0
chen.ma 2 years ago
parent 66716fc5b8
commit 41ff7f1251

@ -4,12 +4,11 @@ sidebar_position: 1
# 开发者指南
为了让您的 id 显示在 contributor 列表中,别忘了以下设置:
```shell
git config --global user.name "username"
git config --global user.email "github账号邮箱"
git config --global user.email "GitHub 账号邮箱"
```
## 开发者列表

@ -4,10 +4,9 @@ sidebar_position: 2
# 核心开发者
<table>
<tr>
<td align="center"><a href="https://github.com/mabaiwan"><img src="https://avatars.githubusercontent.com/u/77398366?v=4?s=100" width="100px;" alt=""/><br /><sub><b>马称</b></sub></a></td>
<td align="center"><a href="https://github.com/agentart"><img src="https://avatars.githubusercontent.com/u/77398366?v=4?s=100" width="100px;" alt=""/><br /><sub><b>马称</b></sub></a></td>
<td align="center"><a href="https://github.com/shining-stars-lk"><img src="https://avatars.githubusercontent.com/u/40255310?v=4?s=100" width="100px;" alt=""/><br /><sub><b>陆宽</b></sub></a></td>
</tr>
</table>

@ -4,10 +4,9 @@ sidebar_position: 4
# 支持开源
如果您正在使用这个项目并感觉良好,或者是想支持我继续开发,您可以通过如下 `任意` 方式支持我:
如果您正在使用这个项目并感觉良好,或者是想支持我继续开发。通过以下二维码 一次性捐款,我多半会买一杯咖啡或茶~
- GitHub Star 并分享动态线程池框架 [Hippo4J](https://github.com/opengoofy/hippo4j)
- 通过以下二维码 一次性捐款。我多半会买一杯咖啡或茶~
> [GitHub](https://github.com/opengoofy/hippo4j) 或 [Gitee](https://gitee.com/agentart/hippo4j) Star 才是最大动力~
![](https://images-machen.oss-cn-beijing.aliyuncs.com/IMG_6719_2.jpg?x-oss-process=image/resize,h_180,w_180)

@ -8,7 +8,7 @@ sidebar_position: 0
![](https://images-machen.oss-cn-beijing.aliyuncs.com/image-20220319154626314.png)
### hippo4j-core
### hippo4j-config
**轻量级动态线程池管理**,依赖 Apollo、Nacos、Zookeeper 等三方配置中心(任选其一)完成线程池参数动态变更,支持运行时报警、监控等功能。
@ -20,20 +20,18 @@ sidebar_position: 0
**部署 hippo4j-server 服务**,通过可视化 Web 界面完成线程池的创建、变更以及查看,不依赖三方中间件。
相比较 hippo4j-core,功能会更强大,但同时也引入了一定的复杂性。需要部署一个 Java 服务,以及依赖 MySQL 数据库。
相比较 hippo4j-config,功能会更强大,但同时也引入了一定的复杂性。需要部署一个 Java 服务,以及依赖 MySQL 数据库。
![](https://images-machen.oss-cn-beijing.aliyuncs.com/1644032018254-min.gif)
### 使用总结
| | hippo4j-core | hippo4j-server |
| | hippo4j-config | hippo4j-server |
| ---- | ---------------------------------------------------- | ------------------------------------------------------------ |
| 依赖 | Nacos、Apollo、Zookeeper 配置中心(任选其一) | 部署 Hippo-4J Server内部无依赖中间件 |
| 使用 | 配置中心补充线程池相关参数 | Hippo-4J Server Web 控制台添加线程池记录 |
| 功能 | 包含基础功能:参数动态化、运行时监控、报警等 | 基础功能之外扩展控制台界面、线程池堆栈查看、线程池运行信息实时查看、历史运行信息查看、线程池配置集群个性化等 |
使用建议:根据公司情况选择,如果基本功能可以满足使用,选择 hippo4j-core 使用即可;如果希望更多的功能,可以选择 hippo4j-server。
使用建议:根据公司情况选择,如果基本功能可以满足使用,选择 hippo4j-config 使用即可;如果希望更多的功能,可以选择 hippo4j-server。
**两者在进行替换的时候,无需修改业务代码**。

@ -10,6 +10,7 @@ Hippo4J 目前已支持的三方框架线程池列表:
- Hystrix
- RabbitMQ
- RocketMQ
- AlibabaDubbo
- RocketMQSpringCloudStream
引入 Hippo4J Server 或 Core 的 Maven Jar 坐标后,还需要引入对应的框架适配 Jar
@ -19,6 +20,8 @@ Hippo4J 目前已支持的三方框架线程池列表:
<groupId>cn.hippo4j</groupId>
<!-- Dubbo -->
<artifactId>hippo4j-spring-boot-starter-adapter-dubbo</artifactId>
<!-- Alibaba Dubbo -->
<artifactId>hippo4j-spring-boot-starter-adapter-alibaba-dubbo</artifactId>
<!-- Hystrix -->
<artifactId>hippo4j-spring-boot-starter-adapter-hystrix</artifactId>
<!-- RabbitMQ -->
@ -27,7 +30,7 @@ Hippo4J 目前已支持的三方框架线程池列表:
<artifactId>hippo4j-spring-boot-starter-adapter-rocketmq</artifactId>
<!-- SpringCloud Stream RocketMQ -->
<artifactId>hippo4j-spring-boot-starter-adapter-spring-cloud-stream-rocketmq</artifactId>
<version>1.3.1</version>
<version>1.4.0</version>
</dependency>
```
@ -37,7 +40,7 @@ Hippo4J 目前已支持的三方框架线程池列表:
<dependency>
<groupId>cn.hippo4j</groupId>
<artifactId>hippo4j-spring-boot-starter-adapter-all</artifactId>
<version>1.3.1</version>
<version>1.4.0</version>
</dependency>
```

@ -2,9 +2,9 @@
sidebar_position: 2
---
# hippo4j core 线程池监控
# hippo4j config 线程池监控
已完成 hippo4j-core 的 [接入工作](/docs/user_docs/getting-started/hippo4j-core-start) 。
已完成 hippo4j-config 的 [接入工作](/docs/user_docs/getting-started/hippo4j-core-start) 。
## 安装 Grafana + Prometheus

@ -2,7 +2,7 @@
sidebar_position: 1
---
# hippo4j core 接入
# hippo4j config 接入
Nacos、Apollo、Zookeeper 配置中心任选其一。
@ -12,7 +12,7 @@ Nacos、Apollo、Zookeeper 配置中心任选其一。
<dependency>
<groupId>cn.hippo4j</groupId>
<artifactId>hippo4j-config-spring-boot-starter</artifactId>
<version>1.3.1</version>
<version>1.4.0</version>
</dependency>
```
@ -42,54 +42,79 @@ spring:
dynamic:
thread-pool:
enable: true # 是否开启动态线程池
banner: true # 是否打印 banner
collect: true # 是否开启线程池数据采集,对接 Prometheus
notify-platforms: # 通知报警平台,⚠️ 请替换为自己创建的群机器人
- platform: 'WECHAT' # 企业微信
token: 1d307bfa-815f-4662-a2e5-99415e947bb8
- platform: 'DING' # 钉钉
token: 56417ebba6a27ca352f0de77a2ae9da66d01f39610b5ee8a6033c60ef9071c55
secret: SEC40943de20b51e993b47e9a55490a168f1c9e00bdb4f0fb15b1d9e4b58f8b05f3 # 加签
- platform: 'LARK' # 飞书
token: 2cbf2808-3839-4c26-a04d-fd201dd51f9e
nacos: # nacos apollo 任选其一
# 是否开启动态线程池
enable: true
# 是否打印 banner
banner: true
# 是否开启线程池数据采集,对接 Prometheus、ES、Log 等
collect: true
# 检查线程池状态,是否达到报警条件,单位毫秒
check-state-interval: 3000
# 通知报警平台,请替换为自己创建的群机器人
notify-platforms:
- platform: 'WECHAT'
token: xxx
- platform: 'DING'
token: xxx
secret: xxx # 加签专属
- platform: 'LARK'
token: xxx
# nacos apollo、zookeeper 任选其一
nacos:
data-id: xxx
group: xxx
apollo:
namespace: xxxx
config-file-type: yml # 配置中心文件格式
# tomcat:
# jetty:
undertow: # 三种容器线程池,任选其一
# 配置中心文件格式
config-file-type: yml
# tomcat、undertow、jetty 三种容器线程池,任选其一
undertow:
core-pool-size: 100
maximum-pool-size: 200
keep-alive-time: 1000
# 全局通知配置
alarm: true # 是否报警
check-state-interval: 3000 # 检查线程池状态,是否达到报警条件,单位毫秒
active-alarm: 80 # 活跃度报警阈值;假设线程池最大线程数 10当线程数达到 8 发起报警
capacity-alarm: 80 # 容量报警阈值;假设阻塞队列容量 100当容量达到 80 发起报警
alarm-interval: 8 # 报警间隔,同一线程池下同一报警纬度,在 interval 时间内只会报警一次,单位秒
receive: xxx # 企业微信填写用户 ID填写其它将无法达到 @ 效果)、钉钉填手机号、飞书填 ou_ 开头唯一 ID
# 线程池配置
# 全局通知配置-是否报警
alarm: true
# 活跃度报警阈值;假设线程池最大线程数 10当线程数达到 8 发起报警
active-alarm: 80
# 容量报警阈值;假设阻塞队列容量 100当容量达到 80 发起报警
capacity-alarm: 80
# 报警间隔,同一线程池下同一报警纬度,在 interval 时间内只会报警一次,单位秒
alarm-interval: 8
# 企业微信填写用户 ID填写其它将无法达到 @ 效果)、钉钉填手机号、飞书填 ou_ 开头唯一 ID
receive: xxx
# 动态线程池列表
executors:
- thread-pool-id: 'message-consume' # 线程池标识
core-pool-size: 1 # 核心线程数
maximum-pool-size: 1 # 最大线程数
queue-capacity: 1 # 阻塞队列大小
execute-time-out: 1000 # 执行超时时间,超过此时间发起报警
blocking-queue: 'LinkedBlockingQueue' # 阻塞队列名称,参考 QueueTypeEnum支持 SPI
rejected-handler: 'AbortPolicy' # 拒绝策略名称,参考 RejectedPolicies支持 SPI
keep-alive-time: 1024 # 线程存活时间,单位秒
allow-core-thread-time-out: true # 是否允许核心线程超时
thread-name-prefix: 'message-consume' # 线程名称前缀
notify: # 通知配置,线程池中通知配置如果存在,则会覆盖全局通知配置
is-alarm: true # 是否报警
active-alarm: 80 # 活跃度报警阈值;假设线程池最大线程数 10当线程数达到 8 发起报警
capacity-alarm: 80 # 容量报警阈值;假设阻塞队列容量 100当容量达到 80 发起报警
interval: 8 # 报警间隔,同一线程池下同一报警纬度,在 interval 时间内只会报警一次,单位分钟
receive: xxx # 企业微信填写用户 ID填写其它将无法达到 @ 效果)、钉钉填手机号、飞书填 ou_ 开头唯一 ID
- thread-pool-id: 'message-consume'
# 核心线程数
core-pool-size: 1
# 最大线程数
maximum-pool-size: 1
# 阻塞队列名称,参考 BlockingQueueTypeEnum支持 SPI
blocking-queue: 'LinkedBlockingQueue'
# 阻塞队列大小
queue-capacity: 1
# 执行超时时间,超过此时间发起报警,单位毫秒
execute-time-out: 1000
# 拒绝策略名称,参考 RejectedPolicyTypeEnum支持 SPI
rejected-handler: 'AbortPolicy'
# 线程存活时间,单位秒
keep-alive-time: 1024
# 是否允许核心线程超时
allow-core-thread-time-out: true
# 线程工厂名称前缀
thread-name-prefix: 'message-consume'
# 是否报警
alarm: true
# 活跃度报警阈值;假设线程池最大线程数 10当线程数达到 8 发起报警
active-alarm: 80
# 容量报警阈值;假设阻塞队列容量 100当容量达到 80 发起报警
capacity-alarm: 80
# 通知配置,线程池中通知配置如果存在,则会覆盖全局通知配置
notify:
# 报警间隔,同一线程池下同一报警纬度,在 interval 时间内只会报警一次,单位分钟
interval: 8
# 企业微信填写用户 ID填写其它将无法达到 @ 效果)、钉钉填手机号、飞书填 ou_ 开头唯一 ID
receive: xxx
- thread-pool-id: 'message-produce'
core-pool-size: 1
maximum-pool-size: 1
@ -100,10 +125,10 @@ spring:
keep-alive-time: 1024
allow-core-thread-time-out: true
thread-name-prefix: 'message-consume'
alarm: true
active-alarm: 80
capacity-alarm: 80
notify:
is-alarm: true
active-alarm: 80
capacity-alarm: 80
interval: 8
receive: xxx
```

@ -22,7 +22,7 @@ SpringBoot Pom 引入 Hippo4j Starter Jar。
<dependency>
<groupId>cn.hippo4j</groupId>
<artifactId>hippo4j-spring-boot-starter</artifactId>
<version>1.3.1</version>
<version>1.4.0</version>
</dependency>
```

@ -4,8 +4,7 @@ sidebar_position: 1
# hippo4j server 部署
[RELEASE](https://github.com/longtai-cn/hippo4j/releases) 页面下载对应版本并进行解压。
[RELEASE](https://github.com/opengoofy/hippo4j/releases) 页面下载对应版本并进行解压。
## 初始化
@ -15,12 +14,14 @@ sidebar_position: 1
/conf/application.properties
```
数据库执行 SQL 脚本。
如果是新运行 Hippo-4J数据库执行下述 SQL 脚本即可
```txt
/conf/hippo4j_manager.sql
```
如果是对已运行 Hippo-4J 升级,请查看 `/conf/sql-upgrade` 目录下,是否有目标版本对应的升级脚本。
## 直接运行
Mac Linux 启动执行。

@ -80,9 +80,10 @@ Hippo4J 发布时可能会涉及到两端发布,分别是 Server 和 Starter
重启客户端项目,会重新拉取最新报警推送配置,问题解决。
## 设置线程池参数优先级问题
- 当使用`@DynamicThreadPool`进行修饰的方法中和在管理界面设置中同时存在的话,则管理界面设置的优先级最高;
- 如果连接service端失败的话使用`@DynamicThreadPool`进行修饰设置的优先级最高。
- 当使用 `@DynamicThreadPool` 进行修饰的方法中和在管理界面设置中同时存在的话,则管理界面设置的优先级最高;
- 如果连接 server 端失败的话,使用 `@DynamicThreadPool` 进行修饰设置的优先级最高。
## 线程池实例中修改队列容量参数问题
在线程池管理中添加时,只有当选择队列类型为`ResizableCapacityLinkedBlockingQueue`时,后续再进行修改容量大小时才会实时的刷新修改成功。
在线程池管理中添加时,只有当选择队列类型为 `ResizableCapacityLinkedBlockingQueue` 时,后续再进行修改容量大小时才会实时的刷新修改成功。

@ -38,15 +38,6 @@ Client 端指的是我们 SpringBoot 应用,通过引入 Hippo4J Starter Jar
![](https://images-machen.oss-cn-beijing.aliyuncs.com/image-20211107122504126.png)
### 抽象工具Tools
顾名思义就是将某些工具单独抽象出来,并以 Module 的形式进行展现,这样的拆分方式有两点好处:**一是更符合职责分离特性,二是需要用到某块功能**,做到拿来即用。
log-record-tool基于 [mzt-biz-log](https://github.com/mouzt/mzt-biz-log "mzt-biz-log") 的操作日志变更记录组件。
## 消息通知Notify
Hippo4J 内置了很多需要通知的事件,比如:线程池参数变更通知、线程池活跃度报警、拒绝策略执行报警以及阻塞队列容量报警等。

@ -15,7 +15,7 @@ Clone Hippo4J [源代码](https://github.com/longtai-cn/hippo4j),导入初始
1. 导入 [Hippo4J 初始化 SQL 语句](https://github.com/longtai-cn/hippo4j/blob/develop/hippo4j-server/conf/hippo4j_manager.sql)
2. 启动 [Hippo4J-Server](https://github.com/longtai-cn/hippo4j/tree/develop/hippo4j-server) 模块下 ServerApplication 应用类;
3. 启动 [Hippo4J-spring-boot-starter-example](https://github.com/opengoofy/hippo4j/tree/develop/hippo4j-example/hippo4j-spring-boot-starter-example) 模块下 Hippo4JServerExampleApplication 应用类。
3. 启动 [hippo4J-spring-boot-starter-example](https://github.com/opengoofy/hippo4j/tree/develop/hippo4j-example/hippo4j-spring-boot-starter-example) 模块下 Hippo4JServerExampleApplication 应用类。
通过 Server 控制台访问,路径:`http://localhost:6691/index.html#/hippo4j/dynamic/thread-pool/instance`。
@ -26,7 +26,7 @@ Clone Hippo4J [源代码](https://github.com/longtai-cn/hippo4j),导入初始
修改相关参数, 观察 Hippo4j-Example 控制台日志输出,日志输出包括不限于此信息即为成功。
```tex
2022-08-13 21:26:25.814 INFO 38972 --- [change.config-5] c.h.s.s.c.ServerThreadPoolDynamicRefresh : Dynamic thread pool change parameter: [message-produce]
2022-08-13 21:26:25.814 INFO 38972 --- [change.config-5] c.h.s.s.c.ServerThreadPoolDynamicRefresh : [message-consume] Dynamic thread pool change parameter.
corePoolSize: [5 => 5]
maximumPoolSize: [6 => 7]
capacity: [10 => 10]
@ -36,6 +36,6 @@ Clone Hippo4J [源代码](https://github.com/longtai-cn/hippo4j),导入初始
allowCoreThreadTimeOut: [false => false]
```
另外,当 Client 集群部署时,可以修改某一个实例或选择 `全部修改` 按钮,修改所有实例线程池信息。
另外,当 Client 集群部署时,可以修改某一个实例或选择 `全部修改` 按钮,修改所有实例线程池信息。
线程池参数动态变更通知,或线程池运行时报警,详情参考 [通知报警](/docs/user_docs/user_guide/alarm.md)。

Loading…
Cancel
Save