Merge pull request #402 from wehotel/develop
This commit is contained in:
@@ -20,10 +20,10 @@
|
|||||||
<spring-session-bom.version>Dragonfruit-SR3</spring-session-bom.version>
|
<spring-session-bom.version>Dragonfruit-SR3</spring-session-bom.version>
|
||||||
<reactor-bom.version>Dysprosium-SR25</reactor-bom.version>
|
<reactor-bom.version>Dysprosium-SR25</reactor-bom.version>
|
||||||
<lettuce.version>5.3.7.RELEASE</lettuce.version>
|
<lettuce.version>5.3.7.RELEASE</lettuce.version>
|
||||||
<netty.version>4.1.73.Final</netty.version>
|
<netty.version>4.1.74.Final</netty.version>
|
||||||
<httpcore.version>4.4.15</httpcore.version>
|
<httpcore.version>4.4.15</httpcore.version>
|
||||||
<log4j2.version>2.17.1</log4j2.version>
|
<log4j2.version>2.17.1</log4j2.version>
|
||||||
<slf4j.version>1.7.33</slf4j.version>
|
<slf4j.version>1.7.35</slf4j.version>
|
||||||
<commons-lang3.version>3.12.0</commons-lang3.version>
|
<commons-lang3.version>3.12.0</commons-lang3.version>
|
||||||
<lombok.version>1.18.22</lombok.version>
|
<lombok.version>1.18.22</lombok.version>
|
||||||
<apache.dubbo.version>2.7.5</apache.dubbo.version>
|
<apache.dubbo.version>2.7.5</apache.dubbo.version>
|
||||||
|
|||||||
@@ -163,8 +163,10 @@ public class FlowControlFilter extends FizzWebFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ServerHttpResponse resp = exchange.getResponse();
|
ServerHttpResponse resp = exchange.getResponse();
|
||||||
resp.setStatusCode(HttpStatus.OK);
|
resp.setStatusCode(HttpStatus.FORBIDDEN);
|
||||||
resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, responseContentType);
|
HttpHeaders headers = resp.getHeaders();
|
||||||
|
headers.set(HttpHeaders.CONTENT_TYPE, responseContentType);
|
||||||
|
headers.set("traceId", traceId);
|
||||||
return resp.writeWith(Mono.just(resp.bufferFactory().wrap(responseContent.getBytes())));
|
return resp.writeWith(Mono.just(resp.bufferFactory().wrap(responseContent.getBytes())));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ import java.util.Properties;
|
|||||||
|
|
||||||
public abstract class FizzServiceRegistration {
|
public abstract class FizzServiceRegistration {
|
||||||
|
|
||||||
protected static final Logger log = LoggerFactory.getLogger(FizzServiceRegistration.class);
|
protected static final Logger LOGGER = LoggerFactory.getLogger(FizzServiceRegistration.class);
|
||||||
|
|
||||||
public enum Type {
|
public enum Type {
|
||||||
EUREKA, NACOS;
|
EUREKA, NACOS;
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import com.netflix.discovery.DiscoveryClient;
|
|||||||
import com.netflix.discovery.EurekaClientConfig;
|
import com.netflix.discovery.EurekaClientConfig;
|
||||||
import com.netflix.discovery.shared.Application;
|
import com.netflix.discovery.shared.Application;
|
||||||
import com.netflix.discovery.shared.Applications;
|
import com.netflix.discovery.shared.Applications;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.springframework.cloud.netflix.eureka.CloudEurekaClient;
|
import org.springframework.cloud.netflix.eureka.CloudEurekaClient;
|
||||||
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
|
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
|
||||||
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration;
|
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration;
|
||||||
@@ -42,9 +41,14 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
|||||||
|
|
||||||
private final CloudEurekaClient client;
|
private final CloudEurekaClient client;
|
||||||
|
|
||||||
|
private final long renewalInterval;
|
||||||
|
|
||||||
|
private long prevHeartbeatTimestamp = -1;
|
||||||
|
|
||||||
public FizzEurekaServiceRegistration(String id, EurekaRegistration registration, EurekaServiceRegistry serviceRegistry, CloudEurekaClient client) {
|
public FizzEurekaServiceRegistration(String id, EurekaRegistration registration, EurekaServiceRegistry serviceRegistry, CloudEurekaClient client) {
|
||||||
super(id, Type.EUREKA, registration, serviceRegistry);
|
super(id, Type.EUREKA, registration, serviceRegistry);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
renewalInterval = this.client.getApplicationInfoManager().getInfo().getLeaseInfo().getRenewalIntervalInSecs() * 1000L;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiscoveryClient getDiscoveryClient() {
|
public DiscoveryClient getDiscoveryClient() {
|
||||||
@@ -102,8 +106,23 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String join = StringUtils.join(eurekaServerServiceUrls, ',');
|
long heartbeatTimestamp = client.getStats().lastSuccessfulHeartbeatTimestampMs();
|
||||||
throw Utils.runtimeExceptionWithoutStack("can't find any server with " + join);
|
if (heartbeatTimestamp == -1) {
|
||||||
|
return transfrom(InstanceInfo.InstanceStatus.STARTING);
|
||||||
|
}
|
||||||
|
if (heartbeatTimestamp > prevHeartbeatTimestamp) {
|
||||||
|
prevHeartbeatTimestamp = heartbeatTimestamp;
|
||||||
|
return transfrom(InstanceInfo.InstanceStatus.UP);
|
||||||
|
}
|
||||||
|
long duration = prevHeartbeatTimestamp + renewalInterval;
|
||||||
|
if (System.currentTimeMillis() > duration) {
|
||||||
|
LOGGER.warn("unknown eureka {} status", getId());
|
||||||
|
return transfrom(InstanceInfo.InstanceStatus.UNKNOWN);
|
||||||
|
} else {
|
||||||
|
return transfrom(InstanceInfo.InstanceStatus.UP);
|
||||||
|
}
|
||||||
|
// String join = StringUtils.join(eurekaServerServiceUrls, ',');
|
||||||
|
// throw Utils.runtimeExceptionWithoutStack("can't get eureka server instance status by " + join);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ServerStatus transfrom(InstanceInfo.InstanceStatus status) {
|
private ServerStatus transfrom(InstanceInfo.InstanceStatus status) {
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration {
|
|||||||
return ServerStatus.DOWN;
|
return ServerStatus.DOWN;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.warn("{} status is {}", getId(), status);
|
LOGGER.warn("nacos {} status is {}", getId(), status);
|
||||||
return ServerStatus.UNKNOWN;
|
return ServerStatus.UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,12 +151,12 @@ public class CircuitBreakManager {
|
|||||||
// updateParentResourceMap(cb);
|
// updateParentResourceMap(cb);
|
||||||
// LOGGER.info("update parentResourceMap: {}", parentResourceMap);
|
// LOGGER.info("update parentResourceMap: {}", parentResourceMap);
|
||||||
if (cb.type == CircuitBreaker.Type.SERVICE_DEFAULT) {
|
if (cb.type == CircuitBreaker.Type.SERVICE_DEFAULT) {
|
||||||
if (cb.isDeleted || !cb.serviceDefaultEnable) {
|
// if (cb.isDeleted || !cb.serviceDefaultEnable) {
|
||||||
for (String resource : circuitBreakersFromServiceDefault) {
|
for (String resource : circuitBreakersFromServiceDefault) {
|
||||||
resource2circuitBreakerMap.remove(resource);
|
resource2circuitBreakerMap.remove(resource);
|
||||||
}
|
}
|
||||||
circuitBreakersFromServiceDefault.clear();
|
circuitBreakersFromServiceDefault.clear();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
LOGGER.error("update circuit breaker error, {}", message, t);
|
LOGGER.error("update circuit breaker error, {}", message, t);
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package we.service_registry;
|
|||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.CharsetUtil;
|
import cn.hutool.core.util.CharsetUtil;
|
||||||
|
import com.netflix.appinfo.InstanceInfo;
|
||||||
|
import com.netflix.discovery.DiscoveryClient;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.context.support.GenericApplicationContext;
|
import org.springframework.context.support.GenericApplicationContext;
|
||||||
@@ -20,6 +22,7 @@ import we.util.YmlUtils;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
@@ -79,4 +82,20 @@ public class RegistryCenterServiceTests {
|
|||||||
fizzServiceRegistration2.register();
|
fizzServiceRegistration2.register();
|
||||||
Thread.currentThread().join();
|
Thread.currentThread().join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Test
|
||||||
|
void test() throws InterruptedException {
|
||||||
|
System.setProperty("server.port", "8866");
|
||||||
|
Fizz.context = new GenericApplicationContext();
|
||||||
|
Fizz.context.refresh();
|
||||||
|
|
||||||
|
String eu = FileUtil.readString("eureka.yml", CharsetUtil.CHARSET_UTF_8);
|
||||||
|
FizzEurekaServiceRegistration fizzServiceRegistration = (FizzEurekaServiceRegistration) FizzServiceRegistration.getFizzServiceRegistration(Fizz.context, FizzServiceRegistration.Type.EUREKA, FizzServiceRegistration.ConfigFormat.YML, eu);
|
||||||
|
fizzServiceRegistration.register();
|
||||||
|
while (true) {
|
||||||
|
Thread.sleep(5_000);
|
||||||
|
FizzServiceRegistration.ServerStatus serverStatus = fizzServiceRegistration.getServerStatus();
|
||||||
|
System.err.println("server status: " + serverStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
pom.xml
4
pom.xml
@@ -10,10 +10,10 @@
|
|||||||
<reactor-bom.version>Dysprosium-SR25</reactor-bom.version>
|
<reactor-bom.version>Dysprosium-SR25</reactor-bom.version>
|
||||||
<lettuce.version>5.3.7.RELEASE</lettuce.version>
|
<lettuce.version>5.3.7.RELEASE</lettuce.version>
|
||||||
<nacos.cloud.version>2.2.6.RELEASE</nacos.cloud.version>
|
<nacos.cloud.version>2.2.6.RELEASE</nacos.cloud.version>
|
||||||
<netty.version>4.1.73.Final</netty.version>
|
<netty.version>4.1.74.Final</netty.version>
|
||||||
<httpcore.version>4.4.15</httpcore.version>
|
<httpcore.version>4.4.15</httpcore.version>
|
||||||
<log4j2.version>2.17.1</log4j2.version>
|
<log4j2.version>2.17.1</log4j2.version>
|
||||||
<slf4j.version>1.7.33</slf4j.version>
|
<slf4j.version>1.7.35</slf4j.version>
|
||||||
<apache.dubbo.version>2.7.5</apache.dubbo.version>
|
<apache.dubbo.version>2.7.5</apache.dubbo.version>
|
||||||
<grpc.version>1.16.1</grpc.version>
|
<grpc.version>1.16.1</grpc.version>
|
||||||
<mockito.version>3.4.6</mockito.version>
|
<mockito.version>3.4.6</mockito.version>
|
||||||
|
|||||||
Reference in New Issue
Block a user