From d2c43945165e14d1ddc91efac95e564115d41673 Mon Sep 17 00:00:00 2001 From: Toyas Date: Mon, 14 Apr 2025 15:31:02 +0800 Subject: [PATCH] chore(config): Improve Nacos initialization and deployment scripts --- build-and-deploy.bat | 20 +- build-and-deploy.sh | 21 ++- docker-compose.yml | 27 ++- sql/init.sql | 2 + sql/nacos-schema.sql | 176 ++++++++++++++++++ .../service/impl/AdminUserInitService.java | 1 - video-auth/Dockerfile | 3 +- video-gateway/pom.xml | 6 + .../gateway/filter/AuthGlobalFilter.java | 2 +- .../src/main/resources/application-prod.yml | 82 ++++++-- .../src/main/resources/application.yml | 30 +-- 11 files changed, 324 insertions(+), 46 deletions(-) create mode 100644 sql/nacos-schema.sql diff --git a/build-and-deploy.bat b/build-and-deploy.bat index b33d0d8..f1328a0 100644 --- a/build-and-deploy.bat +++ b/build-and-deploy.bat @@ -9,12 +9,22 @@ cd sentinel-dashboard docker build -t sentinel-dashboard:1.8.6 . cd .. -echo 3. 启动Docker Compose... +echo 3. 获取本机IP地址... +for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /r "IPv4.*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do ( + set HOST_IP=%%a + goto :found_ip +) +:found_ip +set HOST_IP=%HOST_IP:~1% +echo 使用IP地址: %HOST_IP% + +echo 4. 启动Docker Compose... +set HOST_IP=%HOST_IP% docker-compose up -d echo 部署完成! echo 服务访问地址: -echo - 网关: http://localhost:9000 -echo - Nacos: http://localhost:8848/nacos -echo - Sentinel: http://localhost:8080 -echo - MinIO: http://localhost:9001 \ No newline at end of file +echo - 网关: http://%HOST_IP%:9000 +echo - Nacos: http://%HOST_IP%:8848/nacos +echo - Sentinel: http://%HOST_IP%:8880 +echo - MinIO: http://%HOST_IP%:9001 \ No newline at end of file diff --git a/build-and-deploy.sh b/build-and-deploy.sh index b7ffd0e..7995c85 100644 --- a/build-and-deploy.sh +++ b/build-and-deploy.sh @@ -43,19 +43,24 @@ EOF cd .. fi -echo "4. 启动Docker Compose..." +echo "4. 获取本机IP地址..." +HOST_IP=$(hostname -I | awk '{print $1}') +echo "使用IP地址: $HOST_IP" + +echo "5. 启动Docker Compose..." +export HOST_IP=$HOST_IP + # 检查docker-compose是否可用 if command -v docker-compose &> /dev/null; then - docker-compose up -d + HOST_IP=$HOST_IP docker-compose up -d else echo "警告: docker-compose命令不可用,尝试使用docker compose命令" - docker compose up -d + HOST_IP=$HOST_IP docker compose up -d fi echo "部署完成!" echo "服务访问地址:" -SERVER_IP=$(hostname -I | awk '{print $1}') -echo "- 网关: http://${SERVER_IP}:9000" -echo "- Nacos: http://${SERVER_IP}:8848/nacos" -echo "- Sentinel: http://${SERVER_IP}:8080" -echo "- MinIO: http://${SERVER_IP}:9001" \ No newline at end of file +echo "- 网关: http://${HOST_IP}:9000" +echo "- Nacos: http://${HOST_IP}:8848/nacos" +echo "- Sentinel: http://${HOST_IP}:8880" +echo "- MinIO: http://${HOST_IP}:9001" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7f3732b..be6a04b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,6 @@ version: '3.8' +name: video-platform services: # 基础设施服务 mysql: @@ -40,6 +41,10 @@ services: - MODE=standalone - JVM_XMS=512m - JVM_XMX=512m + # 添加Nacos参数,确保正确处理服务注册 + - NACOS_AUTH_ENABLE=false + - PREFER_HOST_MODE=hostname + - NACOS_SERVER_IP=${HOST_IP:-127.0.0.1} ports: - "8848:8848" - "9848:9848" @@ -94,7 +99,7 @@ services: container_name: sentinel restart: always ports: - - "8080:8080" + - "8880:8080" networks: - video-network @@ -113,9 +118,15 @@ services: - NACOS_PORT=8848 - SENTINEL_HOST=sentinel - SENTINEL_PORT=8080 + - JAVA_OPTS=-Xms128m -Xmx128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m + # 添加IP环境变量,用于服务注册 + - GATEWAY_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - - sentinel + deploy: + resources: + limits: + memory: 256M networks: - video-network @@ -133,6 +144,8 @@ services: - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 + # 添加IP环境变量,用于服务注册 + - AUTH_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql @@ -154,6 +167,8 @@ services: - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 + # 添加IP环境变量,用于服务注册 + - USER_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql @@ -182,6 +197,8 @@ services: - MINIO_ACCESS_KEY=minioadmin - MINIO_SECRET_KEY=minioadmin - MINIO_BUCKET=video-platform + # 添加IP环境变量,用于服务注册 + - CONTENT_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql @@ -205,6 +222,8 @@ services: - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 + # 添加IP环境变量,用于服务注册 + - ADMIN_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql @@ -226,6 +245,8 @@ services: - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 + # 添加IP环境变量,用于服务注册 + - COMMENT_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql @@ -247,6 +268,8 @@ services: - MYSQL_PORT=3306 - REDIS_HOST=redis - REDIS_PORT=6379 + # 添加IP环境变量,用于服务注册 + - RECOMMEND_IP=${HOST_IP:-127.0.0.1} depends_on: - nacos - mysql diff --git a/sql/init.sql b/sql/init.sql index fec3365..1338904 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -5,6 +5,8 @@ CREATE DATABASE IF NOT EXISTS `video_content` CHARACTER SET utf8mb4 COLLATE utf8 CREATE DATABASE IF NOT EXISTS `video_comment` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE IF NOT EXISTS `video_recommend` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE IF NOT EXISTS `video_admin` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- 创建Nacos配置数据库 +CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. 认证数据库(video_auth) USE `video_auth`; diff --git a/sql/nacos-schema.sql b/sql/nacos-schema.sql new file mode 100644 index 0000000..5a73c82 --- /dev/null +++ b/sql/nacos-schema.sql @@ -0,0 +1,176 @@ +-- 创建Nacos配置数据库 +CREATE DATABASE IF NOT EXISTS nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +USE nacos_config; + +-- Nacos数据库初始化脚本 +CREATE TABLE IF NOT EXISTS `config_info` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) DEFAULT NULL COMMENT 'group_id', + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description', + `c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage', + `effect` varchar(64) DEFAULT NULL COMMENT '配置生效目标', + `type` varchar(64) DEFAULT NULL COMMENT '配置类型', + `c_schema` text COMMENT '配置模式', + `encrypted_data_key` text NOT NULL COMMENT '密钥', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_info'; + +CREATE TABLE IF NOT EXISTS `config_info_aggr` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `datum_id` varchar(255) NOT NULL COMMENT 'datum_id', + `content` longtext NOT NULL COMMENT '内容', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='增加租户字段'; + +CREATE TABLE IF NOT EXISTS `config_info_beta` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `encrypted_data_key` text NOT NULL COMMENT '密钥', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_info_beta'; + +CREATE TABLE IF NOT EXISTS `config_info_tag` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `tag_id` varchar(128) NOT NULL COMMENT 'tag_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_info_tag'; + +CREATE TABLE IF NOT EXISTS `config_tags_relation` ( + `id` bigint NOT NULL COMMENT 'id', + `tag_name` varchar(128) NOT NULL COMMENT 'tag_name', + `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `nid` bigint NOT NULL AUTO_INCREMENT COMMENT 'nid', + PRIMARY KEY (`nid`), + UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_tag_relation'; + +CREATE TABLE IF NOT EXISTS `group_capacity` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', + `quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', + `usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量', + `max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', + `max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_group_id` (`group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='集群、各Group容量信息表'; + +CREATE TABLE IF NOT EXISTS `his_config_info` ( + `id` bigint unsigned NOT NULL COMMENT 'id', + `nid` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `op_type` char(10) DEFAULT NULL COMMENT 'operation type', + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `encrypted_data_key` text NOT NULL COMMENT '密钥', + PRIMARY KEY (`nid`), + KEY `idx_gmt_create` (`gmt_create`), + KEY `idx_gmt_modified` (`gmt_modified`), + KEY `idx_did` (`data_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='多租户改造'; + +CREATE TABLE IF NOT EXISTS `tenant_capacity` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', + `quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', + `usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量', + `max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', + `max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='租户容量信息表'; + +CREATE TABLE IF NOT EXISTS `tenant_info` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `kp` varchar(128) NOT NULL COMMENT 'kp', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `tenant_name` varchar(128) DEFAULT '' COMMENT 'tenant_name', + `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc', + `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source', + `gmt_create` bigint NOT NULL COMMENT '创建时间', + `gmt_modified` bigint NOT NULL COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='tenant_info'; + +CREATE TABLE IF NOT EXISTS `users` ( + `username` varchar(50) NOT NULL COMMENT 'username', + `password` varchar(500) NOT NULL COMMENT 'password', + `enabled` tinyint(1) NOT NULL COMMENT 'enabled', + PRIMARY KEY (`username`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin; + +CREATE TABLE IF NOT EXISTS `roles` ( + `username` varchar(50) NOT NULL COMMENT 'username', + `role` varchar(50) NOT NULL COMMENT 'role', + UNIQUE KEY `uk_username_role` (`username`,`role`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin; + +CREATE TABLE IF NOT EXISTS `permissions` ( + `role` varchar(50) NOT NULL COMMENT 'role', + `resource` varchar(255) NOT NULL COMMENT 'resource', + `action` varchar(8) NOT NULL COMMENT 'action', + UNIQUE KEY `uk_role_permission` (`role`,`resource`,`action`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin; + +-- 初始化Nacos用户 +INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1); +INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN'); \ No newline at end of file diff --git a/video-admin/src/main/java/com/nuaa/video/admin/service/impl/AdminUserInitService.java b/video-admin/src/main/java/com/nuaa/video/admin/service/impl/AdminUserInitService.java index 1f43de1..5902718 100644 --- a/video-admin/src/main/java/com/nuaa/video/admin/service/impl/AdminUserInitService.java +++ b/video-admin/src/main/java/com/nuaa/video/admin/service/impl/AdminUserInitService.java @@ -4,7 +4,6 @@ import com.nuaa.video.admin.entity.AdminUser; import com.nuaa.video.admin.entity.AdminUserRole; import com.nuaa.video.admin.mapper.AdminUserMapper; import com.nuaa.video.admin.mapper.AdminUserRoleMapper; -import com.nuaa.video.admin.security.AdminUserDetails; import com.nuaa.video.admin.service.PasswordService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/video-auth/Dockerfile b/video-auth/Dockerfile index b1b8202..bb14fc9 100644 --- a/video-auth/Dockerfile +++ b/video-auth/Dockerfile @@ -4,4 +4,5 @@ WORKDIR /app COPY target/video-auth-*.jar app.jar -ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file +# 添加JVM内存优化配置 +ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar app.jar"] \ No newline at end of file diff --git a/video-gateway/pom.xml b/video-gateway/pom.xml index c26f197..d5e4816 100644 --- a/video-gateway/pom.xml +++ b/video-gateway/pom.xml @@ -36,6 +36,12 @@ spring-cloud-starter-alibaba-sentinel + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + com.alibaba.cloud diff --git a/video-gateway/src/main/java/com/nuaa/video/gateway/filter/AuthGlobalFilter.java b/video-gateway/src/main/java/com/nuaa/video/gateway/filter/AuthGlobalFilter.java index 6fb68a5..1cc8a5a 100644 --- a/video-gateway/src/main/java/com/nuaa/video/gateway/filter/AuthGlobalFilter.java +++ b/video-gateway/src/main/java/com/nuaa/video/gateway/filter/AuthGlobalFilter.java @@ -41,7 +41,7 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered { @Value("${jwt.token-header:Authorization}") private String tokenHeader; - @Value("${gateway.ignore.urls:/auth/login,/auth/register,/auth/captcha}") + @Value("${spring.cloud.gateway.ignore.urls}") private List ignoreUrls; private final AntPathMatcher pathMatcher = new AntPathMatcher(); diff --git a/video-gateway/src/main/resources/application-prod.yml b/video-gateway/src/main/resources/application-prod.yml index baea005..c44083a 100644 --- a/video-gateway/src/main/resources/application-prod.yml +++ b/video-gateway/src/main/resources/application-prod.yml @@ -10,50 +10,100 @@ spring: server-addr: ${NACOS_HOST:nacos}:${NACOS_PORT:8848} namespace: public group: DEFAULT_GROUP - sentinel: - transport: - dashboard: ${SENTINEL_HOST:sentinel}:${SENTINEL_PORT:8080} - port: 8720 - eager: true + # 移除以下健康检查配置 + # heart-beat-interval: 5000 + # heart-beat-timeout: 15000 + register-enabled: true + watch-delay: 30000 + watch.enabled: true + loadbalancer: + ribbon: + enabled: false + cache: + enabled: true + caffeine: + spec: initialCapacity=500,expireAfterWrite=5s + # 添加重试机制 gateway: discovery: locator: enabled: true lower-case-service-id: true + url-expression: "'lb://'+serviceId" + # 添加重试配置 + httpclient: + connect-timeout: 5000 + response-timeout: 10000 routes: + # 保持原有路由配置不变,但移除StripPrefix过滤器 - id: video-auth uri: lb://video-auth predicates: - Path=/auth/** filters: - - StripPrefix=1 + # 移除 StripPrefix=1 过滤器 + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST + backoff: + firstBackoff: 1000ms + maxBackoff: 5000ms + factor: 2 + basedOnPreviousValue: false - id: video-user uri: lb://video-user predicates: - Path=/user/** filters: - - StripPrefix=1 + # 移除 StripPrefix=1 过滤器 + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST - id: video-content uri: lb://video-content predicates: - Path=/content/** filters: - - StripPrefix=1 - - id: video-admin - uri: lb://video-admin - predicates: - - Path=/admin/** - filters: - - StripPrefix=1 + # 移除 StripPrefix=1 过滤器 + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST - id: video-comment uri: lb://video-comment predicates: - Path=/comment/** filters: - - StripPrefix=1 + # 移除 StripPrefix=1 过滤器 + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST + - id: video-admin + uri: lb://video-admin + predicates: + - Path=/admin/** + filters: + # 移除 StripPrefix=1 过滤器 + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST - id: video-recommend uri: lb://video-recommend predicates: - Path=/recommend/** filters: - - StripPrefix=1 \ No newline at end of file + # 移除 StripPrefix=1 过滤器 + - name: Retry + args: + retries: 3 + statuses: BAD_GATEWAY,SERVICE_UNAVAILABLE + methods: GET,POST \ No newline at end of file diff --git a/video-gateway/src/main/resources/application.yml b/video-gateway/src/main/resources/application.yml index a6c34a3..65be75e 100644 --- a/video-gateway/src/main/resources/application.yml +++ b/video-gateway/src/main/resources/application.yml @@ -25,6 +25,18 @@ spring: group: ${NACOS_GROUP:DEFAULT_GROUP} refresh: true gateway: + ignore: + urls: + - /**/auth/login + - /**/auth/register + - /**/auth/captcha + - /content/video/public/** + - /content/category/tree + - /content/category/list + - /comment/reply/public/** + - /comment/public/** + - /admin/auth/captcha + - /admin/auth/login discovery: locator: enabled: true @@ -34,38 +46,32 @@ spring: uri: lb://video-auth predicates: - Path=/auth/** - filters: - - StripPrefix=1 + # 移除 StripPrefix 过滤器 - id: video-user uri: lb://video-user predicates: - Path=/user/** - filters: - - StripPrefix=1 + # 移除 StripPrefix 过滤器 - id: video-content uri: lb://video-content predicates: - Path=/content/** - filters: - - StripPrefix=1 + # 移除 StripPrefix 过滤器 - id: video-comment uri: lb://video-comment predicates: - Path=/comment/** - filters: - - StripPrefix=1 + # 移除 StripPrefix 过滤器 - id: video-recommend uri: lb://video-recommend predicates: - Path=/recommend/** - filters: - - StripPrefix=1 + # 移除 StripPrefix 过滤器 - id: video-admin uri: lb://video-admin predicates: - Path=/admin/** - filters: - - StripPrefix=0 + # 移除 StripPrefix 过滤器 sentinel: transport: dashboard: ${SENTINEL_DASHBOARD_HOST:5.180.253.115}:${SENTINEL_DASHBOARD_PORT:8080}