From b92568b8423419e81e6f19bcf34c68b2f8bab8f1 Mon Sep 17 00:00:00 2001
From: Jerry Yan <792602257@qq.com>
Date: Sat, 29 Nov 2025 23:50:24 +0800
Subject: [PATCH] =?UTF-8?q?feat(face):=20=E5=AE=9E=E7=8E=B0=E8=B4=A6?=
=?UTF-8?q?=E5=8F=B7=E7=BA=A7=E4=BA=BA=E8=84=B8=E8=AF=86=E5=88=AB=E8=B0=83?=
=?UTF-8?q?=E5=BA=A6=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增账号级别调度器管理器,支持多账号QPS隔离控制
- 为阿里云和百度云适配器添加配置getter方法
- 移除原有阻塞式限流逻辑,交由外层调度器统一管控
- 创建QPS调度器实现精确的任务频率控制
- 新增监控接口用于查询各账号调度器运行状态
- 重构人脸识别Kafka消费服务,集成账号调度机制
- 优化线程池资源配置,提升多账号并发处理效率
- 增强错误处理与状态更新的安全性
- 删除旧版全局线程池配置类
- 完善任务提交与状态流转的日志记录
---
.../FaceRecognitionMonitorController.java | 50 ++++
.../facebody/adapter/AliFaceBodyAdapter.java | 7 +-
.../facebody/adapter/BceFaceBodyAdapter.java | 14 +-
.../FaceRecognitionThreadPoolConfig.java | 49 ----
.../AccountFaceSchedulerManager.java | 180 ++++++++++++
.../scheduler/AccountSchedulerContext.java | 34 +++
.../kafka/scheduler/QpsScheduler.java | 114 ++++++++
.../service/FaceProcessingKafkaService.java | 261 ++++++++++++------
8 files changed, 569 insertions(+), 140 deletions(-)
create mode 100644 src/main/java/com/ycwl/basic/controller/monitor/FaceRecognitionMonitorController.java
delete mode 100644 src/main/java/com/ycwl/basic/integration/kafka/config/FaceRecognitionThreadPoolConfig.java
create mode 100644 src/main/java/com/ycwl/basic/integration/kafka/scheduler/AccountFaceSchedulerManager.java
create mode 100644 src/main/java/com/ycwl/basic/integration/kafka/scheduler/AccountSchedulerContext.java
create mode 100644 src/main/java/com/ycwl/basic/integration/kafka/scheduler/QpsScheduler.java
diff --git a/src/main/java/com/ycwl/basic/controller/monitor/FaceRecognitionMonitorController.java b/src/main/java/com/ycwl/basic/controller/monitor/FaceRecognitionMonitorController.java
new file mode 100644
index 00000000..d5b80603
--- /dev/null
+++ b/src/main/java/com/ycwl/basic/controller/monitor/FaceRecognitionMonitorController.java
@@ -0,0 +1,50 @@
+package com.ycwl.basic.controller.monitor;
+
+import com.ycwl.basic.integration.kafka.scheduler.AccountFaceSchedulerManager;
+import com.ycwl.basic.utils.ApiResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 人脸识别监控接口
+ * 提供调度器状态查询功能
+ */
+@RestController
+@RequestMapping("/api/monitor/face-recognition")
+@RequiredArgsConstructor
+public class FaceRecognitionMonitorController {
+
+ private final AccountFaceSchedulerManager schedulerManager;
+
+ /**
+ * 获取所有账号的调度器统计信息
+ *
+ * 示例返回:
+ * {
+ * "LTAI5xxx": {
+ * "accountKey": "LTAI5xxx",
+ * "cloudType": "ALI",
+ * "activeThreads": 3,
+ * "executorQueueSize": 12,
+ * "schedulerQueueSize": 45
+ * },
+ * "245xxx": {
+ * "accountKey": "245xxx",
+ * "cloudType": "BAIDU",
+ * "activeThreads": 8,
+ * "executorQueueSize": 5,
+ * "schedulerQueueSize": 20
+ * }
+ * }
+ *
+ * @return 所有账号的调度器状态
+ */
+ @GetMapping("/schedulers")
+ public ApiResponse