Bladeren bron

平滑启动

mac 2 jaren geleden
bovenliggende
commit
0bf1c1aec0
2 gewijzigde bestanden met toevoegingen van 6 en 66 verwijderingen
  1. 6 1
      .drone.yml
  2. 0 65
      kxs-gateway/src/main/java/com/kxs/gateway/api/config/ServiceChangeNotifier.java

+ 6 - 1
.drone.yml

@@ -891,6 +891,7 @@ steps:
       command_timeout: 2m
       script:
         - echo ====开始部署=======
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=kxs-system-biz&ip=172.27.251.56&port=8060&weight=0'
         - cd /home/ABServer/
         - cp -r /home/ABServer/deploy-ready/kxs-system /home/ABServer/webroot/
         - docker stop kxs-system && docker rm kxs-system && docker-compose up -d kxs-system
@@ -938,11 +939,15 @@ steps:
       command_timeout: 5m
       script:
         - echo ====开始部署=======
-        - sleep 90s
+        - sleep 30s
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=kxs-system-biz&ip=172.27.251.56&port=8060&weight=1'
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=kxs-system-biz&ip=172.26.230.195&port=8060&weight=0'
         - cd /home/ABServer/
         - cp -r /home/ABServer/deploy-ready/kxs-system /home/ABServer/webroot/
         - docker stop kxs-system && docker rm kxs-system && docker-compose up -d kxs-system
         # - docker restart nodeServer1
+        - sleep 30s
+        - curl -X PUT 'http://mse-78d0edb13-nacos-ans.mse.aliyuncs.com:8848/nacos/v1/ns/instance?serviceName=kxs-system-biz&ip=172.26.230.195&port=8060&weight=1'
         - echo ====部署成功=======
 
 trigger:

+ 0 - 65
kxs-gateway/src/main/java/com/kxs/gateway/api/config/ServiceChangeNotifier.java

@@ -1,65 +0,0 @@
-package com.kxs.gateway.api.config;
-
-import com.alibaba.nacos.api.common.Constants;
-import com.alibaba.nacos.client.naming.event.InstancesChangeEvent;
-import com.alibaba.nacos.common.notify.NotifyCenter;
-import com.alibaba.nacos.common.notify.listener.Subscriber;
-import com.alibaba.nacos.common.notify.Event;
-import jakarta.annotation.PostConstruct;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.cloud.loadbalancer.core.CachingServiceInstanceListSupplier;
-
-/**
- * 服务变更监听
- *
- * @author butterfly
- * @date 2023-09-24
- */
-@Slf4j
-@Component
-public class ServiceChangeNotifier extends Subscriber<InstancesChangeEvent> {
-    
-    /**
-     * 由于会有多个类型的 CacheManager bean, 这里的 defaultLoadBalancerCacheManager 名称不可修改
-     */
-    @Resource
-	private CacheManager defaultLoadBalancerCacheManager;
-
-	@PostConstruct
-	public void init() {
-        // 注册当前自定义的订阅者以获取通知
-		NotifyCenter.registerSubscriber(this);
-	}
-
-	@Override
-	public void onEvent(InstancesChangeEvent event) {
-		String serviceName = event.getServiceName();
-        // 使用 dubbo 时包含 rpc 服务类会注册以 providers: 或者 consumers: 开头的服务
-        // 由于不是正式的服务, 这里需要进行排除, 如果未使用 dubbo 则不需要该处理
-		if (serviceName.contains(":")) {
-			return;
-		}
-        // serviceName 格式为 groupName@@name
-        String split = Constants.SERVICE_INFO_SPLITER;
-		if (serviceName.contains(split)) {
-			serviceName = serviceName.substring(serviceName.indexOf(split) + split.length());
-		}
-		log.info("服务上下线: {}", serviceName);
-		// 手动更新服务列表
-        Cache cache = defaultLoadBalancerCacheManager.getCache(
-            CachingServiceInstanceListSupplier.SERVICE_INSTANCE_CACHE_NAME);
-		if (cache != null) {
-			cache.evictIfPresent(serviceName);
-		}
-	}
-
-	@Override
-	public Class<? extends Event> subscribeType() {
-		return InstancesChangeEvent.class;
-	}
-
-}