diff --git a/docker-compose.yml b/docker-compose.yml index fdc3531..ca64613 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,6 @@ # 资金服务平台 - Docker Compose 编排配置 -# 版本: 1.0 +# 版本: 1.1 +# 支持多租户混合模式:VIP专属实例 + 普通租户共享实例 version: '3.8' @@ -158,14 +159,16 @@ services: networks: - fund-network - # 系统服务 + # ==================== 系统服务(多租户混合模式) ==================== + + # 系统服务 - 共享实例(供所有租户使用) fund-sys: build: context: . dockerfile: Dockerfile args: MODULE: fund-sys - container_name: fund-sys + container_name: fund-sys-shared restart: unless-stopped environment: SERVER_PORT: 8100 @@ -181,6 +184,9 @@ services: REDIS_HOST: redis REDIS_PORT: 6379 JAVA_OPTS: -Xms256m -Xmx512m + # 租户元数据 - 共享实例(无特定租户组,所有租户可用) + TENANT_ID: "1" + TENANT_GROUP: "" ports: - "8100:8100" depends_on: @@ -199,6 +205,94 @@ services: networks: - fund-network + # 系统服务 - VIP_001 专属实例 + fund-sys-vip001: + build: + context: . + dockerfile: Dockerfile + args: + MODULE: fund-sys + container_name: fund-sys-vip001 + restart: unless-stopped + environment: + SERVER_PORT: 8101 + SPRING_PROFILES_ACTIVE: docker + NACOS_SERVER_ADDR: nacos:8848 + NACOS_USERNAME: nacos + NACOS_PASSWORD: nacos + MYSQL_HOST: mysql + MYSQL_PORT: 3306 + MYSQL_DB: fund_platform + MYSQL_USER: root + MYSQL_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123} + REDIS_HOST: redis + REDIS_PORT: 6379 + JAVA_OPTS: -Xms256m -Xmx512m + # 租户元数据 - VIP_001 专属实例 + TENANT_ID: "1001" + TENANT_GROUP: "TENANT_VIP_001" + ports: + - "8101:8101" + depends_on: + nacos: + condition: service_healthy + mysql: + condition: service_healthy + redis: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8101/actuator/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 120s + networks: + - fund-network + + # 系统服务 - VIP_002 专属实例(可选,按需启用) + # fund-sys-vip002: + # build: + # context: . + # dockerfile: Dockerfile + # args: + # MODULE: fund-sys + # container_name: fund-sys-vip002 + # restart: unless-stopped + # environment: + # SERVER_PORT: 8102 + # SPRING_PROFILES_ACTIVE: docker + # NACOS_SERVER_ADDR: nacos:8848 + # NACOS_USERNAME: nacos + # NACOS_PASSWORD: nacos + # MYSQL_HOST: mysql + # MYSQL_PORT: 3306 + # MYSQL_DB: fund_platform + # MYSQL_USER: root + # MYSQL_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123} + # REDIS_HOST: redis + # REDIS_PORT: 6379 + # JAVA_OPTS: -Xms256m -Xmx512m + # # 租户元数据 - VIP_002 专属实例 + # TENANT_ID: "1002" + # TENANT_GROUP: "TENANT_VIP_002" + # ports: + # - "8102:8102" + # depends_on: + # nacos: + # condition: service_healthy + # mysql: + # condition: service_healthy + # redis: + # condition: service_healthy + # healthcheck: + # test: ["CMD", "curl", "-f", "http://localhost:8102/actuator/health"] + # interval: 30s + # timeout: 10s + # retries: 5 + # start_period: 120s + # networks: + # - fund-network + # 客户服务 fund-cust: build: diff --git a/docker/prometheus/prometheus.yml b/docker/prometheus/prometheus.yml index 13b897d..b5a58da 100644 --- a/docker/prometheus/prometheus.yml +++ b/docker/prometheus/prometheus.yml @@ -54,18 +54,25 @@ scrape_configs: target_label: instance replacement: 'fund-gateway' - # 系统服务 + # 系统服务 - 多租户混合模式监控 - job_name: 'fund-sys' metrics_path: '/actuator/prometheus' static_configs: + # 共享实例 - targets: ['fund-sys:8100'] labels: application: 'fund-sys' service: 'business' - relabel_configs: - - source_labels: [__address__] - target_label: instance - replacement: 'fund-sys' + tenant_mode: 'shared' + instance: 'fund-sys-shared' + # VIP_001 专属实例 + - targets: ['fund-sys-vip001:8101'] + labels: + application: 'fund-sys' + service: 'business' + tenant_mode: 'vip' + tenant_group: 'TENANT_VIP_001' + instance: 'fund-sys-vip001' # 客户服务 - job_name: 'fund-cust' diff --git a/fund-common/src/main/java/com/fundplatform/common/nacos/NacosMetadataConfig.java b/fund-common/src/main/java/com/fundplatform/common/nacos/NacosMetadataConfig.java index d4cc5a2..4c0a208 100644 --- a/fund-common/src/main/java/com/fundplatform/common/nacos/NacosMetadataConfig.java +++ b/fund-common/src/main/java/com/fundplatform/common/nacos/NacosMetadataConfig.java @@ -15,9 +15,15 @@ import java.util.Map; * Nacos 服务注册元数据配置 * *
服务启动时自动注册租户标签到 Nacos,支持租户感知的负载均衡
+ * + *支持两种配置方式:
+ *