fix(nacos): Repair to create a large number of Nacos*Service problems

pull/1050/head
chuntaojun 5 years ago
commit 935f50f9ab

@ -127,3 +127,7 @@ spring-cloud-alibaba@googlegroups.com欢迎通过此邮件列表讨论与 spr
![DingQR](https://img.alicdn.com/tfs/TB1zrRie4v1gK0jSZFFXXb0sXXa-7862-3570.png)
如图片有问题,访问 https://img.alicdn.com/tfs/TB1zrRie4v1gK0jSZFFXXb0sXXa-7862-3570.png
## 社区相关开源
**[Nepxion Discovery](https://github.com/Nepxion/Discovery)**一款集成Spring Cloud Alibaba、Nacos、Sentinel等阿里巴巴中间件实现网关和服务的灰度发布、路由、权重、限流、熔断、降级、隔离、监控、追踪等功能的微服务开源解决。使用指南 请参考 **[Nepxion Discovery Guide](https://github.com/Nepxion/DiscoveryGuide)**。

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress files="[\\/]spring-cloud-alibaba-examples[\\/]" checks="HideUtilityClassConstructorCheck" />
<suppress files=".*" checks="LineLength" />
</suppressions>

@ -282,6 +282,24 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<executions>
<execution>
<id>checkstyle-validation</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<!-- Checkstyle rules inherited from spring-cloud-build -->
<suppressionsLocation>eclipse/checkstyle-suppressions.xml</suppressionsLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<failOnViolation>true</failOnViolation>
<violationSeverity>warning</violationSeverity>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

@ -21,7 +21,7 @@
<sentinel.version>1.6.3</sentinel.version>
<oss.version>3.1.0</oss.version>
<seata.version>0.9.0</seata.version>
<nacos.client.version>1.1.1</nacos.client.version>
<nacos.client.version>1.1.4</nacos.client.version>
<nacos.config.version>0.8.0</nacos.config.version>
<acm.version>1.0.9</acm.version>
<ans.version>1.0.1</ans.version>
@ -178,11 +178,6 @@
<artifactId>sentinel-reactor-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>sentinel-dubbo-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-cluster-server-default</artifactId>
@ -307,6 +302,11 @@
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>

@ -505,6 +505,8 @@ public class DubboServiceDiscoveryAutoConfiguration {
private final NamingService namingService;
private final NacosDiscoveryProperties nacosDiscoveryProperties;
/**
* the set of services is listening.
*/
@ -512,6 +514,7 @@ public class DubboServiceDiscoveryAutoConfiguration {
NacosConfiguration(NacosDiscoveryProperties nacosDiscoveryProperties) {
this.namingService = nacosDiscoveryProperties.namingServiceInstance();
this.nacosDiscoveryProperties = nacosDiscoveryProperties;
this.listeningServices = new ConcurrentSkipListSet<>();
}
@ -536,7 +539,8 @@ public class DubboServiceDiscoveryAutoConfiguration {
private void subscribeEventListener(String serviceName) {
if (listeningServices.add(serviceName)) {
try {
namingService.subscribe(serviceName, event -> {
String group = nacosDiscoveryProperties.getGroup();
namingService.subscribe(serviceName, group, event -> {
if (event instanceof NamingEvent) {
NamingEvent namingEvent = (NamingEvent) event;
List<ServiceInstance> serviceInstances = hostToServiceInstanceList(

@ -390,11 +390,9 @@ public class DubboServiceMetadataRepository
return emptyList();
}
return hasText(protocol)
? urls.stream()
.filter(url -> url.getProtocol().equalsIgnoreCase(protocol))
.collect(Collectors.toList())
: unmodifiableList(urls);
return hasText(protocol) ? urls.stream()
.filter(url -> url.getProtocol().equalsIgnoreCase(protocol))
.collect(Collectors.toList()) : unmodifiableList(urls);
}
/**

@ -19,7 +19,7 @@ package com.alibaba.cloud.dubbo.autoconfigure;
import org.springframework.boot.test.context.SpringBootTest;
/**
* {@link DubboServiceRegistrationAutoConfiguration} Test
* {@link DubboServiceRegistrationAutoConfiguration} Test.
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
*/

@ -26,7 +26,7 @@ import org.springframework.core.ResolvableType;
import org.springframework.http.MediaType;
/**
* {@link AbstractMediaTypeExpression} Test
* {@link AbstractMediaTypeExpression} Test.
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
*/

@ -35,6 +35,9 @@ import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class OssApplication {
/**
* Bucket Name of OSS Example.
*/
public static final String BUCKET_NAME = "spring-cloud-alibaba-test";
public static void main(String[] args) throws URISyntaxException {

@ -20,14 +20,29 @@ import java.io.Serializable;
public class Order implements Serializable {
/**
* order id.
*/
public long id;
/**
* user id.
*/
public String userId;
/**
* commodity code.
*/
public String commodityCode;
/**
* count.
*/
public int count;
/**
* money.
*/
public int money;
@Override

@ -20,14 +20,29 @@ import java.io.Serializable;
public class Order implements Serializable {
/**
* id.
*/
public long id;
/**
* user id.
*/
public String userId;
/**
* commodity code.
*/
public String commodityCode;
/**
* count.
*/
public int count;
/**
* money.
*/
public int money;
@Override

@ -25,7 +25,11 @@ import org.springframework.http.client.ClientHttpRequestExecution;
/**
* @author fangjian
*/
public class ExceptionUtil {
public final class ExceptionUtil {
private ExceptionUtil() {
}
public static SentinelClientHttpResponse handleException(HttpRequest request,
byte[] body, ClientHttpRequestExecution execution, BlockException ex) {

@ -25,6 +25,7 @@
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>sentinel-dubbo-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

@ -25,6 +25,7 @@
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>sentinel-dubbo-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@ -41,7 +42,6 @@
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
</dependency>
</dependencies>
<build>

@ -33,7 +33,7 @@ public class EchoServiceFallback implements EchoService {
}
/**
*
* .
* @param str
* @return
*/

@ -33,9 +33,9 @@ import org.springframework.web.bind.annotation.PathVariable;
public interface EchoService {
/**
*
* .
* @param str
* @return
* @return echo result
*/
@GetMapping("/echo/{str}")
String echo(@PathVariable("str") String str);

@ -65,7 +65,7 @@ public class RocketMQBusApplication {
private ObjectMapper objectMapper;
/**
* Publish the {@link UserRemoteApplicationEvent}
* Publish the {@link UserRemoteApplicationEvent}.
* @param name the user name
* @param destination the destination
* @return If published
@ -82,7 +82,7 @@ public class RocketMQBusApplication {
}
/**
* Listener on the {@link UserRemoteApplicationEvent}
* Listener on the {@link UserRemoteApplicationEvent}.
* @param event {@link UserRemoteApplicationEvent}
*/
@EventListener

@ -23,7 +23,7 @@ import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.context.annotation.Bean;
/**
* Nacos Config Server Bootstrap
* Nacos Config Server Bootstrap.
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @since 0.2.0

@ -37,7 +37,8 @@ public class NacosConfigBootstrapConfiguration {
}
@Bean
public NacosPropertySourceLocator nacosPropertySourceLocator(NacosConfigProperties nacosConfigProperties) {
public NacosPropertySourceLocator nacosPropertySourceLocator(
NacosConfigProperties nacosConfigProperties) {
return new NacosPropertySourceLocator(nacosConfigProperties);
}

@ -363,8 +363,10 @@ public class NacosConfigProperties {
public ConfigService configServiceInstance() {
if (null == configService) {
try {
configService = NacosFactory.createConfigService(getConfigServiceProperties());
} catch (NacosException e) {
configService = NacosFactory
.createConfigService(getConfigServiceProperties());
}
catch (NacosException e) {
log.error("create naming service error!properties={},e=,", this, e);
return null;
}

@ -51,7 +51,8 @@ public class NacosConfigEndpointAutoConfiguration {
@Bean
public NacosConfigHealthIndicator nacosConfigHealthIndicator() {
return new NacosConfigHealthIndicator(nacosConfigProperties.configServiceInstance());
return new NacosConfigHealthIndicator(
nacosConfigProperties.configServiceInstance());
}
}

@ -120,8 +120,8 @@ public class NacosServiceRegistry implements ServiceRegistry<Registration> {
}
try {
nacosDiscoveryProperties.namingMaintainServiceInstance().updateInstance(serviceId,
instance);
nacosDiscoveryProperties.namingMaintainServiceInstance()
.updateInstance(serviceId, instance);
}
catch (Exception e) {
throw new RuntimeException("update nacos instance status fail", e);

@ -46,16 +46,17 @@ import org.springframework.context.annotation.Configuration;
public class NacosServiceRegistryAutoConfiguration {
@Bean
public NacosServiceRegistry nacosServiceRegistry(NacosDiscoveryProperties nacosDiscoveryProperties) {
public NacosServiceRegistry nacosServiceRegistry(
NacosDiscoveryProperties nacosDiscoveryProperties) {
return new NacosServiceRegistry(nacosDiscoveryProperties);
}
@Bean
@ConditionalOnBean(AutoServiceRegistrationProperties.class)
public NacosRegistration nacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties,
public NacosRegistration nacosRegistration(
NacosDiscoveryProperties nacosDiscoveryProperties,
ApplicationContext context) {
return new NacosRegistration(nacosDiscoveryProperties,
context);
return new NacosRegistration(nacosDiscoveryProperties, context);
}
@Bean

@ -37,8 +37,7 @@ public class NacosRibbonClientConfiguration {
@ConditionalOnMissingBean
public ServerList<?> ribbonServerList(IClientConfig config,
NacosDiscoveryProperties nacosDiscoveryProperties) {
NacosServerList serverList = new NacosServerList(
nacosDiscoveryProperties);
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
serverList.initWithNiwsConfig(config);
return serverList;
}

@ -54,7 +54,8 @@ public class NacosRule extends AbstractLoadBalancerRule {
DynamicServerListLoadBalancer loadBalancer = (DynamicServerListLoadBalancer) getLoadBalancer();
String name = loadBalancer.getName();
NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
NamingService namingService = nacosDiscoveryProperties
.namingServiceInstance();
List<Instance> instances = namingService.selectInstances(name, true);
if (CollectionUtils.isEmpty(instances)) {
LOGGER.warn("no instance in service {}", name);

@ -68,7 +68,8 @@ public class NacosServiceDiscoveryTest {
when(namingService.selectInstances(eq(serviceName), eq("DEFAULT"), eq(true)))
.thenReturn(instances);
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(nacosDiscoveryProperties);
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(
nacosDiscoveryProperties);
List<ServiceInstance> serviceInstances = serviceDiscovery
.getInstances(serviceName);
@ -106,7 +107,8 @@ public class NacosServiceDiscoveryTest {
when(namingService.getServicesOfServer(eq(1), eq(Integer.MAX_VALUE),
eq("DEFAULT"))).thenReturn(nacosServices);
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(nacosDiscoveryProperties);
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(
nacosDiscoveryProperties);
List<String> services = serviceDiscovery.getServices();

@ -176,13 +176,13 @@ public class NacosAutoServiceRegistrationTests {
}
private void checkoutEndpoint() throws Exception {
NacosDiscoveryEndpoint nacosDiscoveryEndpoint = new NacosDiscoveryEndpoint(properties);
NacosDiscoveryEndpoint nacosDiscoveryEndpoint = new NacosDiscoveryEndpoint(
properties);
Map<String, Object> map = nacosDiscoveryEndpoint.nacosDiscovery();
assertThat(properties).isEqualTo(map.get("NacosDiscoveryProperties"));
assertThat(
properties.namingServiceInstance().getSubscribeServices().toString())
.isEqualTo(map.get("subscribe").toString());
assertThat(properties.namingServiceInstance().getSubscribeServices().toString())
.isEqualTo(map.get("subscribe").toString());
}
@Configuration

@ -53,8 +53,7 @@ public class NacosServerListTests {
when(namingService.selectInstances(anyString(), eq("DEFAULT"), eq(true)))
.thenReturn(null);
NacosServerList serverList = new NacosServerList(
nacosDiscoveryProperties);
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
List<NacosServer> servers = serverList.getInitialListOfServers();
assertThat(servers).isEmpty();
}
@ -80,8 +79,7 @@ public class NacosServerListTests {
IClientConfig clientConfig = mock(IClientConfig.class);
when(clientConfig.getClientName()).thenReturn("test-service");
NacosServerList serverList = new NacosServerList(
nacosDiscoveryProperties);
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
serverList.initWithNiwsConfig(clientConfig);
List<NacosServer> servers = serverList.getInitialListOfServers();
assertThat(servers).hasSize(1);
@ -115,8 +113,7 @@ public class NacosServerListTests {
IClientConfig clientConfig = mock(IClientConfig.class);
when(clientConfig.getClientName()).thenReturn("test-service");
NacosServerList serverList = new NacosServerList(
nacosDiscoveryProperties);
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
serverList.initWithNiwsConfig(clientConfig);
List<NacosServer> servers = serverList.getInitialListOfServers();
assertThat(servers).hasSize(1);
@ -154,8 +151,7 @@ public class NacosServerListTests {
IClientConfig clientConfig = mock(IClientConfig.class);
when(clientConfig.getClientName()).thenReturn("test-service");
NacosServerList serverList = new NacosServerList(
nacosDiscoveryProperties);
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
serverList.initWithNiwsConfig(clientConfig);
List<NacosServer> servers = serverList.getUpdatedListOfServers();

@ -24,7 +24,11 @@ import com.alibaba.nacos.api.naming.pojo.Instance;
/**
* @author xiaojing
*/
public class NacosMockTest {
public final class NacosMockTest {
private NacosMockTest() {
}
public static Instance serviceInstance(String serviceName, boolean isHealthy,
Map<String, String> metadata) {

@ -16,12 +16,14 @@
package com.alibaba.cloud.seata.web;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author xiaojing
*/
@ConditionalOnWebApplication
public class SeataHandlerInterceptorConfiguration implements WebMvcConfigurer {
@Override

@ -30,6 +30,11 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-apache-dubbo-adapter</artifactId>

@ -37,7 +37,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Add this unit test to verify https://github.com/alibaba/spring-cloud-alibaba/pull/838
* Add this unit test to verify https://github.com/alibaba/spring-cloud-alibaba/pull/838.
*
* @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
*/

@ -23,7 +23,11 @@ import com.alibaba.ans.shaded.com.taobao.vipserver.client.core.Host;
/**
* @author xiaojing
*/
public class AnsMockTest {
public final class AnsMockTest {
private AnsMockTest() {
}
public static Host hostInstance(String serviceName, boolean valid,
Map<String, String> metadata) {

@ -27,7 +27,7 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import static org.assertj.core.api.Assertions.assertThat;
/**
* {@link OSS} {@link OssProperties} Test
* {@link OSS} {@link OssProperties} Test.
*
* @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
*/

Loading…
Cancel
Save