From cb27412021e09bbb375c9902f145f093109d47d8 Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Sun, 12 Apr 2020 15:46:24 +0800 Subject: [PATCH 1/9] fix issue#1350 --- .../sentinel-core-example/pom.xml | 13 +++++++---- .../src/main/resources/application.properties | 8 +++++++ .../config/NacosDataSourceProperties.java | 20 +++++++++++++++++ .../NacosDataSourceFactoryBean.java | 22 +++++++++++++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml index 650e46e7f..4e7e7249d 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/pom.xml @@ -23,6 +23,11 @@ spring-cloud-starter-alibaba-sentinel + + com.alibaba.cloud + spring-cloud-alibaba-sentinel-datasource + + org.springframework.boot spring-boot-starter-web @@ -36,10 +41,10 @@ spring-boot-starter-thymeleaf - - - - + + com.alibaba.csp + sentinel-datasource-nacos + diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties index 16ee4a26a..f158e3b7f 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties @@ -30,3 +30,11 @@ spring.cloud.sentinel.datasource.ds4.file.rule-type=system spring.cloud.sentinel.datasource.ds5.file.file=classpath: param-flow.json spring.cloud.sentinel.datasource.ds5.file.rule-type=param_flow + + +#spring.cloud.sentinel.datasource.ds6.nacos.server-addr=127.0.0.1:8848 +#spring.cloud.sentinel.datasource.ds6.nacos.username=nacos +#spring.cloud.sentinel.datasource.ds6.nacos.password=nacos +#spring.cloud.sentinel.datasource.ds6.nacos.dataId=flowrule.json +#spring.cloud.sentinel.datasource.ds6.nacos.data-type=json +#spring.cloud.sentinel.datasource.ds6.nacos.rule-type=flow \ No newline at end of file diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/config/NacosDataSourceProperties.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/config/NacosDataSourceProperties.java index e0aa9e741..08790ac4b 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/config/NacosDataSourceProperties.java +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/config/NacosDataSourceProperties.java @@ -32,6 +32,10 @@ public class NacosDataSourceProperties extends AbstractDataSourceProperties { private String serverAddr; + private String username; + + private String password; + @NotEmpty private String groupId = "DEFAULT_GROUP"; @@ -67,6 +71,22 @@ public class NacosDataSourceProperties extends AbstractDataSourceProperties { this.serverAddr = serverAddr; } + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + public String getGroupId() { return groupId; } diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java index f94c5fc6a..a0eda74e3 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/src/main/java/com/alibaba/cloud/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java @@ -35,6 +35,10 @@ public class NacosDataSourceFactoryBean implements FactoryBean private String serverAddr; + private String username; + + private String password; + private String groupId; private String dataId; @@ -63,6 +67,8 @@ public class NacosDataSourceFactoryBean implements FactoryBean if (!StringUtils.isEmpty(this.namespace)) { properties.setProperty(PropertyKeyConst.NAMESPACE, this.namespace); } + properties.setProperty(PropertyKeyConst.USERNAME, this.username); + properties.setProperty(PropertyKeyConst.PASSWORD, this.password); return new NacosDataSource(properties, groupId, dataId, converter); } @@ -79,6 +85,22 @@ public class NacosDataSourceFactoryBean implements FactoryBean this.serverAddr = serverAddr; } + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + public String getGroupId() { return groupId; } From 899107805585e5f124dabf090205ce8dec1d88bd Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Sun, 12 Apr 2020 15:56:13 +0800 Subject: [PATCH 2/9] fix issue#1350 --- .../src/main/resources/application.properties | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties index f158e3b7f..c796f9ba6 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties @@ -14,6 +14,13 @@ spring.cloud.sentinel.eager=true #spring.cloud.sentinel.filter.enabled=false #spring.cloud.sentinel.http-method-specify=false +#spring.cloud.sentinel.datasource.ds6.nacos.server-addr=127.0.0.1:8848 +#spring.cloud.sentinel.datasource.ds6.nacos.username=nacos +#spring.cloud.sentinel.datasource.ds6.nacos.password=nacos +#spring.cloud.sentinel.datasource.ds6.nacos.dataId=flowrule.json +#spring.cloud.sentinel.datasource.ds6.nacos.data-type=json +#spring.cloud.sentinel.datasource.ds6.nacos.rule-type=flow + spring.cloud.sentinel.datasource.ds1.file.file=classpath: flowrule.json spring.cloud.sentinel.datasource.ds1.file.data-type=json spring.cloud.sentinel.datasource.ds1.file.rule-type=flow @@ -30,11 +37,3 @@ spring.cloud.sentinel.datasource.ds4.file.rule-type=system spring.cloud.sentinel.datasource.ds5.file.file=classpath: param-flow.json spring.cloud.sentinel.datasource.ds5.file.rule-type=param_flow - - -#spring.cloud.sentinel.datasource.ds6.nacos.server-addr=127.0.0.1:8848 -#spring.cloud.sentinel.datasource.ds6.nacos.username=nacos -#spring.cloud.sentinel.datasource.ds6.nacos.password=nacos -#spring.cloud.sentinel.datasource.ds6.nacos.dataId=flowrule.json -#spring.cloud.sentinel.datasource.ds6.nacos.data-type=json -#spring.cloud.sentinel.datasource.ds6.nacos.rule-type=flow \ No newline at end of file From fd58f75e417cd8e9896c22ce4da60018318e39a4 Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Tue, 14 Apr 2020 16:03:06 +0800 Subject: [PATCH 3/9] sidecar enhance --- .../pom.xml | 9 ++-- .../src/main/resources/application.yml | 5 +- .../sidecar/SidecarAutoConfiguration.java | 2 - .../nacos/SidecarNacosAutoConfiguration.java | 22 ++++++-- .../nacos/SidecarNacosDiscoveryClient.java | 17 ++++--- .../SidecarNacosDiscoveryProperties.java | 50 +++++++++++++++++++ 6 files changed, 83 insertions(+), 22 deletions(-) create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml index 690d2031b..c6c66a83d 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/pom.xml @@ -20,9 +20,10 @@ org.springframework.boot spring-boot-starter-actuator + - org.springframework.boot - spring-boot-starter-web + org.springframework.cloud + spring-cloud-starter-gateway @@ -33,10 +34,6 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery - - io.projectreactor - reactor-core - org.springframework.boot diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml index ce9ac30f5..22642a71c 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example/src/main/resources/application.yml @@ -6,11 +6,13 @@ spring: username: nacos password: nacos discovery: - server-addr: localhost:8848 + server-addr: 127.0.0.1:8848 + group: test gateway: discovery: locator: enabled: true + application: name: node-service sidecar: @@ -18,6 +20,7 @@ sidecar: ip: 127.0.0.1 # 异构微服务的端口 port: 8060 + # 异构微服务的健康检查URL #health-check-url: http://localhost:8060/health.json management: diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java index da4bd851b..cf5e79820 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/SidecarAutoConfiguration.java @@ -18,7 +18,6 @@ package com.alibaba.cloud.sidecar; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -28,7 +27,6 @@ import org.springframework.web.client.RestTemplate; * @author www.itmuch.com */ @Configuration(proxyBeanMethods = false) -@EnableConfigurationProperties(SidecarProperties.class) public class SidecarAutoConfiguration { @Bean diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java index 1ba5a381c..06448562e 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosAutoConfiguration.java @@ -17,12 +17,15 @@ package com.alibaba.cloud.sidecar.nacos; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration; import com.alibaba.cloud.sidecar.SidecarAutoConfiguration; import com.alibaba.cloud.sidecar.SidecarDiscoveryClient; +import com.alibaba.cloud.sidecar.SidecarProperties; import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -30,15 +33,24 @@ import org.springframework.context.annotation.Configuration; * @author www.itmuch.com */ @Configuration(proxyBeanMethods = false) -@AutoConfigureBefore(SidecarAutoConfiguration.class) -@ConditionalOnBean(NacosDiscoveryProperties.class) +@AutoConfigureBefore({ NacosDiscoveryAutoConfiguration.class, + SidecarAutoConfiguration.class }) +@ConditionalOnClass(NacosDiscoveryProperties.class) +@EnableConfigurationProperties(SidecarProperties.class) public class SidecarNacosAutoConfiguration { + @Bean + @ConditionalOnMissingBean + public SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties( + SidecarProperties sidecarProperties) { + return new SidecarNacosDiscoveryProperties(sidecarProperties); + } + @Bean @ConditionalOnMissingBean public SidecarDiscoveryClient sidecarDiscoveryClient( - NacosDiscoveryProperties nacosDiscoveryProperties) { - return new SidecarNacosDiscoveryClient(nacosDiscoveryProperties); + SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) { + return new SidecarNacosDiscoveryClient(sidecarNacosDiscoveryProperties); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java index 92bc65ebf..76d4e2803 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryClient.java @@ -16,7 +16,6 @@ package com.alibaba.cloud.sidecar.nacos; -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.sidecar.SidecarDiscoveryClient; import com.alibaba.nacos.api.exception.NacosException; import org.slf4j.Logger; @@ -30,18 +29,19 @@ public class SidecarNacosDiscoveryClient implements SidecarDiscoveryClient { private static final Logger log = LoggerFactory .getLogger(SidecarNacosDiscoveryClient.class); - private final NacosDiscoveryProperties nacosDiscoveryProperties; + private final SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties; public SidecarNacosDiscoveryClient( - NacosDiscoveryProperties nacosDiscoveryProperties) { - this.nacosDiscoveryProperties = nacosDiscoveryProperties; + SidecarNacosDiscoveryProperties sidecarNacosDiscoveryProperties) { + this.sidecarNacosDiscoveryProperties = sidecarNacosDiscoveryProperties; } @Override public void registerInstance(String applicationName, String ip, Integer port) { try { - this.nacosDiscoveryProperties.namingServiceInstance().registerInstance( - applicationName, nacosDiscoveryProperties.getGroup(), ip, port); + this.sidecarNacosDiscoveryProperties.namingServiceInstance().registerInstance( + applicationName, sidecarNacosDiscoveryProperties.getGroup(), ip, + port); } catch (NacosException e) { log.warn("nacos exception happens", e); @@ -51,8 +51,9 @@ public class SidecarNacosDiscoveryClient implements SidecarDiscoveryClient { @Override public void deregisterInstance(String applicationName, String ip, Integer port) { try { - this.nacosDiscoveryProperties.namingServiceInstance().deregisterInstance( - applicationName, nacosDiscoveryProperties.getGroup(), ip, port); + this.sidecarNacosDiscoveryProperties.namingServiceInstance() + .deregisterInstance(applicationName, + sidecarNacosDiscoveryProperties.getGroup(), ip, port); } catch (NacosException e) { log.warn("nacos exception happens", e); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java new file mode 100644 index 000000000..705c0d77a --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java @@ -0,0 +1,50 @@ +/* + * Copyright 2013-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.sidecar.nacos; + +import java.net.SocketException; + +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.sidecar.SidecarProperties; + +import org.springframework.util.StringUtils; + +/** + * @author yuhuangbin + */ +public class SidecarNacosDiscoveryProperties extends NacosDiscoveryProperties { + + SidecarProperties sidecarProperties; + + public SidecarNacosDiscoveryProperties(SidecarProperties sidecarProperties) { + this.sidecarProperties = sidecarProperties; + } + + @Override + public void init() throws SocketException { + super.init(); + + String ip = sidecarProperties.getIp(); + if (!StringUtils.isEmpty(ip)) { + this.setIp(ip); + } + + Integer port = sidecarProperties.getPort(); + this.setPort(port); + } + +} From fd924146092d2741bf3f106c67035908aa390246 Mon Sep 17 00:00:00 2001 From: Ooo0oO0o0oO <907709476@qq.com> Date: Thu, 7 May 2020 18:11:45 +0800 Subject: [PATCH 4/9] fix the issue SpringCloudRegistryFactory always create registry instance --- .../dubbo/registry/SpringCloudRegistryFactory.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java index be13cb911..a036b29d3 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java @@ -24,6 +24,7 @@ import org.apache.dubbo.common.URL; import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.RegistryFactory; +import org.apache.dubbo.registry.support.AbstractRegistryFactory; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.context.ConfigurableApplicationContext; @@ -37,7 +38,7 @@ import static java.lang.System.getProperty; * @see RegistryFactory * @see SpringCloudRegistry */ -public class SpringCloudRegistryFactory implements RegistryFactory { +public class SpringCloudRegistryFactory extends AbstractRegistryFactory { /** * Spring Cloud Protocol. @@ -65,8 +66,6 @@ public class SpringCloudRegistryFactory implements RegistryFactory { private DubboGenericServiceFactory dubboGenericServiceFactory; - private volatile boolean initialized = false; - public SpringCloudRegistryFactory() { } @@ -76,9 +75,6 @@ public class SpringCloudRegistryFactory implements RegistryFactory { } protected void init() { - if (initialized || applicationContext == null) { - return; - } this.discoveryClient = applicationContext.getBean(DiscoveryClient.class); this.dubboServiceMetadataRepository = applicationContext .getBean(DubboServiceMetadataRepository.class); @@ -90,7 +86,7 @@ public class SpringCloudRegistryFactory implements RegistryFactory { } @Override - public Registry getRegistry(URL url) { + public Registry createRegistry(URL url) { init(); return new SpringCloudRegistry(url, discoveryClient, dubboServiceMetadataRepository, dubboMetadataConfigServiceProxy, From d11a922cf256f11cb5902ac612c7fb37a89d3d04 Mon Sep 17 00:00:00 2001 From: Ooo0oO0o0oO <907709476@qq.com> Date: Fri, 8 May 2020 11:31:13 +0800 Subject: [PATCH 5/9] format import --- .../cloud/dubbo/registry/SpringCloudRegistryFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java index a036b29d3..975b076f1 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/SpringCloudRegistryFactory.java @@ -23,8 +23,8 @@ import com.alibaba.cloud.dubbo.util.JSONUtils; import org.apache.dubbo.common.URL; import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.RegistryFactory; - import org.apache.dubbo.registry.support.AbstractRegistryFactory; + import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.context.ConfigurableApplicationContext; From 9831e9b69b3dcdd2d6b80ea76b0df21724887d62 Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Tue, 14 Apr 2020 16:03:06 +0800 Subject: [PATCH 6/9] upgrade sentinel version to 1.7.2 --- spring-cloud-alibaba-dependencies/pom.xml | 2 +- .../src/main/resources/application.properties | 1 + .../cloud/sentinel/SentinelProperties.java | 14 ++++++++++++++ .../sentinel/SentinelWebAutoConfiguration.java | 1 + .../cloud/sentinel/endpoint/SentinelEndpoint.java | 2 +- .../endpoint/SentinelHealthIndicator.java | 15 ++++++++++----- .../additional-spring-configuration-metadata.json | 6 ++++++ .../sentinel/SentinelAutoConfigurationTests.java | 13 +++++++++---- 8 files changed, 43 insertions(+), 11 deletions(-) diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 251909469..9cf5d9a8d 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -19,7 +19,7 @@ 2.2.1.RELEASE - 1.7.1 + 1.7.2 3.1.0 1.1.0 1.2.1 diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties index 16ee4a26a..959076d2b 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/src/main/resources/application.properties @@ -9,6 +9,7 @@ management.health.diskspace.enabled=false spring.cloud.sentinel.transport.dashboard=localhost:8080 spring.cloud.sentinel.eager=true +spring.cloud.sentinel.web-context-unify=true #spring.cloud.sentinel.block-page=/errorPage #spring.cloud.sentinel.filter.enabled=false diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelProperties.java index b6322c6f9..921cb518c 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelProperties.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelProperties.java @@ -102,6 +102,20 @@ public class SentinelProperties { */ private Boolean httpMethodSpecify = false; + /** + * Specify whether unify web context(i.e. use the default context name), and is true + * by default. + */ + private Boolean webContextUnify = true; + + public Boolean getWebContextUnify() { + return webContextUnify; + } + + public void setWebContextUnify(Boolean webContextUnify) { + this.webContextUnify = webContextUnify; + } + public boolean isEager() { return eager; } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelWebAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelWebAutoConfiguration.java index b5b28cdfc..b899320cf 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelWebAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/SentinelWebAutoConfiguration.java @@ -96,6 +96,7 @@ public class SentinelWebAutoConfiguration implements WebMvcConfigurer { public SentinelWebMvcConfig sentinelWebMvcConfig() { SentinelWebMvcConfig sentinelWebMvcConfig = new SentinelWebMvcConfig(); sentinelWebMvcConfig.setHttpMethodSpecify(properties.getHttpMethodSpecify()); + sentinelWebMvcConfig.setWebContextUnify(properties.getWebContextUnify()); if (blockExceptionHandlerOptional.isPresent()) { blockExceptionHandlerOptional diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelEndpoint.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelEndpoint.java index c1f38a850..b10844b43 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelEndpoint.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelEndpoint.java @@ -61,7 +61,7 @@ public class SentinelEndpoint { result.put("metricsFileSize", SentinelConfig.singleMetricFileSize()); result.put("metricsFileCharset", SentinelConfig.charset()); result.put("totalMetricsFileCount", SentinelConfig.totalMetricFileCount()); - result.put("consoleServer", TransportConfig.getConsoleServer()); + result.put("consoleServer", TransportConfig.getConsoleServerList()); result.put("clientIp", TransportConfig.getHeartbeatClientIp()); result.put("heartbeatIntervalMs", TransportConfig.getHeartbeatIntervalMs()); result.put("clientPort", TransportConfig.getPort()); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java index 2d9466b32..39b43408c 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java @@ -17,6 +17,7 @@ package com.alibaba.cloud.sentinel.endpoint; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.alibaba.cloud.sentinel.SentinelProperties; @@ -24,13 +25,14 @@ import com.alibaba.csp.sentinel.datasource.AbstractDataSource; import com.alibaba.csp.sentinel.heartbeat.HeartbeatSenderProvider; import com.alibaba.csp.sentinel.transport.HeartbeatSender; import com.alibaba.csp.sentinel.transport.config.TransportConfig; +import com.alibaba.csp.sentinel.util.function.Tuple2; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.actuate.health.Status; -import org.springframework.util.StringUtils; +import org.springframework.util.CollectionUtils; /** * A {@link HealthIndicator} for Sentinel, which checks the status of Sentinel Dashboard @@ -82,8 +84,9 @@ public class SentinelHealthIndicator extends AbstractHealthIndicator { // Check health of Dashboard boolean dashboardUp = true; - String consoleServer = TransportConfig.getConsoleServer(); - if (StringUtils.isEmpty(consoleServer)) { + List> consoleServerList = TransportConfig + .getConsoleServerList(); + if (CollectionUtils.isEmpty(consoleServerList)) { // If Dashboard isn't configured, it's OK and mark the status of Dashboard // with UNKNOWN. detailMap.put("dashboard", @@ -101,8 +104,10 @@ public class SentinelHealthIndicator extends AbstractHealthIndicator { else { // If failed to send heartbeat message, means that the Dashboard is DOWN dashboardUp = false; - detailMap.put("dashboard", new Status(Status.DOWN.getCode(), - consoleServer + " can't be connected")); + detailMap.put("dashboard", + new Status(Status.DOWN.getCode(), String.format( + "the dashboard servers [%s] one of them can't be connected", + consoleServerList))); } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 93acd7e52..97dd52e72 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -18,6 +18,12 @@ "defaultValue": false, "description": "earlier initialize heart-beat when the spring container starts when the transport dependency is on classpath, the configuration is effective." }, + { + "name": "spring.cloud.sentinel.web-context-unify", + "type": "java.lang.Boolean", + "defaultValue": true, + "description": "Specify whether unify web context(i.e. use the default context name), and is true by default." + }, { "name": "spring.cloud.sentinel.transport.port", "type": "java.lang.String", diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelAutoConfigurationTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelAutoConfigurationTests.java index ae67bd383..9406f56d8 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelAutoConfigurationTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelAutoConfigurationTests.java @@ -33,6 +33,7 @@ import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager; import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; import com.alibaba.csp.sentinel.transport.config.TransportConfig; +import com.alibaba.csp.sentinel.util.function.Tuple2; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -73,7 +74,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen "spring.cloud.sentinel.flow.coldFactor=3", "spring.cloud.sentinel.eager=true", "spring.cloud.sentinel.log.switchPid=true", - "spring.cloud.sentinel.transport.dashboard=http://localhost:8080", + "spring.cloud.sentinel.transport.dashboard=http://localhost:8080,http://localhost:8081", "spring.cloud.sentinel.transport.port=9999", "spring.cloud.sentinel.transport.clientIp=1.1.1.1", "spring.cloud.sentinel.transport.heartbeatIntervalMs=20000" }, @@ -142,7 +143,9 @@ public class SentinelAutoConfigurationTests { Map map = sentinelEndpoint.invoke(); assertThat(map.get("logUsePid")).isEqualTo(Boolean.TRUE); - assertThat(map.get("consoleServer")).isEqualTo("http://localhost:8080"); + assertThat(map.get("consoleServer").toString()).isEqualTo( + Arrays.asList(Tuple2.of("localhost", 8080), Tuple2.of("localhost", 8081)) + .toString()); assertThat(map.get("clientPort")).isEqualTo("9999"); assertThat(map.get("heartbeatIntervalMs")).isEqualTo(20000L); assertThat(map.get("clientIp")).isEqualTo("1.1.1.1"); @@ -174,7 +177,7 @@ public class SentinelAutoConfigurationTests { private void checkSentinelTransport() { assertThat(sentinelProperties.getTransport().getPort()).isEqualTo("9999"); assertThat(sentinelProperties.getTransport().getDashboard()) - .isEqualTo("http://localhost:8080"); + .isEqualTo("http://localhost:8080,http://localhost:8081"); assertThat(sentinelProperties.getTransport().getClientIp()).isEqualTo("1.1.1.1"); assertThat(sentinelProperties.getTransport().getHeartbeatIntervalMs()) .isEqualTo("20000"); @@ -191,7 +194,9 @@ public class SentinelAutoConfigurationTests { @Test public void testSentinelSystemProperties() { assertThat(LogBase.isLogNameUsePid()).isEqualTo(true); - assertThat(TransportConfig.getConsoleServer()).isEqualTo("http://localhost:8080"); + assertThat(TransportConfig.getConsoleServerList().toString()).isEqualTo( + Arrays.asList(Tuple2.of("localhost", 8080), Tuple2.of("localhost", 8081)) + .toString()); assertThat(TransportConfig.getPort()).isEqualTo("9999"); assertThat(TransportConfig.getHeartbeatIntervalMs().longValue()) .isEqualTo(20000L); From 2373f71005dc4ef12083dce462ad387b9ee89bbb Mon Sep 17 00:00:00 2001 From: yuhuangbin Date: Tue, 14 Apr 2020 16:03:06 +0800 Subject: [PATCH 7/9] NacosDataPropertiesParser enhance --- .../alibaba/cloud/nacos/parser/NacosDataPropertiesParser.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataPropertiesParser.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataPropertiesParser.java index 315caccbf..6dec190e8 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataPropertiesParser.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosDataPropertiesParser.java @@ -55,7 +55,9 @@ public class NacosDataPropertiesParser extends AbstractNacosDataParser { log.warn("the config data is invalid {}", dataLine); continue; } - result.put(dataLine.substring(0, index), dataLine.substring(index + 1)); + String key = dataLine.substring(0, index); + String value = dataLine.substring(index + 1); + result.put(key.trim(), value.trim()); } } return result; From 5d462252f5ef1b75077898bbcf3f3f8a75782aee Mon Sep 17 00:00:00 2001 From: jwf1173 <1553713823@qq.com> Date: Mon, 11 May 2020 11:04:33 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E6=8C=87?= =?UTF-8?q?=E5=AE=9Adubbo.protocol.port=E6=97=B6=EF=BC=8Cdubbo=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E8=B0=83=E7=94=A8=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud/dubbo/metadata/DubboProtocolConfigSupplier.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/DubboProtocolConfigSupplier.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/DubboProtocolConfigSupplier.java index 1dfb8e732..775d360cf 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/DubboProtocolConfigSupplier.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/DubboProtocolConfigSupplier.java @@ -65,7 +65,6 @@ public class DubboProtocolConfigSupplier implements Supplier { if (protocolConfig == null) { protocolConfig = new ProtocolConfig(); protocolConfig.setName(DEFAULT_PROTOCOL); - protocolConfig.setPort(-1); } return protocolConfig; From 1a163b1b85f4e251b3d4325e1ed9caf8ca5b7ba6 Mon Sep 17 00:00:00 2001 From: eshun <78552423@qq.com> Date: Fri, 15 May 2020 09:31:24 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/cloud/nacos/NacosDiscoveryProperties.java | 3 ++- .../cloud/nacos/registry/NacosServiceRegistry.java | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java index 5b283c9aa..afdad4f3c 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java @@ -64,8 +64,8 @@ import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME; * @author xiaojing * @author Mercy * @author lyuzb + * @author eshun */ - @ConfigurationProperties("spring.cloud.nacos.discovery") public class NacosDiscoveryProperties { @@ -211,6 +211,7 @@ public class NacosDiscoveryProperties { @PostConstruct public void init() throws SocketException { + namingService = null; metadata.put(PreservedMetadataKeys.REGISTER_SOURCE, "SPRING_CLOUD"); if (secure) { diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java index b0974a55f..a332038f4 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java @@ -33,6 +33,7 @@ import static org.springframework.util.ReflectionUtils.rethrowRuntimeException; /** * @author xiaojing * @author Mercy + * @author eshun */ public class NacosServiceRegistry implements ServiceRegistry { @@ -40,11 +41,8 @@ public class NacosServiceRegistry implements ServiceRegistry { private final NacosDiscoveryProperties nacosDiscoveryProperties; - private final NamingService namingService; - public NacosServiceRegistry(NacosDiscoveryProperties nacosDiscoveryProperties) { this.nacosDiscoveryProperties = nacosDiscoveryProperties; - this.namingService = nacosDiscoveryProperties.namingServiceInstance(); } @Override @@ -55,6 +53,7 @@ public class NacosServiceRegistry implements ServiceRegistry { return; } + NamingService namingService = namingService(); String serviceId = registration.getServiceId(); String group = nacosDiscoveryProperties.getGroup(); @@ -84,7 +83,7 @@ public class NacosServiceRegistry implements ServiceRegistry { return; } - NamingService namingService = nacosDiscoveryProperties.namingServiceInstance(); + NamingService namingService = namingService(); String serviceId = registration.getServiceId(); String group = nacosDiscoveryProperties.getGroup(); @@ -165,4 +164,8 @@ public class NacosServiceRegistry implements ServiceRegistry { return instance; } + private NamingService namingService() { + return nacosDiscoveryProperties.namingServiceInstance(); + } + }