This is an automated email from the ASF dual-hosted git repository.

jackxu2011 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/linkis.git


The following commit(s) were added to refs/heads/master by this push:
     new f876a73264 Spring cloud version upgraded, loadBalancer replaced ribbon 
(#4958)
f876a73264 is described below

commit f876a73264fb88e82be0d811529b69b187ed7b4b
Author: ChengJie1053 <[email protected]>
AuthorDate: Fri Mar 15 10:34:34 2024 +0800

    Spring cloud version upgraded, loadBalancer replaced ribbon (#4958)
    
    * Spring cloud version upgraded and loadBalancer replaced ribbon
    
    * Modifying the spring cloud gateway
    
    * optimize code
    
    * Modifying linkis rpc
    
    * Optimized code linkis rpc module
    
    * Modify known-dependencies.txt
    
    * Modify RPCReceiveRemote
    
    * Add EurekaClientCacheManualRefresher
    
    * Move the loadbalancer module
    
    * optimize ServiceInstancePriorityLoadBalancer
    
    * Modify application-engineconn.yml
    
    * Temporarily hide the gateway test case
    
    * Unhide test cases
    
    * Modify application.yml
    
    * Modify configmap-linkis-config.yaml
    
    * add application.yml
    
    * Merge the latest code and resolve conflicts
    
    * using commons-lang3 ExceptionUtils instead of commons-lang and remove 
useless code
    
    * Eureka refresh is called via reflection instead
    
    * common-lang relies on eureka-client, replacing common-lang with 
common-lang3
    
    * Compatible with nacos
    
    * add nacos refresher
    
    ---------
    
    Co-authored-by: peacewong <[email protected]>
---
 linkis-commons/linkis-module/pom.xml               |   4 +
 .../apache/linkis/DataWorkCloudApplication.java    |   2 +
 .../linkis/swagger/SwaggerBeanPostProcessor.java   |  65 ++++++++
 linkis-commons/linkis-rpc/pom.xml                  |   9 ++
 .../linkis/rpc/conf/CacheManualRefresher.java}     |  18 +--
 .../apache/linkis/rpc/conf/DynamicFeignClient.java | 126 +++++++++++++++
 .../rpc/conf/EurekaClientCacheManualRefresher.java | 118 ++++++++++++++
 .../linkis/rpc/conf/FeignRequestInterceptor.java   |  64 ++++++++
 .../rpc/conf/NacosClientCacheManualRefresher.java} |  34 ++--
 .../apache/linkis/rpc/constant/RpcConstant.java}   |  18 +--
 .../rpc/errorcode/LinkisRpcErrorCodeSummary.java   |   2 +
 .../GatewayLoadBalancerConfiguration.java}         |  19 +--
 .../LinkisLoadBalancerClientConfiguration.java     |  39 +++++
 .../ServiceInstancePriorityLoadBalancer.java       | 171 +++++++++++++++++++++
 .../message/utils/LoadBalancerOptionsUtils.java    |  44 ------
 .../org/apache/linkis/rpc/BaseRPCSender.scala      |  49 ++++--
 .../org/apache/linkis/rpc/RPCReceiveRemote.scala   |  15 +-
 .../org/apache/linkis/rpc/RPCSpringBeanCache.scala |  23 ++-
 .../linkis/rpc/interceptor/RPCServerLoader.scala   |  23 +--
 .../common/SingleInstanceRPCLoadBalancer.scala     |  55 -------
 .../SpringCloudFeignConfigurationCache.scala       |  12 +-
 .../linkis/rpc/sender/SpringMVCRPCSender.scala     | 120 ++-------------
 .../org/apache/linkis/rpc/utils/RPCUtils.scala     |  12 +-
 .../ecm/server/operator/EngineConnLogOperator.java |   2 +-
 .../service/engine/DefaultEngineReuseService.java  |   2 +-
 .../rm/service/impl/UserResourceService.java       |   2 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../linkis/templates/configmap-linkis-config.yaml  |  91 ++++++++++-
 .../package/conf/application-engineconn.yml        |  13 +-
 linkis-dist/package/conf/application-linkis.yml    |   9 ++
 linkis-dist/package/conf/linkis.properties         |   4 +-
 .../client/impl/ElasticSearchExecutorImpl.java     |   2 +-
 .../impala/client/thrift/ImpalaThriftClient.java   |   2 +-
 .../src/test/resources/application.properties      |   5 +-
 .../restful/api/TenantConfigrationRestfulApi.java  |   2 +-
 .../restful/api/UserIpConfigrationRestfulApi.java  |   2 +-
 .../service/impl/TenantConfigServiceImpl.java      |   2 +-
 .../service/impl/UserIpConfigServiceImpl.java      |   2 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.yml             |  13 ++
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../src/test/resources/application.properties      |   5 +-
 .../linkis-service-discovery/linkis-eureka/pom.xml |  22 +++
 .../gateway/authentication/dao/TokenDaoTest.java   |   3 +-
 .../src/test/resources/application.properties      |   5 +-
 .../linkis-gateway-core/pom.xml                    |  10 ++
 .../config/GatewaySpringConfiguration.scala        |  15 +-
 .../linkis-spring-cloud-gateway/pom.xml            |   4 -
 .../http/GatewayAuthorizationFilter.java           |  24 ++-
 .../SpringCloudGatewayConfiguration.scala          |  76 ++-------
 pom.xml                                            |  19 +--
 tool/dependencies/known-dependencies.txt           | 157 +++++++++++++++++++
 59 files changed, 1126 insertions(+), 459 deletions(-)

diff --git a/linkis-commons/linkis-module/pom.xml 
b/linkis-commons/linkis-module/pom.xml
index f92edb8216..328480f25b 100644
--- a/linkis-commons/linkis-module/pom.xml
+++ b/linkis-commons/linkis-module/pom.xml
@@ -262,6 +262,10 @@
       <artifactId>jedis</artifactId>
       <version>${jedis.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-openfeign-core</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
 
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
index 6f0256fdfa..5610ded412 100644
--- 
a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
+++ 
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
@@ -41,6 +41,7 @@ import 
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import 
org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.ConfigurableApplicationContext;
@@ -66,6 +67,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
 @SpringBootApplication(scanBasePackages = {"org.apache.linkis", 
"com.webank.wedatasphere"})
 @EnableDiscoveryClient
 @RefreshScope
+@EnableFeignClients
 public class DataWorkCloudApplication extends SpringBootServletInitializer {
   private static final Log logger = 
LogFactory.getLog(DataWorkCloudApplication.class);
 
diff --git 
a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/swagger/SwaggerBeanPostProcessor.java
 
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/swagger/SwaggerBeanPostProcessor.java
new file mode 100644
index 0000000000..f07b7ed0a6
--- /dev/null
+++ 
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/swagger/SwaggerBeanPostProcessor.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.swagger;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import 
org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
+
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import 
springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
+
+@Configuration
+public class SwaggerBeanPostProcessor implements BeanPostProcessor {
+  @Override
+  public Object postProcessAfterInitialization(Object bean, String beanName) 
throws BeansException {
+    if (bean instanceof WebMvcRequestHandlerProvider
+        || bean instanceof WebFluxRequestHandlerProvider) {
+      List<RequestMappingInfoHandlerMapping> handlerMappings = 
getHandlerMappings(bean);
+      customizeSpringfoxHandlerMappings(handlerMappings);
+    }
+    return bean;
+  }
+
+  private <T extends RequestMappingInfoHandlerMapping> void 
customizeSpringfoxHandlerMappings(
+      List<T> mappings) {
+    List<T> copy =
+        mappings.stream()
+            .filter(mapping -> mapping.getPatternParser() == null)
+            .collect(Collectors.toList());
+    mappings.clear();
+    mappings.addAll(copy);
+  }
+
+  @SuppressWarnings("unchecked")
+  private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object 
bean) {
+    try {
+      Field field = ReflectionUtils.findField(bean.getClass(), 
"handlerMappings");
+      field.setAccessible(true);
+      return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+    } catch (IllegalArgumentException | IllegalAccessException e) {
+      throw new IllegalStateException(e);
+    }
+  }
+}
diff --git a/linkis-commons/linkis-rpc/pom.xml 
b/linkis-commons/linkis-rpc/pom.xml
index 70ef8e6bc7..a3354e0e0e 100644
--- a/linkis-commons/linkis-rpc/pom.xml
+++ b/linkis-commons/linkis-rpc/pom.xml
@@ -40,8 +40,17 @@
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-commons</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>org.springframework.cloud</groupId>
+          <artifactId>spring-cloud-loadbalancer</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-loadbalancer</artifactId>
+      <version>${spring-cloud-common.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-openfeign</artifactId>
diff --git 
a/linkis-commons/linkis-rpc/src/test/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtilsTest.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/CacheManualRefresher.java
similarity index 61%
rename from 
linkis-commons/linkis-rpc/src/test/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtilsTest.java
rename to 
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/CacheManualRefresher.java
index d265371d60..dbdf52a1fc 100644
--- 
a/linkis-commons/linkis-rpc/src/test/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtilsTest.java
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/CacheManualRefresher.java
@@ -15,20 +15,8 @@
  * limitations under the License.
  */
 
-package org.apache.linkis.rpc.message.utils;
+package org.apache.linkis.rpc.conf;
 
-import feign.Request;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-public class LoadBalancerOptionsUtilsTest {
-
-  @Test
-  @DisplayName("getDefaultOptionsTest")
-  public void getDefaultOptionsTest() throws NoSuchFieldException, 
IllegalAccessException {
-
-    Request.Options defaultOptions = 
LoadBalancerOptionsUtils.getDefaultOptions();
-    Assertions.assertNotNull(defaultOptions);
-  }
+public interface CacheManualRefresher {
+  void refresh();
 }
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/DynamicFeignClient.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/DynamicFeignClient.java
new file mode 100644
index 0000000000..dd1f6a7dc9
--- /dev/null
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/DynamicFeignClient.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.conf;
+
+import org.apache.linkis.DataWorkCloudApplication;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.springframework.cloud.openfeign.FeignClientBuilder;
+import org.springframework.cloud.openfeign.FeignClientFactoryBean;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+@Component
+public class DynamicFeignClient<T> {
+
+  private FeignClientBuilder feignClientBuilder;
+
+  private final ConcurrentHashMap<String, T> CACHE_BEAN = new 
ConcurrentHashMap();
+
+  public DynamicFeignClient() {
+    this.feignClientBuilder =
+        new 
FeignClientBuilder(DataWorkCloudApplication.getApplicationContext());
+  }
+
+  public T getFeignClient(final Class<T> type, final String serviceName) {
+    return getFeignClient(type, serviceName, null);
+  }
+
+  public T getFeignClient(
+      final Class<T> type, final Class<?> fallbackFactory, final String 
serviceName) {
+    return getFeignClient(type, fallbackFactory, serviceName, null);
+  }
+
+  public T getFeignClient(
+      final Class<T> type,
+      final FeignClientFactoryBean clientFactoryBean,
+      final String serviceName) {
+    return getFeignClient(type, clientFactoryBean, serviceName, null);
+  }
+
+  public T getFeignClient(final Class<T> type, String serviceName, final 
String serviceUrl) {
+    String k = serviceName;
+    if (StringUtils.isNotEmpty(serviceUrl)) {
+      k = serviceUrl;
+    }
+    return CACHE_BEAN.computeIfAbsent(
+        k,
+        (t) -> {
+          FeignClientBuilder.Builder<T> builder =
+              this.feignClientBuilder.forType(type, serviceName);
+          if (StringUtils.isNotEmpty(serviceUrl)) {
+            builder.url(serviceUrl);
+          }
+          return builder.build();
+        });
+  }
+
+  public T getFeignClient(
+      final Class<T> type,
+      final Class<?> fallbackFactory,
+      final String serviceName,
+      final String serviceUrl) {
+    String k = serviceName;
+    if (StringUtils.isNotEmpty(serviceUrl)) {
+      k = serviceUrl;
+    }
+    return CACHE_BEAN.computeIfAbsent(
+        k,
+        (t) -> {
+          FeignClientFactoryBean feignClientFactoryBean = new 
FeignClientFactoryBean();
+          feignClientFactoryBean.setFallbackFactory(fallbackFactory);
+          FeignClientBuilder.Builder<T> builder =
+              this.feignClientBuilder.forType(type, feignClientFactoryBean, 
serviceName);
+          if (StringUtils.isNotEmpty(serviceUrl)) {
+            builder.url(serviceUrl);
+          }
+          return builder.build();
+        });
+  }
+
+  public T getFeignClient(
+      final Class<T> type,
+      final FeignClientFactoryBean clientFactoryBean,
+      final String serviceName,
+      final String serviceUrl) {
+    String k = serviceName;
+    if (StringUtils.isNotEmpty(serviceUrl)) {
+      k = serviceUrl;
+    }
+    return CACHE_BEAN.computeIfAbsent(
+        k,
+        (t) -> {
+          FeignClientBuilder.Builder<T> builder =
+              this.feignClientBuilder.forType(type, clientFactoryBean, 
serviceName);
+          if (StringUtils.isNotEmpty(serviceUrl)) {
+            builder.url(serviceUrl);
+          }
+          return builder.build();
+        });
+  }
+
+  private T getFromCache(final String serviceName, final String serviceUrl) {
+    if (StringUtils.isNotEmpty(serviceUrl)) {
+      return CACHE_BEAN.get(serviceUrl);
+    } else {
+      return CACHE_BEAN.get(serviceName);
+    }
+  }
+}
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/EurekaClientCacheManualRefresher.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/EurekaClientCacheManualRefresher.java
new file mode 100644
index 0000000000..7394698672
--- /dev/null
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/EurekaClientCacheManualRefresher.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.conf;
+
+import org.apache.commons.lang3.exception.ExceptionUtils;
+
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ReflectionUtils;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.time.Duration;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component
+@ConditionalOnClass(name = 
"org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration")
+public class EurekaClientCacheManualRefresher implements CacheManualRefresher {
+  private static final Logger logger =
+      LoggerFactory.getLogger(EurekaClientCacheManualRefresher.class);
+  private final AtomicBoolean isRefreshing = new AtomicBoolean(false);
+  private final ExecutorService refreshExecutor = 
Executors.newSingleThreadExecutor();
+  private final String cacheRefreshTaskField = "cacheRefreshTask";
+  private Object cacheRefreshTask;
+
+  private long lastRefreshMillis = 0;
+  private final Duration refreshIntervalDuration = Duration.ofSeconds(3);
+
+  @Autowired private BeanFactory beanFactory;
+
+  public void refreshOnExceptions(Exception e, List<Class<? extends 
Exception>> clazzs) {
+    if (null == clazzs || clazzs.size() == 0) {
+      throw new IllegalArgumentException();
+    }
+
+    if (clazzs.stream()
+        .anyMatch(
+            clazz -> clazz.isInstance(e) || 
clazz.isInstance(ExceptionUtils.getRootCause(e)))) {
+      refresh();
+    }
+  }
+
+  public void refresh() {
+    if (isRefreshing.compareAndSet(false, true)) {
+      refreshExecutor.execute(
+          () -> {
+            try {
+              if (System.currentTimeMillis()
+                  <= lastRefreshMillis + refreshIntervalDuration.toMillis()) {
+                logger.warn(
+                    "Not manually refresh eureka client cache as refresh 
interval was not exceeded:{}",
+                    refreshIntervalDuration.getSeconds());
+                return;
+              }
+
+              String discoveryClientClassName = 
"com.netflix.discovery.DiscoveryClient";
+              if (null == cacheRefreshTask) {
+                Class<?> discoveryClientClass = 
Class.forName(discoveryClientClassName);
+                Field field =
+                    ReflectionUtils.findField(discoveryClientClass, 
cacheRefreshTaskField);
+                if (null != field) {
+                  ReflectionUtils.makeAccessible(field);
+                  Object discoveryClient = 
beanFactory.getBean(discoveryClientClass);
+                  cacheRefreshTask = ReflectionUtils.getField(field, 
discoveryClient);
+                }
+              }
+
+              if (null == cacheRefreshTask) {
+                logger.error(
+                    "Field ({}) not found in class '{}'",
+                    cacheRefreshTaskField,
+                    discoveryClientClassName);
+                return;
+              }
+
+              lastRefreshMillis = System.currentTimeMillis();
+              Class<?> timedSupervisorTaskClass =
+                  Class.forName("com.netflix.discovery.TimedSupervisorTask");
+              Method method = 
timedSupervisorTaskClass.getDeclaredMethod("run");
+              method.setAccessible(true);
+              method.invoke(cacheRefreshTask);
+              logger.info(
+                  "Manually refresh eureka client cache 
completed(DiscoveryClient.cacheRefreshTask#run())");
+            } catch (Exception e) {
+              logger.error("An exception occurred when manually refresh eureka 
client cache", e);
+            } finally {
+              isRefreshing.set(false);
+            }
+          });
+    } else {
+      logger.warn(
+          "Not manually refresh eureka client cache as another thread is 
refreshing it already");
+    }
+  }
+}
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/FeignRequestInterceptor.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/FeignRequestInterceptor.java
new file mode 100644
index 0000000000..ef1c2dd095
--- /dev/null
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/FeignRequestInterceptor.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.conf;
+
+import org.apache.linkis.rpc.BaseRPCSender;
+import org.apache.linkis.rpc.constant.RpcConstant;
+import org.apache.linkis.server.BDPJettyServerHelper;
+import org.apache.linkis.server.Message;
+import org.apache.linkis.server.security.SSOUtils$;
+import org.apache.linkis.server.security.SecurityFilter$;
+
+import org.springframework.stereotype.Component;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import scala.Tuple2;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+
+@Component
+public class FeignRequestInterceptor implements RequestInterceptor {
+
+  @Override
+  public void apply(RequestTemplate requestTemplate) {
+    Map<String, Collection<String>> headers = new 
HashMap<>(requestTemplate.headers());
+    headers.put(
+        RpcConstant.LINKIS_LOAD_BALANCER_TYPE,
+        Arrays.asList(RpcConstant.LINKIS_LOAD_BALANCER_TYPE_RPC));
+    Tuple2<String, String> userTicketKV =
+        
SSOUtils$.MODULE$.getUserTicketKV(SecurityFilter$.MODULE$.OTHER_SYSTEM_IGNORE_UM_USER());
+    headers.put(userTicketKV._1, Arrays.asList(userTicketKV._2));
+    try {
+      String body =
+          new String(
+              requestTemplate.body(),
+              
org.apache.linkis.common.conf.Configuration.BDP_ENCODING().getValue());
+      Message message = BDPJettyServerHelper.gson().fromJson(body, 
Message.class);
+      headers.put(
+          RpcConstant.FIXED_INSTANCE, 
Arrays.asList(BaseRPCSender.getFixedInstanceInfo(message)));
+      requestTemplate.headers(headers);
+    } catch (UnsupportedEncodingException e) {
+    }
+  }
+}
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/InstanceRPCLoadBalancer.scala
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/NacosClientCacheManualRefresher.java
similarity index 53%
rename from 
linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/InstanceRPCLoadBalancer.scala
rename to 
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/NacosClientCacheManualRefresher.java
index 6cdac0df9f..db26cd0f2c 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/InstanceRPCLoadBalancer.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/NacosClientCacheManualRefresher.java
@@ -15,28 +15,26 @@
  * limitations under the License.
  */
 
-package org.apache.linkis.rpc.interceptor.common
+package org.apache.linkis.rpc.conf;
 
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.protocol.{InstanceProtocol, Protocol}
-import org.apache.linkis.rpc.interceptor.RPCLoadBalancer
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.stereotype.Component;
 
-import org.springframework.stereotype.Component
-
-import com.netflix.loadbalancer.ILoadBalancer
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Component
-class InstanceRPCLoadBalancer extends RPCLoadBalancer {
-  override val order: Int = 10
+@ConditionalOnClass(name = 
"com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration")
+public class NacosClientCacheManualRefresher implements CacheManualRefresher {
+  private static final Logger logger =
+      LoggerFactory.getLogger(NacosClientCacheManualRefresher.class);
 
-  override def choose(
-      protocol: Protocol,
-      originService: ServiceInstance,
-      lb: ILoadBalancer
-  ): Option[ServiceInstance] = protocol match {
-    case instance: InstanceProtocol =>
-      
instance.choseInstance.map(ServiceInstance(originService.getApplicationName, _))
-    case _ => None
-  }
+  public void refresh() {
+    try {
+      logger.warn("Failed to obtain nacos metadata. Wait 100 milliseconds");
+      Thread.sleep(100L);
+    } catch (InterruptedException e) {
 
+    }
+  }
 }
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/constant/RpcConstant.java
similarity index 69%
copy from 
linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
copy to 
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/constant/RpcConstant.java
index 7ae331265b..3d46661de2 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/constant/RpcConstant.java
@@ -15,21 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.linkis.rpc.interceptor
+package org.apache.linkis.rpc.constant;
 
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.protocol.Protocol
+public class RpcConstant {
 
-import com.netflix.loadbalancer.ILoadBalancer
+  public static final String LINKIS_LOAD_BALANCER_TYPE = 
"LinkisLoadBalancerType";
 
-trait RPCLoadBalancer {
-
-  val order: Int
-
-  def choose(
-      protocol: Protocol,
-      originService: ServiceInstance,
-      lb: ILoadBalancer
-  ): Option[ServiceInstance]
+  public static final String LINKIS_LOAD_BALANCER_TYPE_RPC = "RPC";
 
+  public static final String FIXED_INSTANCE = "client-ip";
 }
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
index 3723ca145d..b87e730994 100644
--- 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
@@ -30,6 +30,8 @@ public enum LinkisRpcErrorCodeSummary implements 
LinkisErrorCode {
       10004, "The corresponding anti-sequence class:{0} failed to 
initialize(对应的反序列类:{0} 初始化失败)"),
   APPLICATION_IS_NOT_EXISTS(
       10051, "The instance:{0} of application {1} does not exist(应用程序:{0} 
的实例:{1} 不存在)."),
+
+  INSTANCE_ERROR(10052, "The instance:{0} is error should ip:port."),
   RPC_INIT_ERROR(10054, "Asyn RPC Consumer Thread has stopped!(Asyn RPC 
Consumer 线程已停止!)");
 
   /** 错误码 */
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/GatewayLoadBalancerConfiguration.java
similarity index 69%
rename from 
linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
rename to 
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/GatewayLoadBalancerConfiguration.java
index 7ae331265b..0c9aecf177 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/GatewayLoadBalancerConfiguration.java
@@ -15,21 +15,6 @@
  * limitations under the License.
  */
 
-package org.apache.linkis.rpc.interceptor
+package org.apache.linkis.rpc.loadbalancer;
 
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.protocol.Protocol
-
-import com.netflix.loadbalancer.ILoadBalancer
-
-trait RPCLoadBalancer {
-
-  val order: Int
-
-  def choose(
-      protocol: Protocol,
-      originService: ServiceInstance,
-      lb: ILoadBalancer
-  ): Option[ServiceInstance]
-
-}
+public class GatewayLoadBalancerConfiguration {}
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/LinkisLoadBalancerClientConfiguration.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/LinkisLoadBalancerClientConfiguration.java
new file mode 100644
index 0000000000..f4d501dfe4
--- /dev/null
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/LinkisLoadBalancerClientConfiguration.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.loadbalancer;
+
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;
+import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+import 
org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+
+@Configuration
+@LoadBalancerClients(defaultConfiguration = 
{LinkisLoadBalancerClientConfiguration.class})
+public class LinkisLoadBalancerClientConfiguration {
+  @Bean
+  public ReactorLoadBalancer<ServiceInstance> customLoadBalancer(
+      Environment environment, LoadBalancerClientFactory 
loadBalancerClientFactory) {
+    String name = 
environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
+    return new ServiceInstancePriorityLoadBalancer(
+        loadBalancerClientFactory.getLazyProvider(name, 
ServiceInstanceListSupplier.class), name);
+  }
+}
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/ServiceInstancePriorityLoadBalancer.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/ServiceInstancePriorityLoadBalancer.java
new file mode 100644
index 0000000000..2f81ba84d5
--- /dev/null
+++ 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/ServiceInstancePriorityLoadBalancer.java
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.loadbalancer;
+
+import org.apache.linkis.rpc.conf.CacheManualRefresher;
+import org.apache.linkis.rpc.constant.RpcConstant;
+import org.apache.linkis.rpc.errorcode.LinkisRpcErrorCodeSummary;
+import org.apache.linkis.rpc.exception.NoInstanceExistsException;
+import org.apache.linkis.rpc.sender.SpringCloudFeignConfigurationCache$;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.loadbalancer.*;
+import 
org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier;
+import 
org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.SelectedInstanceCallback;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+
+import java.text.MessageFormat;
+import java.util.List;
+import java.util.Objects;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import reactor.core.publisher.Mono;
+
+public class ServiceInstancePriorityLoadBalancer implements 
ReactorServiceInstanceLoadBalancer {
+
+  private static final Log log = 
LogFactory.getLog(ServiceInstancePriorityLoadBalancer.class);
+
+  @Autowired private CacheManualRefresher cacheManualRefresher;
+
+  private final String serviceId;
+
+  final AtomicInteger position;
+  private final ObjectProvider<ServiceInstanceListSupplier> 
serviceInstanceListSupplierProvider;
+
+  public ServiceInstancePriorityLoadBalancer(
+      ObjectProvider<ServiceInstanceListSupplier> 
serviceInstanceListSupplierProvider,
+      String serviceId) {
+    this(serviceInstanceListSupplierProvider, serviceId, (new 
Random()).nextInt(1000));
+  }
+
+  public ServiceInstancePriorityLoadBalancer(
+      ObjectProvider<ServiceInstanceListSupplier> 
serviceInstanceListSupplierProvider,
+      String serviceId,
+      int seedPosition) {
+    this.serviceId = serviceId;
+    this.serviceInstanceListSupplierProvider = 
serviceInstanceListSupplierProvider;
+    this.position = new AtomicInteger(seedPosition);
+  }
+
+  @Override
+  public Mono<Response<ServiceInstance>> choose(Request request) {
+    List<String> clientIpList =
+        ((RequestDataContext) request.getContext())
+            .getClientRequest()
+            .getHeaders()
+            .get(RpcConstant.FIXED_INSTANCE);
+    String clientIp = CollectionUtils.isNotEmpty(clientIpList) ? 
clientIpList.get(0) : null;
+    ServiceInstanceListSupplier supplier =
+        
serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);
+    return supplier
+        .get(request)
+        .next()
+        .map(
+            serviceInstances ->
+                processInstanceResponse(request, supplier, serviceInstances, 
clientIp));
+  }
+
+  private Response<ServiceInstance> processInstanceResponse(
+      Request request,
+      ServiceInstanceListSupplier supplier,
+      List<ServiceInstance> serviceInstances,
+      String clientIp) {
+    Response<ServiceInstance> serviceInstanceResponse =
+        getInstanceResponse(serviceInstances, clientIp);
+    Long endTtime = System.currentTimeMillis() + 2 * 60 * 1000;
+
+    List<String> linkisLoadBalancerTypeList =
+        ((RequestDataContext) request.getContext())
+            .getClientRequest()
+            .getHeaders()
+            .get(RpcConstant.LINKIS_LOAD_BALANCER_TYPE);
+    String linkisLoadBalancerType =
+        CollectionUtils.isNotEmpty(linkisLoadBalancerTypeList)
+            ? linkisLoadBalancerTypeList.get(0)
+            : null;
+
+    while (null == serviceInstanceResponse
+        && StringUtils.isNoneBlank(clientIp)
+        && isRPC(linkisLoadBalancerType)
+        && System.currentTimeMillis() < endTtime) {
+      cacheManualRefresher.refresh();
+      List<ServiceInstance> instances =
+          
SpringCloudFeignConfigurationCache$.MODULE$.discoveryClient().getInstances(serviceId);
+      serviceInstanceResponse = getInstanceResponse(instances, clientIp);
+      if (null == serviceInstanceResponse) {
+        try {
+          Thread.sleep(5000L);
+        } catch (InterruptedException e) {
+          throw new RuntimeException(e);
+        }
+      }
+    }
+
+    if (supplier instanceof SelectedInstanceCallback && 
serviceInstanceResponse.hasServer()) {
+      ((SelectedInstanceCallback) supplier)
+          .selectedServiceInstance(serviceInstanceResponse.getServer());
+    }
+    return serviceInstanceResponse;
+  }
+
+  private boolean isRPC(String linkisLoadBalancerType) {
+    return StringUtils.isNotBlank(linkisLoadBalancerType)
+        && 
linkisLoadBalancerType.equalsIgnoreCase(RpcConstant.LINKIS_LOAD_BALANCER_TYPE_RPC);
+  }
+
+  private Response<ServiceInstance> getInstanceResponse(
+      List<ServiceInstance> instances, String clientIp) {
+    if (instances.isEmpty()) {
+      log.warn("No servers available for service: " + serviceId);
+      return null;
+    }
+    int pos = this.position.incrementAndGet() & Integer.MAX_VALUE;
+
+    if (StringUtils.isBlank(clientIp)) {
+      return new DefaultResponse(instances.get(pos % instances.size()));
+    }
+    String[] ipAndPort = clientIp.split(":");
+    if (ipAndPort.length != 2) {
+      throw new NoInstanceExistsException(
+          LinkisRpcErrorCodeSummary.INSTANCE_ERROR.getErrorCode(),
+          
MessageFormat.format(LinkisRpcErrorCodeSummary.INSTANCE_ERROR.getErrorDesc(), 
clientIp));
+    }
+    ServiceInstance chooseInstance = null;
+    for (ServiceInstance instance : instances) {
+      if (Objects.equals(ipAndPort[0], instance.getHost())
+          && Objects.equals(ipAndPort[1], String.valueOf(instance.getPort()))) 
{
+        chooseInstance = instance;
+        break;
+      }
+    }
+    if (null == chooseInstance) {
+      return null;
+    } else {
+      return new DefaultResponse(chooseInstance);
+    }
+  }
+}
diff --git 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtils.java
 
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtils.java
deleted file mode 100644
index f022fc8c7f..0000000000
--- 
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.linkis.rpc.message.utils;
-
-import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
-
-import java.lang.reflect.Field;
-
-import feign.Request.Options;
-
-public class LoadBalancerOptionsUtils {
-
-  private static Options DEFAULT_OPTIONS = null;
-
-  private static Object locker = new Object();
-
-  public static Options getDefaultOptions() throws NoSuchFieldException, 
IllegalAccessException {
-    if (null == DEFAULT_OPTIONS) {
-      synchronized (locker) {
-        Class<?> clazz = LoadBalancerFeignClient.class;
-        Field optionField = clazz.getDeclaredField("DEFAULT_OPTIONS");
-        optionField.setAccessible(true);
-        Object o = optionField.get(clazz);
-        DEFAULT_OPTIONS = (Options) o;
-      }
-    }
-    return DEFAULT_OPTIONS;
-  }
-}
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
index 149179f8b1..1c4e43b3cc 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
@@ -22,27 +22,28 @@ import org.apache.linkis.common.ServiceInstance
 import org.apache.linkis.common.exception.WarnException
 import org.apache.linkis.common.utils.Logging
 import org.apache.linkis.protocol.Protocol
+import org.apache.linkis.rpc.conf.DynamicFeignClient
 import org.apache.linkis.rpc.conf.RPCConfiguration.{
   BDP_RPC_SENDER_ASYN_CONSUMER_THREAD_FREE_TIME_MAX,
   BDP_RPC_SENDER_ASYN_CONSUMER_THREAD_MAX,
   BDP_RPC_SENDER_ASYN_QUEUE_CAPACITY
 }
+import org.apache.linkis.rpc.constant.RpcConstant
 import org.apache.linkis.rpc.interceptor._
 import org.apache.linkis.rpc.transform.{RPCConsumer, RPCProduct}
 import org.apache.linkis.server.Message
-import org.apache.linkis.server.conf.ServerConfiguration
+
+import org.apache.commons.lang3.StringUtils
 
 import java.util
 
 import scala.concurrent.duration.Duration
 import scala.runtime.BoxedUnit
 
-import feign.{Feign, Retryer}
-import feign.slf4j.Slf4jLogger
-
 private[rpc] class BaseRPCSender extends Sender with Logging {
   private var name: String = _
   private var rpc: RPCReceiveRemote = _
+  private var dynamicFeignClient: DynamicFeignClient[RPCReceiveRemote] = _
 
   protected def getRPCInterceptors: Array[RPCInterceptor] = Array.empty
 
@@ -67,18 +68,21 @@ private[rpc] class BaseRPCSender extends Sender with 
Logging {
     rpc
   }
 
+  private def getDynamicFeignClient: DynamicFeignClient[RPCReceiveRemote] = {
+    if (dynamicFeignClient == null) this synchronized {
+      if (dynamicFeignClient == null) dynamicFeignClient = new 
DynamicFeignClient()
+    }
+    dynamicFeignClient
+  }
+
   private[rpc] def getApplicationName = name
 
-  protected def doBuilder(builder: Feign.Builder): Unit =
-    builder.retryer(Retryer.NEVER_RETRY)
+  def getSenderInstance(): String = {
+    null
+  }
 
   protected def newRPC: RPCReceiveRemote = {
-    val builder = Feign.builder.logger(new 
Slf4jLogger()).logLevel(feign.Logger.Level.FULL)
-    doBuilder(builder)
-    var url = if (name.startsWith("http://";)) name else "http://"; + name
-    if (url.endsWith("/")) url = url.substring(0, url.length - 1)
-    url += ServerConfiguration.BDP_SERVER_RESTFUL_URI.getValue
-    builder.target(classOf[RPCReceiveRemote], url)
+    getDynamicFeignClient.getFeignClient(classOf[RPCReceiveRemote], name)
   }
 
   private def execute(message: Any)(op: => Any): Any = message match {
@@ -90,6 +94,9 @@ private[rpc] class BaseRPCSender extends Sender with Logging {
 
   override def ask(message: Any): Any = execute(message) {
     val msg = RPCProduct.getRPCProduct.toMessage(message)
+    if (StringUtils.isNotBlank(getSenderInstance())) {
+      BaseRPCSender.addFixedInstanceInfo(msg.getData, getSenderInstance())
+    }
     BaseRPCSender.addInstanceInfo(msg.getData)
     val response = getRPC.receiveAndReply(msg)
     RPCConsumer.getRPCConsumer.toObject(response)
@@ -98,6 +105,9 @@ private[rpc] class BaseRPCSender extends Sender with Logging 
{
   override def ask(message: Any, timeout: Duration): Any = execute(message) {
     val msg = RPCProduct.getRPCProduct.toMessage(message)
     msg.data("duration", timeout.toMillis)
+    if (StringUtils.isNotBlank(getSenderInstance())) {
+      BaseRPCSender.addFixedInstanceInfo(msg.getData, getSenderInstance())
+    }
     BaseRPCSender.addInstanceInfo(msg.getData)
     val response = getRPC.receiveAndReplyInMills(msg)
     RPCConsumer.getRPCConsumer.toObject(response)
@@ -105,6 +115,9 @@ private[rpc] class BaseRPCSender extends Sender with 
Logging {
 
   private def sendIt(message: Any, op: Message => Message): Unit = 
execute(message) {
     val msg = RPCProduct.getRPCProduct.toMessage(message)
+    if (StringUtils.isNotBlank(getSenderInstance())) {
+      BaseRPCSender.addFixedInstanceInfo(msg.getData, getSenderInstance())
+    }
     BaseRPCSender.addInstanceInfo(msg.getData)
     RPCConsumer.getRPCConsumer.toObject(op(msg)) match {
       case w: WarnException => logger.warn("RPC requests an 
alarm!(RPC请求出现告警!)", w)
@@ -175,4 +188,16 @@ private[rpc] object BaseRPCSender extends Logging {
     ServiceInstance(name, instance)
   }
 
+  def addFixedInstanceInfo(map: util.Map[String, Object], fixedInstance: 
String): Unit = {
+    map.put(RpcConstant.FIXED_INSTANCE, fixedInstance)
+  }
+
+  def getFixedInstanceInfo(message: Message): String = {
+    if (null != message && null != message.getData) {
+      message.getData.getOrDefault(RpcConstant.FIXED_INSTANCE, 
null).asInstanceOf[String]
+    } else {
+      null
+    }
+  }
+
 }
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
index c539652d31..458ada9308 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
@@ -23,13 +23,22 @@ import 
org.springframework.web.bind.annotation.{RequestBody, RequestMapping, Req
 
 private[rpc] trait RPCReceiveRemote {
 
-  @RequestMapping(value = Array("/rpc/receive"), method = 
Array(RequestMethod.POST))
+  @RequestMapping(
+    value = Array("${spring.mvc.servlet.path}/rpc/receive"),
+    method = Array(RequestMethod.POST)
+  )
   def receive(@RequestBody message: Message): Message
 
-  @RequestMapping(value = Array("/rpc/receiveAndReply"), method = 
Array(RequestMethod.POST))
+  @RequestMapping(
+    value = Array("${spring.mvc.servlet.path}/rpc/receiveAndReply"),
+    method = Array(RequestMethod.POST)
+  )
   def receiveAndReply(@RequestBody message: Message): Message
 
-  @RequestMapping(value = Array("/rpc/replyInMills"), method = 
Array(RequestMethod.POST))
+  @RequestMapping(
+    value = Array("${spring.mvc.servlet.path}/rpc/replyInMills"),
+    method = Array(RequestMethod.POST)
+  )
   def receiveAndReplyInMills(@RequestBody message: Message): Message
 
 }
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
index aa92605f9b..ff542aaad5 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
@@ -19,7 +19,7 @@ package org.apache.linkis.rpc
 
 import org.apache.linkis.DataWorkCloudApplication
 import org.apache.linkis.common.utils.Logging
-import org.apache.linkis.rpc.interceptor.{RPCInterceptor, RPCLoadBalancer, 
RPCServerLoader}
+import org.apache.linkis.rpc.interceptor.{RPCInterceptor, RPCServerLoader}
 import org.apache.linkis.rpc.interceptor.common.BroadcastSenderBuilder
 
 import java.util
@@ -30,10 +30,10 @@ private[rpc] object RPCSpringBeanCache extends Logging {
   import DataWorkCloudApplication.getApplicationContext
   private var beanNameToReceivers: util.Map[String, Receiver] = _
   private var rpcInterceptors: Array[RPCInterceptor] = _
-  private var rpcLoadBalancers: Array[RPCLoadBalancer] = _
   private var rpcServerLoader: RPCServerLoader = _
   private var senderBuilders: Array[BroadcastSenderBuilder] = _
   private var rpcReceiveRestful: RPCReceiveRestful = _
+  private var rpcReceiveRemote: RPCReceiveRemote = _
 
   def registerReceiver(receiverName: String, receiver: Receiver): Unit = {
     if (beanNameToReceivers == null) {
@@ -64,6 +64,13 @@ private[rpc] object RPCSpringBeanCache extends Logging {
     rpcReceiveRestful
   }
 
+  def getRPCReceiveRemote: RPCReceiveRemote = {
+    if (rpcReceiveRemote == null) {
+      rpcReceiveRemote = 
getApplicationContext.getBean(classOf[RPCReceiveRemote])
+    }
+    rpcReceiveRemote
+  }
+
   private[rpc] def getReceivers: util.Map[String, Receiver] = {
     if (beanNameToReceivers == null) {
       beanNameToReceivers = 
getApplicationContext.getBeansOfType(classOf[Receiver])
@@ -83,18 +90,6 @@ private[rpc] object RPCSpringBeanCache extends Logging {
     rpcInterceptors
   }
 
-  private[rpc] def getRPCLoadBalancers: Array[RPCLoadBalancer] = {
-    if (rpcLoadBalancers == null) {
-      rpcLoadBalancers = getApplicationContext
-        .getBeansOfType(classOf[RPCLoadBalancer])
-        .asScala
-        .map(_._2)
-        .toArray
-        .sortBy(_.order)
-    }
-    rpcLoadBalancers
-  }
-
   private[rpc] def getRPCServerLoader: RPCServerLoader = {
     if (rpcServerLoader == null) {
       rpcServerLoader = getApplicationContext.getBean(classOf[RPCServerLoader])
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
index 8cab6d7d0f..e4259466b1 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
@@ -28,16 +28,11 @@ import java.text.MessageFormat
 import scala.collection.JavaConverters._
 import scala.concurrent.duration.Duration
 
-import com.netflix.loadbalancer.{DynamicServerListLoadBalancer, ILoadBalancer, 
Server}
-
 trait RPCServerLoader {
 
   @throws[NoInstanceExistsException]
   def getOrRefreshServiceInstance(serviceInstance: ServiceInstance): Unit
 
-  @throws[NoInstanceExistsException]
-  def getServer(lb: ILoadBalancer, serviceInstance: ServiceInstance): Server
-
   def getServiceInstances(applicationName: String): Array[ServiceInstance]
 
 }
@@ -50,19 +45,12 @@ abstract class AbstractRPCServerLoader extends 
RPCServerLoader with Logging {
 
   def refreshAllServers(): Unit
 
-  protected def refreshServerList(lb: ILoadBalancer): Unit = {
-    refreshAllServers()
-    lb match {
-      case d: DynamicServerListLoadBalancer[_] => d.updateListOfServers()
-      case _ =>
-    }
-  }
-
   private def getOrRefresh(
       refresh: => Unit,
       refreshed: => Boolean,
       serviceInstance: ServiceInstance
   ): Unit = {
+
     val instanceNotExists = new NoInstanceExistsException(
       APPLICATION_IS_NOT_EXISTS.getErrorCode,
       MessageFormat.format(
@@ -101,15 +89,6 @@ abstract class AbstractRPCServerLoader extends 
RPCServerLoader with Logging {
     serviceInstance
   )
 
-  override def getServer(lb: ILoadBalancer, serviceInstance: ServiceInstance): 
Server = {
-    getOrRefresh(
-      refreshServerList(lb),
-      lb.getAllServers.asScala.exists(_.getHostPort == 
serviceInstance.getInstance),
-      serviceInstance
-    )
-    lb.getAllServers.asScala.find(_.getHostPort == 
serviceInstance.getInstance).get
-  }
-
   def getDWCServiceInstance(serviceInstance: SpringCloudServiceInstance): 
ServiceInstance
 
   override def getServiceInstances(applicationName: String): 
Array[ServiceInstance] =
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/SingleInstanceRPCLoadBalancer.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/SingleInstanceRPCLoadBalancer.scala
deleted file mode 100644
index b007838ea6..0000000000
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/SingleInstanceRPCLoadBalancer.scala
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.linkis.rpc.interceptor.common
-
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.common.utils.Logging
-import org.apache.linkis.protocol.{Protocol, SingleInstanceProtocol}
-import org.apache.linkis.rpc.interceptor.RPCLoadBalancer
-
-import org.apache.commons.lang3.StringUtils
-
-import org.springframework.stereotype.Component
-
-import com.netflix.loadbalancer.ILoadBalancer
-
-@Component
-class SingleInstanceRPCLoadBalancer extends RPCLoadBalancer with Logging {
-  override val order: Int = 20
-
-  override def choose(
-      protocol: Protocol,
-      originService: ServiceInstance,
-      lb: ILoadBalancer
-  ): Option[ServiceInstance] = protocol match {
-    case _: SingleInstanceProtocol =>
-      if (StringUtils.isEmpty(originService.getInstance)) synchronized {
-        if (StringUtils.isEmpty(originService.getInstance)) {
-          val servers = lb.getAllServers
-          val server = servers.get((math.random * servers.size()).toInt)
-          originService.setInstance(server.getHostPort)
-          logger.warn(
-            originService.getApplicationName + " choose " + server.getHostPort 
+ " to build a single instance connection."
-          )
-        }
-      }
-      Some(originService)
-    case _ => None
-  }
-
-}
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
index 06f13c70a9..b8b41524d5 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
@@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.autoconfigure.AutoConfigureBefore
 import org.springframework.cloud.client.discovery.DiscoveryClient
 import org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory
-import org.springframework.cloud.netflix.ribbon.SpringClientFactory
+import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory
 import org.springframework.cloud.openfeign.FeignClientsConfiguration
 import org.springframework.context.annotation.{Configuration, Import}
 
@@ -48,7 +48,7 @@ class SpringCloudFeignConfigurationCache(
   private var discoveryClient: DiscoveryClient = _
 
   @Autowired
-  private var clientFactory: SpringClientFactory = _
+  private var loadBalancerClientFactory: LoadBalancerClientFactory = _
 
   @Autowired(required = false)
   private var loadBalancedRetryFactory: LoadBalancedRetryFactory = _
@@ -56,7 +56,7 @@ class SpringCloudFeignConfigurationCache(
   @PostConstruct
   def storeFeignConfiguration(): Unit = {
     SpringCloudFeignConfigurationCache.client = client
-    SpringCloudFeignConfigurationCache.clientFactory = clientFactory
+    SpringCloudFeignConfigurationCache.loadBalancerClientFactory = 
loadBalancerClientFactory
     SpringCloudFeignConfigurationCache.loadBalancedRetryFactory = 
loadBalancedRetryFactory
     SpringCloudFeignConfigurationCache.contract = contract
     SpringCloudFeignConfigurationCache.decoder = decoder
@@ -71,7 +71,9 @@ private[linkis] object SpringCloudFeignConfigurationCache {
   private[SpringCloudFeignConfigurationCache] var decoder: Decoder = _
   private[SpringCloudFeignConfigurationCache] var contract: Contract = _
   private[SpringCloudFeignConfigurationCache] var client: Client = _
-  private[SpringCloudFeignConfigurationCache] var clientFactory: 
SpringClientFactory = _
+
+  private[SpringCloudFeignConfigurationCache] var loadBalancerClientFactory
+      : LoadBalancerClientFactory = _
 
   private[SpringCloudFeignConfigurationCache] var loadBalancedRetryFactory
       : LoadBalancedRetryFactory = _
@@ -92,7 +94,7 @@ private[linkis] object SpringCloudFeignConfigurationCache {
     client
   }
 
-  private[rpc] def getClientFactory = clientFactory
+  private[rpc] def getLoadloadBalancerClientFactory = loadBalancerClientFactory
   private[rpc] def getLoadBalancedRetryFactory = loadBalancedRetryFactory
 
   private[linkis] def getDiscoveryClient = {
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
index ab4f2d7fe3..1aae1f0cf3 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
@@ -18,119 +18,26 @@
 package org.apache.linkis.rpc.sender
 
 import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.common.conf.{Configuration => DWCConfiguration}
-import org.apache.linkis.protocol.Protocol
 import org.apache.linkis.rpc.{BaseRPCSender, RPCMessageEvent, 
RPCSpringBeanCache}
-import org.apache.linkis.rpc.conf.RPCConfiguration
-import org.apache.linkis.rpc.interceptor.{
-  RPCInterceptor,
-  RPCLoadBalancer,
-  ServiceInstanceRPCInterceptorChain
-}
-import org.apache.linkis.rpc.message.utils.LoadBalancerOptionsUtils
-import org.apache.linkis.rpc.transform.RPCConsumer
-import org.apache.linkis.server.{BDPJettyServerHelper, Message}
+import org.apache.linkis.rpc.interceptor.{RPCInterceptor, 
ServiceInstanceRPCInterceptorChain}
 
 import org.apache.commons.lang3.StringUtils
 
-import org.springframework.cloud.netflix.ribbon.ServerIntrospector
-import org.springframework.cloud.openfeign.ribbon.{
-  CachingSpringLoadBalancerFactory,
-  FeignLoadBalancer,
-  LoadBalancerFeignClient
-}
-
-import java.lang.reflect.Field
-
-import com.netflix.client.ClientRequest
-import com.netflix.client.config.IClientConfig
-import com.netflix.loadbalancer.reactive.LoadBalancerCommand
-import feign._
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.core.env.Environment
 
 private[rpc] class SpringMVCRPCSender private[rpc] (
     private[rpc] val serviceInstance: ServiceInstance
 ) extends BaseRPCSender(serviceInstance.getApplicationName) {
 
-  import SpringCloudFeignConfigurationCache._
-
   override protected def getRPCInterceptors: Array[RPCInterceptor] =
     RPCSpringBeanCache.getRPCInterceptors
 
   override protected def createRPCInterceptorChain() =
     new ServiceInstanceRPCInterceptorChain(0, getRPCInterceptors, 
serviceInstance)
 
-  protected def getRPCLoadBalancers: Array[RPCLoadBalancer] =
-    RPCSpringBeanCache.getRPCLoadBalancers
-
-  override protected def doBuilder(builder: Feign.Builder): Unit = {
-    val client = getClient.asInstanceOf[LoadBalancerFeignClient]
-    val newClient = new LoadBalancerFeignClient(
-      client.getDelegate,
-      new CachingSpringLoadBalancerFactory(getClientFactory) {
-        override def create(clientName: String): FeignLoadBalancer = {
-          val serverIntrospector =
-            getClientFactory.getInstance(clientName, 
classOf[ServerIntrospector])
-          new FeignLoadBalancer(
-            getClientFactory.getLoadBalancer(clientName),
-            getClientFactory.getClientConfig(clientName),
-            serverIntrospector
-          ) {
-            override def customizeLoadBalancerCommandBuilder(
-                request: FeignLoadBalancer.RibbonRequest,
-                config: IClientConfig,
-                builder: 
LoadBalancerCommand.Builder[FeignLoadBalancer.RibbonResponse]
-            ): Unit = {
-              val instance =
-                if (getRPCLoadBalancers.isEmpty) None
-                else {
-                  val requestBody = 
SpringMVCRPCSender.getRequest(request).body()
-                  val requestStr = new String(requestBody, 
DWCConfiguration.BDP_ENCODING.getValue)
-                  val obj = RPCConsumer.getRPCConsumer.toObject(
-                    BDPJettyServerHelper.gson.fromJson(requestStr, 
classOf[Message])
-                  )
-                  obj match {
-                    case protocol: Protocol =>
-                      var serviceInstance: Option[ServiceInstance] = None
-                      for (lb <- getRPCLoadBalancers if 
serviceInstance.isEmpty)
-                        serviceInstance = lb.choose(
-                          protocol,
-                          SpringMVCRPCSender.this.serviceInstance,
-                          getLoadBalancer
-                        )
-                      serviceInstance.foreach(f =>
-                        logger.info(
-                          "origin serviceInstance: " + 
SpringMVCRPCSender.this.serviceInstance + ", chose serviceInstance: " + f
-                        )
-                      ) // TODO just for test
-                      serviceInstance
-                    case _ => None
-                  }
-                }
-              instance
-                .orElse(Option(SpringMVCRPCSender.this.serviceInstance))
-                .filter(s => StringUtils.isNotBlank(s.getInstance))
-                .foreach { serviceInstance =>
-                  val server = RPCSpringBeanCache.getRPCServerLoader
-                    .getServer(getLoadBalancer, serviceInstance)
-                  builder.withServer(server)
-                }
-            }
-          }
-        }
-      },
-      getClientFactory
-    )
-    if (RPCConfiguration.ENABLE_SPRING_PARAMS) {
-      builder.options(LoadBalancerOptionsUtils.getDefaultOptions)
-    }
-    super.doBuilder(builder)
-    builder
-      .contract(getContract)
-      .encoder(getEncoder)
-      .decoder(getDecoder)
-      .client(newClient)
-      .requestInterceptor(getRPCTicketIdRequestInterceptor)
-  }
+  @Autowired
+  private var env: Environment = _
 
   /**
    * Deliver is an asynchronous method that requests the target microservice 
asynchronously,
@@ -159,19 +66,12 @@ private[rpc] class SpringMVCRPCSender private[rpc] (
       s"RPCSender(${serviceInstance.getApplicationName})"
     } else s"RPCSender($getApplicationName, ${serviceInstance.getInstance})"
 
-}
-
-private object SpringMVCRPCSender {
-  private var requestField: Field = _
-
-  def getRequest(req: ClientRequest): Request = {
-    if (requestField == null) synchronized {
-      if (requestField == null) {
-        requestField = req.getClass.getDeclaredField("request")
-        requestField.setAccessible(true)
-      }
+  override def getSenderInstance(): String = {
+    if (null != serviceInstance) {
+      serviceInstance.getInstance
+    } else {
+      null
     }
-    requestField.get(req).asInstanceOf[Request]
   }
 
 }
diff --git 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
index e7d48305ac..5ee3b1ca48 100644
--- 
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
+++ 
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
@@ -25,13 +25,14 @@ import 
org.apache.linkis.rpc.sender.{SpringCloudFeignConfigurationCache, SpringM
 
 import org.apache.commons.lang3.StringUtils
 
+import 
org.springframework.cloud.client.loadbalancer.RetryableStatusCodeException
+
 import java.lang.reflect.UndeclaredThrowableException
 import java.net.ConnectException
 import java.util.Locale
 
 import scala.collection.JavaConverters._
 
-import com.netflix.client.ClientException
 import feign.RetryableException
 
 object RPCUtils {
@@ -53,11 +54,10 @@ object RPCUtils {
       }
     case t: RuntimeException =>
       t.getCause match {
-        case client: ClientException =>
-          StringUtils.isNotBlank(client.getErrorMessage) &&
-            client.getErrorMessage.contains(
-              "Load balancer does not have available server for client"
-            )
+        //        case client: ClientException =>
+        case client: RetryableStatusCodeException =>
+          StringUtils.isNotBlank(client.getMessage) &&
+            client.getMessage.contains("Load balancer does not have available 
server for client")
         case _ => false
       }
     case _ => false
diff --git 
a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
 
b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
index c6f8368a1c..3d62df5c90 100644
--- 
a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
+++ 
b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
@@ -25,7 +25,7 @@ import org.apache.linkis.manager.common.operator.Operator;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.input.ReversedLinesFileReader;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Triple;
 
 import java.io.File;
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
index 5f372cae62..c1427b3068 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
@@ -47,7 +47,7 @@ import org.apache.linkis.rpc.message.annotation.Receiver;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.compress.utils.Lists;
-import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.tuple.MutablePair;
 
 import org.springframework.beans.factory.annotation.Autowired;
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
index 8ef4bf7689..4092e24f8f 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
@@ -38,7 +38,7 @@ import org.apache.linkis.manager.rm.utils.UserConfiguration;
 import org.apache.linkis.server.BDPJettyServerHelper;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
index 0e4fe8035f..57c5445637 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
@@ -22,7 +22,10 @@ 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 
 
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
index 0e4fe8035f..57c5445637 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
+++ 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
@@ -22,7 +22,10 @@ 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 
 
diff --git 
a/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml 
b/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
index 6437188298..90eeaed44b 100644
--- a/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
+++ b/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
@@ -94,12 +94,28 @@ data:
             include: refresh,info
     logging:
       config: classpath:log4j2.xml
+    springfox:
+      documentation:
+        enabled: false
+        auto-startup: false
+        swagger-ui:
+          enabled: false
 
     pagehelper:
       helper-dialect: mysql
       reasonable: true
       support-methods-arguments: true
       params: countSql
+    spring:
+      cloud:
+        loadbalancer:
+          cache:
+            enabled: false
+      main:
+        allow-circular-references: true
+      mvc:
+        pathmatch:
+          matching-strategy: ant_path_matcher
 
     #ribbon:
     #  ReadTimeout: 10000
@@ -107,19 +123,34 @@ data:
 
     ##disable  kinif4j.production when you want to use apidoc during 
development
     knife4j:
-      enable: true
-      production: true
+      enable: false
+      production: false
 
   application-eureka.yml: |
     spring:
       application:
         name: linkis-mg-eureka
       profiles: eureka
+      cloud:
+        loadbalancer:
+          cache:
+            enabled: false
+      main:
+        allow-circular-references: true
+      mvc:
+        pathmatch:
+          matching-strategy: ant_path_matcher
       freemarker:
         cache: false
         prefer-file-system-access: false
     server:
       port: {{ .Values.mgEureka.port }}
+    springfox:
+      documentation:
+        enabled: false
+        auto-startup: false
+        swagger-ui:
+          enabled: false
     eureka:
       instance:
         preferIpAddress: true
@@ -140,6 +171,15 @@ data:
     spring:
       application:
         name: linkis-cg-engineconn
+      cloud:
+        loadbalancer:
+          cache:
+            enabled: false
+      main:
+        allow-circular-references: true
+      mvc:
+        pathmatch:
+          matching-strategy: ant_path_matcher
       servlet:
         multipart:
           max-file-size: 500MB
@@ -156,6 +196,12 @@ data:
            defaultZone: {{- include "linkis.registration.url" . | quote | 
indent 1 }}
         registry-fetch-interval-seconds: 8
         initial-instance-info-replication-interval-seconds: 10
+    springfox:
+      documentation:
+        enabled: false
+        auto-startup: false
+        swagger-ui:
+          enabled: false
     management:
       endpoints:
         web:
@@ -171,6 +217,11 @@ data:
     wds.linkis.client.common.authStrategy=token
     wds.linkis.client.common.tokenKey=Validation-Code
     wds.linkis.client.common.tokenValue=BML-AUTH
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
     #wds.linkis.client.noncustomizable.enable.user.specification=true
     #wds.linkis.client.noncustomizable.enable.proxy.user=true
 
@@ -230,6 +281,11 @@ data:
     spring.spring.servlet.multipart.max-request-size=500MB
     # note:value of zero means Jetty will never write to disk.
     spring.spring.servlet.multipart.file-size-threshold=50MB
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
 
   linkis-mg-gateway.properties: |
     #wds.linkis.server.restful.uri=/
@@ -255,6 +311,11 @@ data:
     spring.server.port={{ .Values.mgGateway.port }}
     ## you may set service version if you want to distinguish different 
configuration version
     spring.eureka.instance.metadata-map.linkis.conf.version=v1
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
 
   linkis-cg-linkismanager.properties: |
     ##restful
@@ -271,6 +332,12 @@ data:
 
     ## you may set service version if you want to distinguish different 
configuration version
     spring.eureka.instance.metadata-map.linkis.conf.version=v1
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
+
     ##Spring
     spring.server.port={{ .Values.cgLinkisManager.port }}
 
@@ -287,6 +354,11 @@ data:
     #wds.linkis.engineconn.env.keys=SPARK3_HOME,
 
     spring.eureka.instance.metadata-map.linkis.conf.version=v1
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
 
 
   linkis-cg-engineplugin.properties: |
@@ -304,6 +376,11 @@ data:
 
     ##Spring
     spring.server.port={{ .Values.cgEnginePlugin.port }}
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
 
   linkis-cg-entrance.properties: |
     ##restful
@@ -329,6 +406,11 @@ data:
 
     ## you may set service version if you want to distinguish different 
configuration version
     spring.eureka.instance.metadata-map.linkis.conf.version=v1
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
 
   linkis-ps-publicservice.properties: |
     wds.linkis.server.mdm.service.instance.expire-in-seconds=1800
@@ -364,6 +446,11 @@ data:
     spring.server.port={{ .Values.psPublicService.port }}
     spring.spring.main.allow-bean-definition-overriding=true
     spring.spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
+    spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+    spring.spring.cloud.loadbalancer.cache.enabled=false
+    springfox.documentation.enabled=false
+    springfox.documentation.auto-startup=false
+    springfox.documentation.swagger-ui.enabled=false
     # ps-cs prefix must be started with 'cs_'
     spring.eureka.instance.metadata-map.route=cs_1_dev
 
diff --git a/linkis-dist/package/conf/application-engineconn.yml 
b/linkis-dist/package/conf/application-engineconn.yml
index 4f9610513c..174ddd2305 100644
--- a/linkis-dist/package/conf/application-engineconn.yml
+++ b/linkis-dist/package/conf/application-engineconn.yml
@@ -13,6 +13,17 @@
 # limitations under the License.
 #
 spring:
+  cloud:
+    loadbalancer:
+      cache:
+        enabled: false
+  main:
+    allow-circular-references: true
+  mvc:
+    pathmatch:
+      matching-strategy: ant_path_matcher
+    servlet:
+      path: /api/rest_j/v1
   application:
     name: linkis-cg-engineconn
   servlet:
@@ -41,4 +52,4 @@ management:
         include: refresh,info,health,metrics
 
 logging:
-  config: classpath:log4j2.xml
+  config: classpath:log4j2.xml
\ No newline at end of file
diff --git a/linkis-dist/package/conf/application-linkis.yml 
b/linkis-dist/package/conf/application-linkis.yml
index 868a942946..82fb281211 100644
--- a/linkis-dist/package/conf/application-linkis.yml
+++ b/linkis-dist/package/conf/application-linkis.yml
@@ -42,6 +42,15 @@ pagehelper:
   params: countSql
 
 spring:
+  cloud:
+    loadbalancer:
+      cache:
+        enabled: false
+  main:
+    allow-circular-references: true
+  mvc:
+    pathmatch:
+      matching-strategy: ant_path_matcher
   servlet:
     multipart:
       max-file-size: 500MB
diff --git a/linkis-dist/package/conf/linkis.properties 
b/linkis-dist/package/conf/linkis.properties
index c04294c1b0..30904622b2 100644
--- a/linkis-dist/package/conf/linkis.properties
+++ b/linkis-dist/package/conf/linkis.properties
@@ -1,4 +1,4 @@
-# 
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -84,6 +84,8 @@ 
wds.linkis.gateway.conf.metadataquery.list=metadatamanager,metadataquery
 
 # note: 
org.springframework.cloud.config.client.ConfigServiceBootstrapConfiguration.configServicePropertySource
 need to disable
 spring.spring.cloud.config.enabled=false
+spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+spring.spring.cloud.loadbalancer.cache.enabled=false
 
 # linkis user ticket sso
 # redis stand-alone
diff --git 
a/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
 
b/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
index 14f96357fc..bb0b35222b 100644
--- 
a/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
+++ 
b/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
@@ -22,7 +22,7 @@ import 
org.apache.linkis.engineplugin.elasticsearch.executor.client.*;
 import org.apache.linkis.protocol.constants.TaskConstant;
 import org.apache.linkis.storage.utils.StorageUtils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.Locale;
 import java.util.Map;
diff --git 
a/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
 
b/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
index 63d363fa9d..5cbbec4132 100644
--- 
a/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
+++ 
b/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
@@ -26,7 +26,7 @@ import 
org.apache.linkis.engineplugin.impala.client.protocol.ExecStatus;
 import org.apache.linkis.engineplugin.impala.client.protocol.ExecSummary;
 import org.apache.linkis.engineplugin.impala.client.util.ThriftUtil;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.hive.service.rpc.thrift.TExecuteStatementReq;
 import org.apache.hive.service.rpc.thrift.TExecuteStatementResp;
 import org.apache.hive.service.rpc.thrift.TOperationHandle;
diff --git 
a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
index 970208fe9e..089719f0d4 100644
--- 
a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
@@ -21,7 +21,10 @@ spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #pgtest
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 #spring.datasource.schema=classpath:create_pg.sql
diff --git 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
index 9a41fe67cc..3bd5b80834 100644
--- 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
+++ 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
@@ -25,7 +25,7 @@ import 
org.apache.linkis.governance.common.constant.job.JobRequestConstants;
 import org.apache.linkis.server.Message;
 import org.apache.linkis.server.utils.ModuleUserUtils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;
diff --git 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
index 78e7003d49..ad692703f3 100644
--- 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
+++ 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
@@ -25,7 +25,7 @@ import 
org.apache.linkis.governance.common.constant.job.JobRequestConstants;
 import org.apache.linkis.server.Message;
 import org.apache.linkis.server.utils.ModuleUserUtils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;
diff --git 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
index df64521ad4..a5eb4c1098 100644
--- 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
@@ -25,7 +25,7 @@ import org.apache.linkis.configuration.util.HttpsUtil;
 import org.apache.linkis.governance.common.constant.job.JobRequestConstants;
 
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
diff --git 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
index 9c96121156..66f900b2a3 100644
--- 
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
@@ -24,7 +24,7 @@ import 
org.apache.linkis.configuration.service.UserIpConfigService;
 import org.apache.linkis.configuration.util.CommonUtils;
 import org.apache.linkis.governance.common.constant.job.JobRequestConstants;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
diff --git 
a/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
index 1dd49b9917..1cbe3a21d5 100644
--- 
a/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
@@ -36,7 +36,10 @@ 
wds.linkis.gateway.conf.publicservice.list=query,jobhistory,application,configur
 
 spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 spring.datasource.username=sa
 spring.datasource.password=
 #pgtest
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
index 737087ebf0..757cc7b0c6 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
@@ -35,7 +35,10 @@ 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 
 spring.main.web-application-type=servlet
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
index e1290d6d79..c1b1cc0732 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
@@ -16,6 +16,15 @@
 server:
   port: 9010
 spring:
+  cloud:
+    loadbalancer:
+      cache:
+        enabled: false
+  main:
+    allow-circular-references: true
+  mvc:
+    pathmatch:
+      matching-strategy: ant_path_matcher
   application:
     name: linkis-ps-cs
 
@@ -33,3 +42,7 @@ management:
     web:
       exposure:
         include: refresh,info
+
+knife4j:
+  enable: false
+  production: false
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
index 54525ee00b..2adc4e001b 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
@@ -22,7 +22,10 @@ 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 
 
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
index a91269b96b..6071e0acce 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
@@ -34,7 +34,10 @@ spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #pgtest
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 #spring.datasource.schema=classpath:create_pg.sql
diff --git 
a/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
index b8b65f39b6..86a03a279d 100644
--- 
a/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
@@ -22,7 +22,10 @@ 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 
 
mybatis-plus.mapper-locations=classpath*:mapper/common/*.xml,classpath*:mapper/mysql/*.xml
diff --git 
a/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
index 66d529424d..5555d84e1d 100644
--- 
a/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
@@ -35,7 +35,10 @@ 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 spring.datasource.username=sa
 spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 
 
diff --git 
a/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
index f997dc0727..a7fe5fb166 100644
--- 
a/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
@@ -41,9 +41,12 @@ logging.level.org.springframework.web=trace
 
 spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:basedata_manager_create.sql,classpath:error_code_create.sql,classpath:variable_create.sql
+spring.sql.init.schema-locations=classpath:basedata_manager_create.sql,classpath:error_code_create.sql,classpath:variable_create.sql
 spring.datasource.username=sa
 spring.datasource.password=
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #pgtest
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 
#spring.datasource.schema=classpath:basedata_manager_create_pg.sql,classpath:error_code_create_pg.sql,classpath:variable_create_pg.sql
diff --git 
a/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
index f7fa3b6aae..53488b6678 100644
--- 
a/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
@@ -32,7 +32,10 @@ 
wds.linkis.gateway.conf.publicservice.list=query,jobhistory,application,configur
 
 spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 spring.datasource.username=sa
 spring.datasource.password=
 #pgtest
diff --git 
a/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
 
b/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
index 6a95e9a1e8..4a547a1b58 100644
--- 
a/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
+++ 
b/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
@@ -33,7 +33,10 @@ wds.linkis.login_encrypt.enable=false
 spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #spring.datasource.schema=classpath:create_pg.sql
 spring.datasource.username=sa
 spring.datasource.password=
diff --git 
a/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml 
b/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
index 355864379e..3780541468 100644
--- 
a/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
+++ 
b/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
@@ -36,6 +36,28 @@
       <groupId>org.apache.linkis</groupId>
       <artifactId>linkis-module</artifactId>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>com.github.xiaoymin</groupId>
+          <artifactId>knife4j-spring-boot-starter</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.springfox</groupId>
+          <artifactId>springfox-schema</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.springfox</groupId>
+          <artifactId>springfox-spring-web</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.springfox</groupId>
+          <artifactId>springfox-spring-webflux</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.springfox</groupId>
+          <artifactId>springfox-spring-webmvc</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <dependency>
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
index 2c95230233..d9ccad7e3c 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
@@ -28,7 +28,8 @@ import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 
 class TokenDaoTest extends BaseDaoTest {
 
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
index b012930d58..82b0cc6314 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
@@ -32,7 +32,10 @@ wds.linkis.login_encrypt.enable=false
 
 spring.datasource.driver-class-name=org.h2.Driver
 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
 #pgtest
 
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
 #spring.datasource.schema=classpath:create_pg.sql
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
index 37f15698ad..322c2c61b7 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
@@ -80,6 +80,16 @@
       <artifactId>springfox-schema</artifactId>
       <version>${springfox.version}</version>
     </dependency>
+    <dependency>
+      <groupId>io.springfox</groupId>
+      <artifactId>springfox-spring-webmvc</artifactId>
+      <version>${springfox.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.springfox</groupId>
+      <artifactId>springfox-spring-webflux</artifactId>
+      <version>${springfox.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
index 046edea0c9..2c57084278 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
@@ -40,34 +40,21 @@ import java.util.stream.Collectors
 @Configuration
 class GatewaySpringConfiguration {
 
-  @Autowired
-  private var userRestful: UserRestful = _
-
   @Autowired
   private var tokenService: TokenService = _
 
   @PostConstruct
   def init(): Unit = {
-    SecurityFilter.setUserRestful(userRestful)
     TokenAuthentication.setTokenService(tokenService)
   }
 
-//  @Bean(Array("defaultGatewayParser"))
-//  @ConditionalOnMissingBean
-//  @Autowired(required = false)
-//  def createGatewayParser(gatewayParsers: Array[GatewayParser]): 
DefaultGatewayParser =
-//    new DefaultGatewayParser(gatewayParsers)
-//
-//  @Bean(Array("defaultGatewayRouter"))
-//  @ConditionalOnMissingBean
-//  def createGatewayRouter(): DefaultGatewayParser = new DefaultGatewayRouter
-
   @Bean(Array("userRestful"))
   @ConditionalOnMissingBean
   @Autowired(required = false)
   def createUserRestful(securityHooks: Array[SecurityHook]): UserRestful = {
     val userRestful = new LDAPUserRestful
     if (securityHooks != null) userRestful.setSecurityHooks(securityHooks)
+    SecurityFilter.setUserRestful(userRestful)
     userRestful
   }
 
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
index 6dec0ef829..ce3e4f8091 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
@@ -80,10 +80,6 @@
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-log4j2</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.springframework.cloud</groupId>
-      <artifactId>spring-cloud-gateway-core</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-reactor-netty</artifactId>
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
index 71e53fb2b6..c09aed0e8a 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
@@ -27,6 +27,7 @@ import org.apache.linkis.gateway.security.LinkisPreFilter;
 import org.apache.linkis.gateway.security.LinkisPreFilter$;
 import org.apache.linkis.gateway.security.SecurityFilter;
 import org.apache.linkis.gateway.springcloud.SpringCloudGatewayConfiguration;
+import org.apache.linkis.rpc.constant.RpcConstant;
 import org.apache.linkis.server.Message;
 
 import org.apache.commons.lang3.StringUtils;
@@ -36,7 +37,6 @@ import 
org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
 import org.springframework.cloud.gateway.route.Route;
 import org.springframework.cloud.gateway.route.RouteDefinition;
-import org.springframework.cloud.gateway.support.DefaultServerRequest;
 import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
 import org.springframework.core.Ordered;
 import org.springframework.core.codec.AbstractDataBufferDecoder;
@@ -47,6 +47,8 @@ import 
org.springframework.http.server.reactive.AbstractServerHttpRequest;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
 import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.reactive.function.server.HandlerStrategies;
+import org.springframework.web.reactive.function.server.ServerRequest;
 import org.springframework.web.server.ServerWebExchange;
 
 import java.nio.charset.StandardCharsets;
@@ -79,11 +81,12 @@ public class GatewayAuthorizationFilter implements 
GlobalFilter, Ordered {
   }
 
   private String getRequestBody(ServerWebExchange exchange) {
-    //        StringBuilder requestBody = new StringBuilder();
-    DefaultServerRequest serverRequest = new DefaultServerRequest(exchange);
+    ServerRequest defaultServerRequest =
+        ServerRequest.create(exchange, 
HandlerStrategies.withDefaults().messageReaders());
+
     String requestBody = null;
     try {
-      requestBody = serverRequest.bodyToMono(String.class).toFuture().get();
+      requestBody = 
defaultServerRequest.bodyToMono(String.class).toFuture().get();
     } catch (Exception e) {
       GatewayWarnException exception =
           new GatewayWarnException(
@@ -116,7 +119,8 @@ public class GatewayAuthorizationFilter implements 
GlobalFilter, Ordered {
     return gatewayContext;
   }
 
-  private Route getRealRoute(Route route, ServiceInstance serviceInstance) {
+  private Route getRealRoute(
+      Route route, ServiceInstance serviceInstance, ServerWebExchange 
exchange) {
     String routeUri = route.getUri().toString();
     String scheme = route.getUri().getScheme();
     if 
(routeUri.startsWith(SpringCloudGatewayConfiguration.ROUTE_URI_FOR_WEB_SOCKET_HEADER()))
 {
@@ -128,7 +132,10 @@ public class GatewayAuthorizationFilter implements 
GlobalFilter, Ordered {
     }
     String uri = scheme + serviceInstance.getApplicationName();
     if (StringUtils.isNotBlank(serviceInstance.getInstance())) {
-      uri = scheme + 
SpringCloudGatewayConfiguration.mergeServiceInstance(serviceInstance);
+      exchange
+          .getRequest()
+          .mutate()
+          .header(RpcConstant.FIXED_INSTANCE, serviceInstance.getInstance());
     }
     return Route.async()
         .id(route.getId())
@@ -194,7 +201,7 @@ public class GatewayAuthorizationFilter implements 
GlobalFilter, Ordered {
     }
     Route route = 
exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
     if (serviceInstance != null) {
-      Route realRoute = getRealRoute(route, serviceInstance);
+      Route realRoute = getRealRoute(route, serviceInstance, exchange);
       exchange.getAttributes().put(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR, 
realRoute);
     } else {
       RouteDefinition realRd = null;
@@ -246,7 +253,8 @@ public class GatewayAuthorizationFilter implements 
GlobalFilter, Ordered {
     Route route = 
exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
     BaseGatewayContext gatewayContext = getBaseGatewayContext(exchange, route);
     if (!gatewayContext.isWebSocketRequest() && 
parser.shouldContainRequestBody(gatewayContext)) {
-      DefaultServerRequest defaultServerRequest = new 
DefaultServerRequest(exchange);
+      ServerRequest defaultServerRequest =
+          ServerRequest.create(exchange, 
HandlerStrategies.withDefaults().messageReaders());
       defaultServerRequest.messageReaders().stream()
           .filter(reader -> reader instanceof DecoderHttpMessageReader)
           .filter(
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
index dd1cf6c038..6049bc3c3f 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
@@ -32,20 +32,19 @@ import org.apache.linkis.server.conf.ServerConfiguration
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.autoconfigure.AutoConfigureAfter
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
-import org.springframework.cloud.client
 import org.springframework.cloud.client.loadbalancer.LoadBalancerClient
 import org.springframework.cloud.gateway.config.{GatewayAutoConfiguration, 
GatewayProperties}
 import org.springframework.cloud.gateway.filter._
 import org.springframework.cloud.gateway.route.{Route, RouteLocator}
-import org.springframework.cloud.gateway.route.builder.{PredicateSpec, 
RouteLocatorBuilder}
-import org.springframework.cloud.netflix.ribbon._
+import org.springframework.cloud.gateway.route.builder.{
+  Buildable,
+  PredicateSpec,
+  RouteLocatorBuilder
+}
 import org.springframework.context.annotation.{Bean, Configuration}
 import org.springframework.web.reactive.socket.client.WebSocketClient
 import org.springframework.web.reactive.socket.server.WebSocketService
 
-import scala.collection.JavaConverters._
-
-import com.netflix.loadbalancer.Server
 import org.slf4j.{Logger, LoggerFactory}
 
 @Configuration
@@ -89,9 +88,9 @@ class SpringCloudGatewayConfiguration {
     .routes()
     .route(
       "api",
-      new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+      new java.util.function.Function[PredicateSpec, Buildable[Route]] {
 
-        override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+        override def apply(t: PredicateSpec): Buildable[Route] = t
           .path(API_URL_PREFIX + "**")
           .uri(ROUTE_URI_FOR_HTTP_HEADER + 
Sender.getThisServiceInstance.getApplicationName)
 
@@ -99,9 +98,9 @@ class SpringCloudGatewayConfiguration {
     )
     .route(
       "dws",
-      new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+      new java.util.function.Function[PredicateSpec, Buildable[Route]] {
 
-        override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+        override def apply(t: PredicateSpec): Buildable[Route] = t
           .path(PROXY_URL_PREFIX + "**")
           .uri(ROUTE_URI_FOR_HTTP_HEADER + 
Sender.getThisServiceInstance.getApplicationName)
 
@@ -109,9 +108,9 @@ class SpringCloudGatewayConfiguration {
     )
     .route(
       "ws_http",
-      new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+      new java.util.function.Function[PredicateSpec, Buildable[Route]] {
 
-        override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+        override def apply(t: PredicateSpec): Buildable[Route] = t
           .path(SpringCloudGatewayConfiguration.WEBSOCKET_URI + "info/**")
           .uri(ROUTE_URI_FOR_HTTP_HEADER + 
Sender.getThisServiceInstance.getApplicationName)
 
@@ -119,9 +118,9 @@ class SpringCloudGatewayConfiguration {
     )
     .route(
       "ws",
-      new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+      new java.util.function.Function[PredicateSpec, Buildable[Route]] {
 
-        override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+        override def apply(t: PredicateSpec): Buildable[Route] = t
           .path(SpringCloudGatewayConfiguration.WEBSOCKET_URI + "**")
           .uri(ROUTE_URI_FOR_WEB_SOCKET_HEADER + 
Sender.getThisServiceInstance.getApplicationName)
 
@@ -129,55 +128,6 @@ class SpringCloudGatewayConfiguration {
     )
     .build()
 
-  @Bean
-  def createLoadBalancerClient(springClientFactory: SpringClientFactory): 
RibbonLoadBalancerClient =
-    new RibbonLoadBalancerClient(springClientFactory) {
-
-      override def getServer(serviceId: String): Server = if 
(isMergeModuleInstance(serviceId)) {
-        val serviceInstance = getServiceInstance(serviceId)
-        logger.info("redirect to " + serviceInstance)
-        val lb = this.getLoadBalancer(serviceInstance.getApplicationName)
-        lb.getAllServers.asScala.find(_.getHostPort == 
serviceInstance.getInstance).get
-      } else super.getServer(serviceId)
-
-      def isSecure(server: Server, serviceId: String) = {
-        val config = springClientFactory.getClientConfig(serviceId)
-        val serverIntrospector = serverIntrospectorFun(serviceId)
-        RibbonUtils.isSecure(config, serverIntrospector, server)
-      }
-
-      def serverIntrospectorFun(serviceId: String) = {
-        var serverIntrospector =
-          springClientFactory.getInstance(serviceId, 
classOf[ServerIntrospector])
-        if (serverIntrospector == null) serverIntrospector = new 
DefaultServerIntrospector
-        serverIntrospector
-      }
-
-      override def choose(serviceId: String, hint: Any): 
client.ServiceInstance =
-        if (isMergeModuleInstance(serviceId)) {
-          val serviceInstance = getServiceInstance(serviceId)
-          logger.info("redirect to " + serviceInstance)
-          val lb = this.getLoadBalancer(serviceInstance.getApplicationName)
-          val serverOption =
-            lb.getAllServers.asScala.find(_.getHostPort == 
serviceInstance.getInstance)
-          if (serverOption.isDefined) {
-            val server = serverOption.get
-            new RibbonLoadBalancerClient.RibbonServer(
-              serviceId,
-              server,
-              isSecure(server, serviceId),
-              serverIntrospectorFun(serviceId).getMetadata(server)
-            )
-          } else {
-            logger.warn(
-              "RibbonLoadBalancer not have Server, execute default super 
choose method" + serviceInstance
-            )
-            super.choose(serviceInstance.getApplicationName, hint)
-          }
-        } else super.choose(serviceId, hint)
-
-    }
-
   @Bean
   @ConditionalOnProperty(name = Array("spring.cloud.gateway.url.enabled"), 
matchIfMissing = true)
   def linkisGatewayHttpHeadersFilter(): LinkisGatewayHttpHeadersFilter = {
diff --git a/pom.xml b/pom.xml
index d27ef8f9a8..05691218ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -167,8 +167,8 @@
     <httpclient.version>4.5.13</httpclient.version>
     <httpmime.version>${httpclient.version}</httpmime.version>
 
-    <knife4j.version>2.0.9</knife4j.version>
-    <springfox.version>2.10.5</springfox.version>
+    <knife4j.version>3.0.3</knife4j.version>
+    <springfox.version>3.0.0</springfox.version>
     <poi.version>5.2.3</poi.version>
     <reflections.version>0.9.12</reflections.version>
 
@@ -219,12 +219,13 @@
     <h2.version>2.2.220</h2.version>
 
     <!-- spring -->
-    <spring-framework.version>5.2.23.RELEASE</spring-framework.version>
-    <spring-security.version>5.7.5</spring-security.version>
-    <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
-    <spring-netflix.version>2.2.9.RELEASE</spring-netflix.version>
-    <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
-    <spring.cloud.nacos.version>2.2.9.RELEASE</spring.cloud.nacos.version>
+    <spring-framework.version>5.3.27</spring-framework.version>
+    <spring-security.version>5.7.8</spring-security.version>
+    <spring.boot.version>2.7.11</spring.boot.version>
+    <spring-netflix.version>3.1.7</spring-netflix.version>
+    <spring-cloud.version>2021.0.8</spring-cloud.version>
+    <spring-cloud-alibaba.version>2021.0.6.0</spring-cloud-alibaba.version>
+    <spring-cloud-common.version>3.1.7</spring-cloud-common.version>
 
     <!-- platform encoding override -->
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -1366,7 +1367,7 @@
       <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-        <version>${spring.cloud.nacos.version}</version>
+        <version>${spring-cloud-alibaba.version}</version>
       </dependency>
     </dependencies>
   </dependencyManagement>
diff --git a/tool/dependencies/known-dependencies.txt 
b/tool/dependencies/known-dependencies.txt
index d39673e6ff..5954d026a4 100644
--- a/tool/dependencies/known-dependencies.txt
+++ b/tool/dependencies/known-dependencies.txt
@@ -4,6 +4,7 @@ LatencyUtils-2.0.3.jar
 ST4-4.0.4.jar
 SparseBitSet-1.2.jar
 accessors-smart-2.3.1.jar
+accessors-smart-2.4.9.jar
 aircompressor-0.10.jar
 akka-actor_2.12-2.5.21.jar
 akka-protobuf_2.12-2.5.21.jar
@@ -18,6 +19,8 @@ ant-launcher-1.10.12.jar
 antlr-2.7.7.jar
 antlr-runtime-3.4.jar
 antlr-runtime-3.5.2.jar
+annotations-13.0.jar
+annotations-17.0.0.jar
 aopalliance-1.0.jar
 aopalliance-repackaged-2.4.0-b34.jar
 archaius-core-0.7.7.jar
@@ -29,6 +32,7 @@ asm-analysis-9.3.jar
 asm-commons-9.3.jar
 asm-tree-9.3.jar
 aspectjweaver-1.9.6.jar
+aspectjweaver-1.9.7.jar
 audience-annotations-0.5.0.jar
 automaton-1.11-8.jar
 avatica-1.11.0.jar
@@ -37,7 +41,9 @@ avro-1.8.2.jar
 avro-1.10.1.jar
 avro-1.10.2.jar
 aws-java-sdk-core-1.11.792.jar
+aws-java-sdk-core-1.12.261.jar
 aws-java-sdk-kms-1.11.792.jar
+aws-java-sdk-kms-1.12.261.jar
 aws-java-sdk-s3-1.11.792.jar
 aws-java-sdk-s3-1.12.261.jar
 automaton-1.11-8.jar
@@ -48,8 +54,12 @@ bonecp-0.8.0.RELEASE.jar
 bootstrap-0.191.jar
 bval-jsr-2.0.0.jar
 byte-buddy-1.10.22.jar
+brave-5.13.9.jar
+brave-instrumentation-http-5.13.9.jar
+byte-buddy-1.12.23.jar
 caffeine-2.8.4.jar
 caffeine-2.8.8.jar
+caffeine-2.9.3.jar
 calcite-core-1.16.0.jar
 calcite-druid-1.16.0.jar
 calcite-linq4j-1.16.0.jar
@@ -60,6 +70,7 @@ checker-qual-3.5.0.jar
 chill-java-0.7.6.jar
 chill_2.12-0.7.6.jar
 classgraph-4.1.7.jar
+classgraph-4.8.83.jar
 classmate-1.5.1.jar
 clickhouse-jdbc-0.4.6.jar
 client-3.0.0.jar
@@ -69,9 +80,11 @@ commons-crypto-1.0.0.jar
 commons-el-1.0.jar
 commons-codec-1.10.jar
 commons-codec-1.14.jar
+commons-codec-1.15.jar
 commons-collections-3.2.2.jar
 commons-collections4-4.4.jar
 commons-compiler-3.1.4.jar
+commons-compiler-3.1.9.jar
 commons-compress-1.21.jar
 commons-configuration-1.10.jar
 commons-configuration2-2.1.1.jar
@@ -90,6 +103,7 @@ commons-math3-3.6.1.jar
 commons-net-3.9.0.jar
 commons-pool-1.6.jar
 commons-pool2-2.8.1.jar
+commons-pool2-2.11.1.jar
 commons-text-1.10.0.jar
 concurrent-0.191.jar
 config-1.3.3.jar
@@ -111,9 +125,12 @@ elasticsearch-rest-client-sniffer-7.6.2.jar
 error_prone_annotations-2.18.0.jar
 error_prone_annotations-2.3.4.jar
 error_prone_annotations-2.4.0.jar
+error_prone_annotations-2.10.0.jar
 esri-geometry-api-2.0.0.jar
 eureka-client-1.10.14.jar
+eureka-client-1.10.17.jar
 eureka-core-1.10.14.jar
+eureka-core-1.10.17.jar
 evictor-1.0.0.jar
 excel-streaming-reader-4.0.5.jar
 expiringmap-0.5.6.jar
@@ -122,10 +139,12 @@ failureaccess-1.0.1.jar
 fastutil-6.5.6.jar
 fastutil-7.0.13.jar
 feign-core-10.12.jar
+feign-core-11.10.jar
 feign-form-3.8.0.jar
 feign-form-spring-3.8.0.jar
 feign-hystrix-10.12.jar
 feign-slf4j-10.12.jar
+feign-slf4j-11.10.jar
 flatbuffers-1.2.0-3f79e055.jar
 flink-annotations-1.12.2.jar
 flink-clients_2.12-1.12.2.jar
@@ -202,6 +221,7 @@ objenesis-3.2.jar
 snappy-java-1.1.8.3.jar
 force-shading-1.12.2.jar
 freemarker-2.3.31.jar
+freemarker-2.3.32.jar
 generex-1.0.2.jar
 grizzled-slf4j_2.12-1.3.2.jar
 gson-2.8.9.jar
@@ -236,6 +256,7 @@ hadoop-yarn-registry-3.3.4.jar
 hazelcast-5.3.0.jar
 hibernate-validator-5.1.2.Final.jar
 hibernate-validator-6.1.7.Final.jar
+hibernate-validator-6.2.5.Final.jar
 hive-classification-3.1.3.jar
 hive-common-3.1.3.jar
 hive-exec-3.1.3.jar
@@ -259,10 +280,15 @@ hk2-utils-2.4.0-b34.jar
 hppc-0.7.2.jar
 htrace-core-3.1.0-incubating.jar
 httpasyncclient-4.1.4.jar
+httpasyncclient-4.1.5.jar
 httpclient-4.5.13.jar
+httpclient-4.5.14.jar
 httpcore-4.4.14.jar
+httpcore-4.4.16.jar
 httpcore-nio-4.4.14.jar
+httpcore-nio-4.4.16.jar
 httpmime-4.5.13.jar
+httpmime-4.5.14.jar
 hystrix-core-1.5.18.jar
 ini4j-0.5.4.jar
 ion-java-1.0.2.jar
@@ -301,6 +327,7 @@ jakarta.websocket-api-1.1.2.jar
 jakarta.xml.bind-api-2.3.3.jar
 jamon-runtime-2.3.1.jar
 janino-3.1.4.jar
+janino-3.1.9.jar
 javassist-3.27.0-GA.jar
 javax-websocket-client-impl-9.4.48.v20220622.jar
 javax-websocket-server-impl-9.4.48.v20220622.jar
@@ -315,14 +342,18 @@ javax.ws.rs-api-2.0.1.jar
 javolution-5.5.1.jar
 jaxb-api-2.3.1.jar
 jaxb-runtime-2.3.4.jar
+jaxb-runtime-2.3.8.jar
 jboss-logging-3.4.2.Final.jar
+jboss-logging-3.4.3.Final.jar
 jcip-annotations-1.0-1.jar
 jcl-over-slf4j-1.7.30.jar
+jcl-over-slf4j-1.7.36.jar
 jcommander-1.81.jar
 jdbi3-core-3.4.0.jar
 jdbi3-sqlobject-3.4.0.jar
 jdo-api-3.0.1.jar
 jdom2-2.0.6.jar
+jdom2-2.0.6.1.jar
 jedis-3.9.0.jar
 jersey-apache-client4-1.19.4.jar
 jersey-client-1.19.4.jar
@@ -355,6 +386,7 @@ jetty-xml-9.4.48.v20220622.jar
 jline-2.14.6.jar
 jline-3.9.0.jar
 jmespath-java-1.11.792.jar
+jmespath-java-1.12.261.jar
 jmxutils-1.19.jar
 jna-5.12.1.jar
 jna-platform-5.12.1.jar
@@ -370,6 +402,7 @@ json-0.193.jar
 json-1.8.jar
 json-path-2.7.0.jar
 json-smart-2.3.1.jar
+json-smart-2.4.10.jar
 jsp-api-2.1.jar
 jsqlparser-4.2.jar
 jsr305-1.3.9.jar
@@ -379,8 +412,10 @@ jsr311-api-1.1.1.jar
 jta-1.1.jar
 jts-core-1.16.1.jar
 jul-to-slf4j-1.7.30.jar
+jul-to-slf4j-1.7.36.jar
 kafka-clients-2.5.1.jar
 kafka-clients-2.7.0.jar
+kafka-clients-3.1.2.jar
 kerb-admin-1.0.1.jar
 kerb-client-1.0.1.jar
 kerb-common-1.0.1.jar
@@ -396,35 +431,63 @@ kerby-pkix-1.0.1.jar
 kerby-util-1.0.1.jar
 kerby-xdr-1.0.1.jar
 knife4j-annotations-2.0.9.jar
+knife4j-annotations-3.0.3.jar
 knife4j-core-2.0.9.jar
+knife4j-core-3.0.3.jar
 knife4j-spring-2.0.9.jar
+knife4j-spring-3.0.3.jar
 knife4j-spring-boot-autoconfigure-2.0.9.jar
+knife4j-spring-boot-autoconfigure-3.0.3.jar
 knife4j-spring-boot-starter-2.0.9.jar
+knife4j-spring-boot-starter-3.0.3.jar
 knife4j-spring-ui-2.0.9.jar
+knife4j-spring-ui-3.0.3.jar
 kotlin-stdlib-1.3.72.jar
+kotlin-stdlib-1.6.21.jar
 kotlin-stdlib-common-1.3.72.jar
+kotlin-stdlib-common-1.6.21.jar
+kotlin-stdlib-jdk7-1.6.21.jar
+kotlin-stdlib-jdk8-1.6.21.jar
 kryo-2.24.0.jar
 kubernetes-client-5.4.1.jar
 kubernetes-model-admissionregistration-4.13.2.jar
+kubernetes-model-admissionregistration-5.10.2.jar
 kubernetes-model-apiextensions-4.13.2.jar
+kubernetes-model-apiextensions-5.10.2.jar
 kubernetes-model-apps-4.13.2.jar
+kubernetes-model-apps-5.10.2.jar
 kubernetes-model-autoscaling-4.13.2.jar
+kubernetes-model-autoscaling-5.10.2.jar
 kubernetes-model-batch-4.13.2.jar
+kubernetes-model-batch-5.10.2.jar
 kubernetes-model-certificates-4.13.2.jar
+kubernetes-model-certificates-5.10.2.jar
 kubernetes-model-common-5.4.1.jar
+kubernetes-model-coordination-5.10.2.jar
 kubernetes-model-coordination-4.13.2.jar
 kubernetes-model-core-5.4.1.jar
 kubernetes-model-discovery-4.13.2.jar
+kubernetes-model-discovery-5.10.2.jar
 kubernetes-model-events-4.13.2.jar
+kubernetes-model-events-5.10.2.jar
 kubernetes-model-extensions-4.13.2.jar
+kubernetes-model-extensions-5.10.2.jar
 kubernetes-model-flowcontrol-5.4.1.jar
+kubernetes-model-flowcontrol-5.10.2.jar
 kubernetes-model-metrics-4.13.2.jar
+kubernetes-model-metrics-5.10.2.jar
 kubernetes-model-networking-4.13.2.jar
+kubernetes-model-networking-5.10.2.jar
 kubernetes-model-node-4.13.2.jar
+kubernetes-model-node-5.10.2.jar
 kubernetes-model-policy-4.13.2.jar
+kubernetes-model-policy-5.10.2.jar
 kubernetes-model-rbac-4.13.2.jar
+kubernetes-model-rbac-5.10.2.jar
 kubernetes-model-scheduling-4.13.2.jar
+kubernetes-model-scheduling-5.10.2.jar
 kubernetes-model-storageclass-4.13.2.jar
+kubernetes-model-storageclass-5.10.2.jar
 libfb303-0.9.3.jar
 libthrift-0.15.0.pom
 libthrift-0.9.3.jar
@@ -439,16 +502,22 @@ log4j-jul-2.17.2.jar
 log4j-slf4j-impl-2.17.2.jar
 log4j-web-2.17.2.jar
 logging-interceptor-3.14.9.jar
+logging-interceptor-4.9.3.jar
 lz4-java-1.6.0.jar
 lz4-java-1.7.1.jar
 mapstruct-1.3.1.Final.jar
 mchange-commons-java-0.2.15.jar
 memory-0.9.0.jar
 metrics-core-4.1.22.jar
+metrics-core-4.2.18.jar
 metrics-json-4.1.22.jar
+metrics-json-4.2.18.jar
 metrics-jvm-4.1.22.jar
+metrics-jvm-4.2.18.jar
 micrometer-core-1.5.14.jar
+micrometer-core-1.9.10.jar
 micrometer-registry-prometheus-1.5.14.jar
+micrometer-registry-prometheus-1.9.10.jar
 minlog-1.3.0.jar
 mongo-java-driver-3.12.8.jar
 mybatis-3.5.7.jar
@@ -497,13 +566,19 @@ netty-transport-native-unix-common-4.1.86.Final.jar
 netty-transport-rxtx-4.1.86.Final.jar
 netty-transport-sctp-4.1.86.Final.jar
 netty-transport-udt-4.1.86.Final.jar
+netty-incubator-codec-classes-quic-0.0.39.Final.jar
+netty-incubator-codec-native-quic-0.0.39.Final-linux-x86_64.jar
 nimbus-jose-jwt-8.19.jar
+nimbus-jose-jwt-9.8.1.jar
 nio-multipart-parser-1.1.0.jar
 nio-stream-storage-1.1.3.jar
 objenesis-2.1.jar
 okhttp-3.14.9.jar
+okhttp-4.9.3.jar
 okhttp-urlconnection-3.14.9.jar
+okhttp-urlconnection-4.9.3.jar
 okio-1.17.2.jar
+okio-2.8.0.jar
 opencsv-2.3.jar
 opentracing-api-0.33.0.jar
 opentracing-noop-0.33.0.jar
@@ -548,10 +623,19 @@ py4j-0.10.4.jar
 quartz-2.3.2.jar
 re2j-1.1.jar
 reactive-streams-1.0.3.jar
+reactive-streams-1.0.4.jar
 reactor-core-3.3.17.RELEASE.jar
+reactor-core-3.4.29.jar
 reactor-extra-3.3.6.RELEASE.jar
+reactor-extra-3.4.10.jar
 reactor-netty-0.9.20.RELEASE.jar
 reactor-netty-0.9.7.RELEASE.jar
+reactor-netty-1.0.31.jar
+reactor-netty-core-1.0.31.jar
+reactor-netty-http-1.0.31.jar
+reactor-netty-http-brave-1.0.31.jar
+reactor-netty-incubator-quic-0.0.20.jar
+reload4j-1.2.19.jar
 reflections-0.9.12.jar
 ribbon-2.3.0.jar
 ribbon-core-2.3.0.jar
@@ -587,7 +671,13 @@ security-0.191.jar
 security-0.193.jar
 servo-core-0.12.21.jar
 simpleclient-0.8.1.jar
+simpleclient-0.15.0.jar
 simpleclient_common-0.8.1.jar
+simpleclient_common-0.15.0.jar
+simpleclient_tracer_common-0.15.0.jar
+simpleclient_tracer_otel-0.15.0.jar
+simpleclient_tracer_otel_agent-0.15.0.jar
+slf4j-reload4j-1.7.36.jar
 sketches-core-0.9.0.jar
 slf4j-api-1.7.30.jar
 slice-0.38.jar
@@ -599,66 +689,124 @@ snappy-java-1.1.8.4.jar
 spark-doris-connector-3.2_2.12-1.2.0.jar
 spark-redis_2.12-2.6.0.jar
 spring-aop-5.2.23.RELEASE.jar
+spring-aop-5.3.27.jar
 spring-beans-5.2.23.RELEASE.jar
+spring-beans-5.3.27.jar
 spring-boot-2.3.12.RELEASE.jar
+spring-boot-2.7.11.jar
 spring-boot-actuator-2.3.12.RELEASE.jar
+spring-boot-actuator-2.7.11.jar
 spring-boot-actuator-autoconfigure-2.3.12.RELEASE.jar
+spring-boot-actuator-autoconfigure-2.7.11.jar
 spring-boot-autoconfigure-2.3.12.RELEASE.jar
+spring-boot-autoconfigure-2.7.11.jar
 spring-boot-starter-2.3.12.RELEASE.jar
+spring-boot-starter-2.7.11.jar
 spring-boot-starter-actuator-2.3.12.RELEASE.jar
+spring-boot-starter-actuator-2.7.11.jar
 spring-boot-starter-aop-2.3.12.RELEASE.jar
+spring-boot-starter-aop-2.7.11.jar
 spring-boot-starter-cache-2.3.12.RELEASE.jar
+spring-boot-starter-cache-2.7.11.jar
 spring-boot-starter-freemarker-2.3.12.RELEASE.jar
+spring-boot-starter-freemarker-2.7.11.jar
 spring-boot-starter-jdbc-2.3.12.RELEASE.jar
+spring-boot-starter-jdbc-2.7.11.jar
 spring-boot-starter-jetty-2.3.12.RELEASE.jar
+spring-boot-starter-jetty-2.7.11.jar
 spring-boot-starter-json-2.3.12.RELEASE.jar
+spring-boot-starter-json-2.7.11.jar
 spring-boot-starter-log4j2-2.3.12.RELEASE.jar
+spring-boot-starter-log4j2-2.7.11.jar
 spring-boot-starter-quartz-2.3.12.RELEASE.jar
+spring-boot-starter-quartz-2.7.11.jar
 spring-boot-starter-reactor-netty-2.3.12.RELEASE.jar
+spring-boot-starter-reactor-netty-2.7.11.jar
 spring-boot-starter-validation-2.3.12.RELEASE.jar
+spring-boot-starter-validation-2.7.11.jar
 spring-boot-starter-web-2.3.12.RELEASE.jar
+spring-boot-starter-web-2.7.11.jar
 spring-boot-starter-webflux-2.3.12.RELEASE.jar
+spring-boot-starter-webflux-2.7.11.jar
 spring-cloud-commons-2.2.9.RELEASE.jar
+spring-cloud-commons-3.1.7.jar
 spring-cloud-context-2.2.9.RELEASE.jar
+spring-cloud-context-3.1.7.jar
 spring-cloud-gateway-core-2.2.9.RELEASE.jar
+spring-cloud-gateway-server-3.1.8.jar
 spring-cloud-gateway-server-2.2.9.RELEASE.jar
 spring-cloud-loadbalancer-2.2.9.RELEASE.jar
+spring-cloud-loadbalancer-3.1.7.jar
 spring-cloud-netflix-archaius-2.2.9.RELEASE.jar
 spring-cloud-netflix-eureka-client-2.2.9.RELEASE.jar
+spring-cloud-netflix-eureka-client-3.1.7.jar
 spring-cloud-netflix-eureka-server-2.2.9.RELEASE.jar
+spring-cloud-netflix-eureka-server-3.1.7.jar
 spring-cloud-netflix-hystrix-2.2.9.RELEASE.jar
 spring-cloud-netflix-ribbon-2.2.9.RELEASE.jar
 spring-cloud-openfeign-core-2.2.9.RELEASE.jar
+spring-cloud-openfeign-core-3.1.8.jar
 spring-cloud-starter-2.2.9.RELEASE.jar
+spring-cloud-starter-3.1.7.jar
 spring-cloud-starter-gateway-2.2.9.RELEASE.jar
+spring-cloud-starter-gateway-3.1.8.jar
 spring-cloud-starter-loadbalancer-2.2.9.RELEASE.jar
+spring-cloud-starter-loadbalancer-3.1.7.jar
+spring-cloud-starter-gateway-3.1.8.jar
 spring-cloud-starter-netflix-archaius-2.2.9.RELEASE.jar
+spring-cloud-starter-netflix-eureka-client-3.1.7.jar
 spring-cloud-starter-netflix-eureka-client-2.2.9.RELEASE.jar
 spring-cloud-starter-netflix-eureka-server-2.2.9.RELEASE.jar
+spring-cloud-starter-netflix-eureka-server-3.1.7.jar
 spring-cloud-starter-netflix-ribbon-2.2.9.RELEASE.jar
 spring-cloud-starter-openfeign-2.2.9.RELEASE.jar
+spring-cloud-starter-openfeign-3.1.8.jar
 spring-context-5.2.23.RELEASE.jar
+spring-context-5.3.27.jar
 spring-context-support-5.2.23.RELEASE.jar
+spring-context-support-5.3.27.jar
 spring-core-5.2.23.RELEASE.jar
+spring-core-5.3.27.jar
 spring-expression-5.2.23.RELEASE.jar
+spring-expression-5.3.27.jar
 spring-jcl-5.2.23.RELEASE.jar
+spring-jcl-5.3.27.jar
 spring-jdbc-5.2.23.RELEASE.jar
+spring-jdbc-5.3.27.jar
 spring-plugin-core-2.0.0.RELEASE.jar
 spring-plugin-metadata-2.0.0.RELEASE.jar
 spring-security-crypto-5.7.5.jar
+spring-security-crypto-5.7.8.jar
 spring-security-rsa-1.0.9.RELEASE.jar
+spring-security-rsa-1.0.11.RELEASE.jar
 spring-tx-5.2.23.RELEASE.jar
+spring-tx-5.3.27.jar
 spring-web-5.2.23.RELEASE.jar
+spring-web-5.3.27.jar
 spring-webflux-5.2.23.RELEASE.jar
+spring-webflux-5.3.27.jar
 spring-webmvc-5.2.23.RELEASE.jar
+spring-webmvc-5.3.27.jar
 springfox-bean-validators-2.10.5.jar
+springfox-bean-validators-3.0.0.jar
+springfox-boot-starter-3.0.0.jar
 springfox-core-2.10.5.jar
+springfox-core-3.0.0.jar
 springfox-schema-2.10.5.jar
+springfox-schema-3.0.0.jar
 springfox-spi-2.10.5.jar
+springfox-spi-3.0.0.jar
 springfox-spring-web-2.10.5.jar
+springfox-spring-web-3.0.0.jar
 springfox-spring-webmvc-2.10.5.jar
+springfox-spring-webmvc-3.0.0.jar
+springfox-spring-webflux-3.0.0.jar
 springfox-swagger-common-2.10.5.jar
+springfox-swagger-common-3.0.0.jar
 springfox-swagger2-2.10.5.jar
+springfox-swagger2-3.0.0.jar
+springfox-data-rest-3.0.0.jar
+springfox-oas-3.0.0.jar
 sqlline-1.3.0.jar
 sqoop-1.4.6-hadoop200.jar
 ssl-config-core_2.12-0.3.7.jar
@@ -666,11 +814,15 @@ stats-0.191.jar
 stax2-api-4.2.1.jar
 stringtemplate-3.2.1.jar
 swagger-annotations-1.5.22.jar
+swagger-annotations-2.1.2.jar
+swagger-core-1.5.22.jar
+swagger-models-2.1.2.jar
 swagger-models-1.5.22.jar
 tephra-api-0.6.0.jar
 tephra-core-0.6.0.jar
 tephra-hbase-compat-1.0-0.6.0.jar
 token-provider-1.0.1.jar
+tomcat-embed-el-9.0.74.jar
 transaction-api-1.1.jar
 trino-client-371.jar
 twill-api-0.6.0-incubating.jar
@@ -680,6 +832,7 @@ twill-discovery-api-0.6.0-incubating.jar
 twill-discovery-core-0.6.0-incubating.jar
 twill-zookeeper-0.6.0-incubating.jar
 txw2-2.3.4.jar
+txw2-2.3.8.jar
 units-1.3.jar
 units-1.6.jar
 validation-api-2.0.1.Final.jar
@@ -704,6 +857,10 @@ zstd-jni-1.4.5-6.jar
 zstd-jni-1.4.9-1.jar
 zstd-jni-1.5.0-4.jar
 zjsonpatch-0.3.0.jar
+zipkin-2.23.2.jar
+zipkin-reporter-2.16.3.jar
+zipkin-reporter-brave-2.16.3.jar
+zstd-jni-1.5.0-4.jar
 agrona-1.12.0.jar
 audience-annotations-0.12.0.jar
 audience-annotations-0.13.0.jar


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to