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>
|
||||
<reactor-bom.version>Dysprosium-SR25</reactor-bom.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>
|
||||
<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>
|
||||
<lombok.version>1.18.22</lombok.version>
|
||||
<apache.dubbo.version>2.7.5</apache.dubbo.version>
|
||||
|
||||
@@ -163,8 +163,10 @@ public class FlowControlFilter extends FizzWebFilter {
|
||||
}
|
||||
|
||||
ServerHttpResponse resp = exchange.getResponse();
|
||||
resp.setStatusCode(HttpStatus.OK);
|
||||
resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, responseContentType);
|
||||
resp.setStatusCode(HttpStatus.FORBIDDEN);
|
||||
HttpHeaders headers = resp.getHeaders();
|
||||
headers.set(HttpHeaders.CONTENT_TYPE, responseContentType);
|
||||
headers.set("traceId", traceId);
|
||||
return resp.writeWith(Mono.just(resp.bufferFactory().wrap(responseContent.getBytes())));
|
||||
|
||||
} else {
|
||||
|
||||
@@ -36,7 +36,7 @@ import java.util.Properties;
|
||||
|
||||
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 {
|
||||
EUREKA, NACOS;
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.netflix.discovery.DiscoveryClient;
|
||||
import com.netflix.discovery.EurekaClientConfig;
|
||||
import com.netflix.discovery.shared.Application;
|
||||
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.EurekaClientConfigBean;
|
||||
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration;
|
||||
@@ -42,9 +41,14 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
||||
|
||||
private final CloudEurekaClient client;
|
||||
|
||||
private final long renewalInterval;
|
||||
|
||||
private long prevHeartbeatTimestamp = -1;
|
||||
|
||||
public FizzEurekaServiceRegistration(String id, EurekaRegistration registration, EurekaServiceRegistry serviceRegistry, CloudEurekaClient client) {
|
||||
super(id, Type.EUREKA, registration, serviceRegistry);
|
||||
this.client = client;
|
||||
renewalInterval = this.client.getApplicationInfoManager().getInfo().getLeaseInfo().getRenewalIntervalInSecs() * 1000L;
|
||||
}
|
||||
|
||||
public DiscoveryClient getDiscoveryClient() {
|
||||
@@ -102,8 +106,23 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
||||
}
|
||||
}
|
||||
|
||||
String join = StringUtils.join(eurekaServerServiceUrls, ',');
|
||||
throw Utils.runtimeExceptionWithoutStack("can't find any server with " + join);
|
||||
long heartbeatTimestamp = client.getStats().lastSuccessfulHeartbeatTimestampMs();
|
||||
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) {
|
||||
|
||||
@@ -81,7 +81,7 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration {
|
||||
return ServerStatus.DOWN;
|
||||
|
||||
} else {
|
||||
log.warn("{} status is {}", getId(), status);
|
||||
LOGGER.warn("nacos {} status is {}", getId(), status);
|
||||
return ServerStatus.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,12 +151,12 @@ public class CircuitBreakManager {
|
||||
// updateParentResourceMap(cb);
|
||||
// LOGGER.info("update parentResourceMap: {}", parentResourceMap);
|
||||
if (cb.type == CircuitBreaker.Type.SERVICE_DEFAULT) {
|
||||
if (cb.isDeleted || !cb.serviceDefaultEnable) {
|
||||
// if (cb.isDeleted || !cb.serviceDefaultEnable) {
|
||||
for (String resource : circuitBreakersFromServiceDefault) {
|
||||
resource2circuitBreakerMap.remove(resource);
|
||||
}
|
||||
circuitBreakersFromServiceDefault.clear();
|
||||
}
|
||||
// }
|
||||
}
|
||||
} catch (Throwable 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.util.CharsetUtil;
|
||||
import com.netflix.appinfo.InstanceInfo;
|
||||
import com.netflix.discovery.DiscoveryClient;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
@@ -20,6 +22,7 @@ import we.util.YmlUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
@@ -79,4 +82,20 @@ public class RegistryCenterServiceTests {
|
||||
fizzServiceRegistration2.register();
|
||||
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>
|
||||
<lettuce.version>5.3.7.RELEASE</lettuce.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>
|
||||
<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>
|
||||
<grpc.version>1.16.1</grpc.version>
|
||||
<mockito.version>3.4.6</mockito.version>
|
||||
|
||||
Reference in New Issue
Block a user