diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml
new file mode 100644
index 00000000..dc211efe
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml
@@ -0,0 +1,74 @@
+
+
+
+
+ com.alibaba.cloud
+ nacos-discovery-example
+ 2.2.0.BUILD-SNAPSHOT
+
+ 4.0.0
+
+
+ nacos-discovery-consumer-sclb-example
+ jar
+ Example demonstrating how to use nacos discovery
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-ribbon
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-ribbon
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ ${maven-deploy-plugin.version}
+
+ true
+
+
+
+
+
+
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/scripts/openfeign.sh b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/scripts/openfeign.sh
new file mode 100644
index 00000000..975d060d
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/scripts/openfeign.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+n=1
+while [ $n -le 10 ]
+do
+ echo `curl -s http://localhost:18083/echo-feign/openfeign`
+ let n++
+done
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/scripts/resttemplate.sh b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/scripts/resttemplate.sh
new file mode 100644
index 00000000..e9d2e630
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/scripts/resttemplate.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+n=1
+while [ $n -le 10 ]
+do
+ echo `curl -s http://localhost:18083/echo-rest/resttemplate`
+ let n++
+done
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java
new file mode 100644
index 00000000..695538af
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2018 the original author or authors.
+ *
+ * Licensed 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
+ *
+ * https://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 com.alibaba.cloud.examples;
+
+import java.util.List;
+import java.util.Random;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import reactor.core.publisher.Mono;
+
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.client.loadbalancer.reactive.DefaultResponse;
+import org.springframework.cloud.client.loadbalancer.reactive.EmptyResponse;
+import org.springframework.cloud.client.loadbalancer.reactive.Request;
+import org.springframework.cloud.client.loadbalancer.reactive.Response;
+import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
+import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier;
+import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author Jim
+ */
+@SpringBootApplication
+@EnableDiscoveryClient(autoRegister = false)
+@EnableFeignClients
+public class ConsumerSCLBApplication {
+
+ @LoadBalanced
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
+ @Configuration
+ @LoadBalancerClient(value = "service-provider", configuration = MyLoadBalancerConfiguration.class)
+ class MySCLBConfiguration {
+
+ }
+
+ static class RandomLoadBalancer implements ReactorServiceInstanceLoadBalancer {
+
+ private static final Logger log = LoggerFactory
+ .getLogger(RandomLoadBalancer.class);
+
+ private ObjectProvider serviceInstanceListSupplierProvider;
+
+ private final String serviceId;
+
+ private final Random random;
+
+ public RandomLoadBalancer(
+ ObjectProvider serviceInstanceListSupplierProvider,
+ String serviceId) {
+ this.serviceInstanceListSupplierProvider = serviceInstanceListSupplierProvider;
+ this.serviceId = serviceId;
+ this.random = new Random();
+ }
+
+ @Override
+ public Mono> choose(Request request) {
+ log.info("random spring cloud loadbalacer active -.-");
+ ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider
+ .getIfAvailable(NoopServiceInstanceListSupplier::new);
+ return supplier.get().next().map(this::getInstanceResponse);
+ }
+
+ private Response getInstanceResponse(
+ List instances) {
+ if (instances.isEmpty()) {
+ return new EmptyResponse();
+ }
+ ServiceInstance instance = instances.get(random.nextInt(instances.size()));
+
+ return new DefaultResponse(instance);
+ }
+ }
+
+ @FeignClient(name = "service-provider")
+ public interface EchoService {
+
+ @GetMapping("/echo/{str}")
+ String echo(@PathVariable("str") String str);
+
+ @GetMapping("/divide")
+ String divide(@RequestParam("a") Integer a, @RequestParam("b") Integer b);
+
+ default String divide(Integer a) {
+ return divide(a, 0);
+ }
+
+ @GetMapping("/notFound")
+ String notFound();
+
+ }
+
+ @RestController
+ class TestController {
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Autowired
+ private EchoService echoService;
+
+ @GetMapping("/echo-rest/{str}")
+ public String rest(@PathVariable String str) {
+ return restTemplate.getForObject("http://service-provider/echo/" + str,
+ String.class);
+ }
+
+ @GetMapping("/echo-feign/{str}")
+ public String feign(@PathVariable String str) {
+ return echoService.echo(str);
+ }
+
+ }
+
+ public static void main(String[] args) {
+ SpringApplication.run(ConsumerSCLBApplication.class, args);
+ }
+
+}
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/MyLoadBalancerConfiguration.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/MyLoadBalancerConfiguration.java
new file mode 100644
index 00000000..cad930dd
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/MyLoadBalancerConfiguration.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2018 the original author or authors.
+ *
+ * Licensed 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
+ *
+ * https://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 com.alibaba.cloud.examples;
+
+import com.alibaba.cloud.examples.ConsumerSCLBApplication.RandomLoadBalancer;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.cloud.client.ServiceInstance;
+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.core.env.Environment;
+
+/**
+ * @author Jim
+ */
+public class MyLoadBalancerConfiguration {
+
+ @Bean
+ @ConditionalOnMissingBean
+ public ReactorLoadBalancer reactorServiceInstanceLoadBalancer(
+ Environment environment,
+ LoadBalancerClientFactory loadBalancerClientFactory) {
+ String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
+ return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name,
+ ServiceInstanceListSupplier.class), name);
+ }
+
+}
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/resources/application.properties
new file mode 100644
index 00000000..2c021065
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+spring.application.name=service-consumer-sclb
+server.port=18083
+management.endpoints.web.exposure.include=*
+spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
+
+spring.cloud.loadbalancer.ribbon.enabled=false
\ No newline at end of file
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/com/alibaba/cloud/examples/ProviderApplication.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/com/alibaba/cloud/examples/ProviderApplication.java
index 64b43b23..94a84259 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/com/alibaba/cloud/examples/ProviderApplication.java
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/com/alibaba/cloud/examples/ProviderApplication.java
@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
/**
* @author xiaojing
*/
-@EnableDiscoveryClient(autoRegister = false)
+@EnableDiscoveryClient
@SpringBootApplication
public class ProviderApplication {
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml
index 3c5c31fa..6518e4cd 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/pom.xml
@@ -18,6 +18,7 @@
nacos-discovery-consumer-example
+ nacos-discovery-consumer-sclb-example
nacos-discovery-provider-example
nacos-discovery-spring-cloud-config-server-example
nacos-discovery-spring-cloud-config-client-example