From 1c102acef91e7d8d50c0b7ed6989e335d3f64298 Mon Sep 17 00:00:00 2001 From: cst61 Date: Sat, 28 Mar 2026 11:15:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../rj/AISmartCard20251230Application.java | 1 + src/main/resources/application.yml | 19 ++++---- src/main/sql/多租户技术方案.md | 48 +++++++++---------- 4 files changed, 34 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index 0fd9f75..b8e59db 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.cst AIDriverEEBackend - 1.260131.1-SNAPSHOT + 1.26032801.1-SNAPSHOT Langchain4j-rj Langchain4j-rj20250803 diff --git a/src/main/java/com/rj/AISmartCard20251230Application.java b/src/main/java/com/rj/AISmartCard20251230Application.java index 1e0fa25..2ea56b5 100644 --- a/src/main/java/com/rj/AISmartCard20251230Application.java +++ b/src/main/java/com/rj/AISmartCard20251230Application.java @@ -16,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; *
  • 本地接口文档: http://localhost:8090/doc.html#/home
  • *
  • 公共接口(硅谷): https://apig.huayang-star.com/doc.html#/home (43.153.123.65)
  • *
  • 公共接口(上海): https://api.huayang-star.com/doc.html#/home (101.35.52.237)
  • + *
  • AI 服务器http://101.35.52.237:28091/doc.html#/home
  • *
  • SwaggerUI: http://localhost:9060/swagger-ui/index.html?urls.primaryName=public-api
  • *
  • 正式后台: http://101.43.230.106:8180/aismartcard/aicardbackend
  • * diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index aa60bf7..867a789 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -81,9 +81,9 @@ spring: database: 0 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - # 优化JDBC URL,添加连接参数以更好地处理连接超时和重连 - url: jdbc:mysql://124.221.59.58:3309/ai_smart_ee?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&socketTimeout=60000&connectTimeout=30000&autoReconnect=true&failOverReadOnly=false&maxReconnects=3&initialTimeout=2 -# url: jdbc:mysql://101.35.52.237:13307/ai_smart_badge?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&maxReconnects=3&initialTimeout=2&connectTimeout=30000&socketTimeout=60000 + # tcpKeepAlive:TCP 层定期发保活包,降低 NAT/防火墙 idle 断连(常见约 15 分钟)概率 + url: jdbc:mysql://124.221.59.58:3309/ai_smart_ee?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&tcpKeepAlive=true&socketTimeout=60000&connectTimeout=30000&autoReconnect=true&failOverReadOnly=false&maxReconnects=3&initialTimeout=2 +# url: jdbc:mysql://101.35.52.237:13307/ai_smart_badge?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&tcpKeepAlive=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=3&initialTimeout=2&connectTimeout=30000&socketTimeout=60000 username: root # password: cstcom.123! password: ChangAndb.123! @@ -94,18 +94,15 @@ spring: # 连接超时配置(毫秒) connectionTimeout: 30000 # 获取连接的超时时间,30秒 validationTimeout: 5000 # 连接验证的超时时间,5秒 - # 连接生命周期配置(毫秒) - idleTimeout: 300000 # 空闲连接超时时间,5分钟 - # maxLifetime设置为MySQL wait_timeout的75%(28800秒 * 0.75 = 21600秒 = 6小时) - # 当前MySQL wait_timeout=28800秒(8小时),设置为6小时(21600000ms)以确保连接在服务器关闭前被回收 - # HikariCP官方建议maxLifetime应为数据库wait_timeout的70-80%,6小时(75%)是一个理想的平衡值 - maxLifetime: 21600000 # 连接最大生存时间,6小时(wait_timeout=8小时的75%,确保小于服务器超时时间) + # 连接生命周期(毫秒):须同时满足 (1) < MySQL wait_timeout (2) 常小于云 NAT/防火墙 idle 断连(约 15 分钟) + idleTimeout: 180000 # 3 分钟,池中空闲连接提前回收,避免持有可能已被中间设备掐断的 socket + maxLifetime: 600000 # 10 分钟,小于常见 15 分钟断连窗口,并远小于典型 wait_timeout(8h),由池主动换连接 # 连接验证配置 connectionTestQuery: "SELECT 1" # 连接泄漏检测(毫秒)- 如果连接超过此时间未归还,会记录警告 leakDetectionThreshold: 60000 # 60秒 - # 缩短keepaliveTime到2分钟,更频繁地检测连接是否有效,避免使用已关闭的连接 - keepaliveTime: 120000 # 2分钟,定期发送keepalive查询保持连接活跃 + # 池中连接定期 JDBC 探活,须小于 maxLifetime;1 分钟可对抗长时间无 SQL 导致的“假空闲”断链 + keepaliveTime: 60000 # 连接池名称(便于监控和调试) poolName: HikariPool-Main # 连接初始化配置 diff --git a/src/main/sql/多租户技术方案.md b/src/main/sql/多租户技术方案.md index 4515916..b2be524 100644 --- a/src/main/sql/多租户技术方案.md +++ b/src/main/sql/多租户技术方案.md @@ -201,8 +201,8 @@ INSERT INTO `tenant` ( `create_time`, `update_time` ) VALUES ( - 'DEFAULT_TENANT_ID', -- 建议改成真实的 UUID 或雪花ID - 'DEFAULT_TENANT', + 'TENANT_ID_CST_2026', -- 建议改成真实的 UUID 或雪花ID + '北京移多旺科技有限公司', '默认租户', 1, NULL, @@ -215,36 +215,36 @@ INSERT INTO `tenant` ( -- 2. 为所有新增了 tenant_id 的表补齐历史数据 -- 音频类 -UPDATE `audio_management` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `audio_segment` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `audio_management_statistics` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `audio_text_analysis_furniture` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `audio_text_analysis_sop` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `video_image_analysis` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `video_management` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `video_synthesis_log` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; +UPDATE `audio_management` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `audio_segment` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `audio_management_statistics` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `audio_text_analysis_furniture` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `audio_text_analysis_sop` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `video_image_analysis` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `video_management` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `video_synthesis_log` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; -- 客户与销售类 -UPDATE `customer_management` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `customer_profile_analysis` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `communication_record` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `sales_management` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; +UPDATE `customer_management` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `customer_profile_analysis` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `communication_record` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `sales_management` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; -- 门店与项目类 -UPDATE `dealership` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `project_management` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `device_management` SET `tenant_id` = 'DEFAULT_cst_20251216' WHERE `tenant_id` IS NULL; +UPDATE `dealership` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `project_management` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `device_management` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; -- 日志与其他 -UPDATE `yhy_audio_upload_log` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `heartbeat_log` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `tts_request_log` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `face_detect_log` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; +UPDATE `yhy_audio_upload_log` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `heartbeat_log` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `tts_request_log` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `face_detect_log` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; -- 用户与权限 -UPDATE `user` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `user_role` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; -UPDATE `role` SET `tenant_id` = 'DEFAULT_TENANT_ID' WHERE `tenant_id` IS NULL; +UPDATE `user` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `user_role` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL; +UPDATE `role` SET `tenant_id` = 'TENANT_ID_CST_2026' WHERE `tenant_id` IS NULL;