Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
83b1585
elegant up or down for service-center
chenshouye168 Jan 2, 2025
8d5c0bb
elegant up or down for registry-zookeeper
chenshouye168 Jan 5, 2025
8c5d8e4
Modify the code according to the review code and add nacos adapted up…
chenshouye168 Jan 9, 2025
cae38de
Merge branch 'apache:master' into master
chenshouye168 Jan 9, 2025
ff52d42
remove 'getMicroserviceInstanceStatus' method,use getStatus()
chenshouye168 Jan 9, 2025
7ca6e02
Merge remote-tracking branch 'origin/master'
chenshouye168 Jan 9, 2025
004aa32
don`t need this method to select instance status,delete it
chenshouye168 Jan 9, 2025
a76ae7d
getInitialStatus(),getReadyStatus() not used,so delete it
chenshouye168 Jan 9, 2025
2d6e04b
delete this line,because already read in the configuration at initial…
chenshouye168 Jan 9, 2025
860b5d4
getInitialStatus(),getReadyStatus() not used,so delete it
chenshouye168 Jan 9, 2025
1352218
NacosInstanceStatus Add some conditional judgments
chenshouye168 Jan 9, 2025
c100c8a
Restore the original state
chenshouye168 Jan 9, 2025
fc48c8f
update getMicroserviceInstanceStatus() to 'getStatus()'
chenshouye168 Jan 9, 2025
83339e8
getInitialStatus(),getReadyStatus() not used,so don`t implement it
chenshouye168 Jan 10, 2025
95bb8bc
getDataCenterInfo() NullPointException handle
chenshouye168 Jan 10, 2025
89b84d5
Setting ServiceInstance initialStatus
chenshouye168 Jan 10, 2025
568c627
change RegistrationInstance to MicroserviceInstance,cuz don`t need me…
chenshouye168 Jan 10, 2025
2a0801f
Merge branch 'apache:master' into master
chenshouye168 Jan 10, 2025
e70bcfb
all registry center interface rollback MicroserviceInstance to Regist…
chenshouye168 Jan 10, 2025
2da0311
All states use the registerInstance method
chenshouye168 Jan 10, 2025
911429c
use BootStrapProperties.readServiceInstanceInitialStatus(environment)…
chenshouye168 Jan 10, 2025
b4ecf04
rat check
chenshouye168 Jan 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
Original file line number Diff line number Diff line change
Expand Up @@ -370,8 +370,6 @@ private void doRun() throws Exception {
triggerEvent(EventType.BEFORE_REGISTRY);
registrationManager.run();
discoveryManager.run();
// ensure can invoke services in AFTER_REGISTRY
registrationManager.updateMicroserviceInstanceStatus(MicroserviceInstanceStatus.UP);
status = SCBStatus.UP;
triggerEvent(EventType.AFTER_REGISTRY);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
public class DataCenterProperties {
public static final String PREFIX = "servicecomb.datacenter";

private String name;
private String name = "local";

private String region;
private String region = "local";

private String availableZone;
private String availableZone = "local";

public String getName() {
return name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ private VersionedCache calcAvailableInstance(String application, String serviceN
continue;
}
if (instance.getHistoryStatus() == HistoryStatus.HISTORY
&& instance.getMicroserviceInstanceStatus() == MicroserviceInstanceStatus.UP
&& instance.getStatus() == MicroserviceInstanceStatus.UP
&& instance.getPingStatus() == PingStatus.OK
&& instance.getIsolationStatus() == IsolationStatus.NORMAL) {
result.add(instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,10 @@ public interface MicroserviceInstance {
default String getServiceId() {
return "";
}

/**
* Service status(Required): status of this microservice.
*
*/
MicroserviceInstanceStatus getStatus();
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
/**
* This is the core service registration interface. <br/>
*/
public interface Registration<R extends RegistrationInstance> extends SPIEnabled, SPIOrder, LifeCycle {
public interface Registration<R extends MicroserviceInstance> extends SPIEnabled, SPIOrder, LifeCycle {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why made this change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don`r need method 'getnitialStatus()' and 'getReadyStatus()'

String name();

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,21 +69,21 @@ public void init(DiscoveryContext context, DiscoveryTreeNode parent) {

for (StatefulDiscoveryInstance instance : instances) {
if (HistoryStatus.CURRENT == instance.getHistoryStatus() &&
MicroserviceInstanceStatus.UP == instance.getMicroserviceInstanceStatus() &&
MicroserviceInstanceStatus.UP == instance.getStatus() &&
PingStatus.OK == instance.getPingStatus() &&
IsolationStatus.NORMAL == instance.getIsolationStatus()) {
level0.add(instance);
continue;
}
if (HistoryStatus.CURRENT == instance.getHistoryStatus() &&
MicroserviceInstanceStatus.UP == instance.getMicroserviceInstanceStatus() &&
MicroserviceInstanceStatus.UP == instance.getStatus() &&
PingStatus.UNKNOWN == instance.getPingStatus() &&
IsolationStatus.NORMAL == instance.getIsolationStatus()) {
level1.add(instance);
continue;
}
if (HistoryStatus.HISTORY == instance.getHistoryStatus() &&
MicroserviceInstanceStatus.UP == instance.getMicroserviceInstanceStatus() &&
MicroserviceInstanceStatus.UP == instance.getStatus() &&
PingStatus.OK == instance.getPingStatus() &&
IsolationStatus.NORMAL == instance.getIsolationStatus()) {
level2.add(instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ public enum HistoryStatus {

private final DiscoveryInstance discoveryInstance;

private MicroserviceInstanceStatus microserviceInstanceStatus = MicroserviceInstanceStatus.UP;

private IsolationStatus isolationStatus = IsolationStatus.NORMAL;

private long isolatedTime;
Expand All @@ -64,15 +62,6 @@ public StatefulDiscoveryInstance(DiscoveryInstance discoveryInstance) {
this.discoveryInstance = discoveryInstance;
}

public MicroserviceInstanceStatus getMicroserviceInstanceStatus() {
return microserviceInstanceStatus;
}

public void setMicroserviceInstanceStatus(
MicroserviceInstanceStatus microserviceInstanceStatus) {
this.microserviceInstanceStatus = microserviceInstanceStatus;
}

public IsolationStatus getIsolationStatus() {
return isolationStatus;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,22 +36,22 @@ public void test_all_group_correct_init() {
List<StatefulDiscoveryInstance> instances = new ArrayList<>();
StatefulDiscoveryInstance instance1 = Mockito.mock(StatefulDiscoveryInstance.class);
Mockito.when(instance1.getHistoryStatus()).thenReturn(HistoryStatus.CURRENT);
Mockito.when(instance1.getMicroserviceInstanceStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance1.getStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance1.getPingStatus()).thenReturn(PingStatus.OK);
Mockito.when(instance1.getIsolationStatus()).thenReturn(IsolationStatus.NORMAL);
StatefulDiscoveryInstance instance2 = Mockito.mock(StatefulDiscoveryInstance.class);
Mockito.when(instance2.getHistoryStatus()).thenReturn(HistoryStatus.CURRENT);
Mockito.when(instance2.getMicroserviceInstanceStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance2.getStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance2.getPingStatus()).thenReturn(PingStatus.UNKNOWN);
Mockito.when(instance2.getIsolationStatus()).thenReturn(IsolationStatus.NORMAL);
StatefulDiscoveryInstance instance3 = Mockito.mock(StatefulDiscoveryInstance.class);
Mockito.when(instance3.getHistoryStatus()).thenReturn(HistoryStatus.HISTORY);
Mockito.when(instance3.getMicroserviceInstanceStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance3.getStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance3.getPingStatus()).thenReturn(PingStatus.OK);
Mockito.when(instance3.getIsolationStatus()).thenReturn(IsolationStatus.NORMAL);
StatefulDiscoveryInstance instance4 = Mockito.mock(StatefulDiscoveryInstance.class);
Mockito.when(instance4.getHistoryStatus()).thenReturn(HistoryStatus.CURRENT);
Mockito.when(instance4.getMicroserviceInstanceStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance4.getStatus()).thenReturn(MicroserviceInstanceStatus.UP);
Mockito.when(instance4.getPingStatus()).thenReturn(PingStatus.FAIL);
Mockito.when(instance4.getIsolationStatus()).thenReturn(IsolationStatus.NORMAL);
instances.addAll(Arrays.asList(instance1, instance2, instance3, instance4));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import org.apache.servicecomb.registry.api.DataCenterInfo;
import org.apache.servicecomb.registry.api.MicroserviceInstance;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;

import java.util.ArrayList;
import java.util.HashMap;
Expand Down Expand Up @@ -188,4 +189,9 @@ public String getInstanceId() {
public String getServiceId() {
return serviceId;
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.UP;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

import org.apache.servicecomb.registry.api.DataCenterInfo;
import org.apache.servicecomb.registry.api.MicroserviceInstance;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;

public class EtcdInstance implements MicroserviceInstance {
private String serviceId;
Expand Down Expand Up @@ -188,6 +189,11 @@ public String getServiceId() {
return serviceId;
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.UP;
}

@Override
public String toString() {
return "EtcdInstance{" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,11 @@ public String getInstanceId() {
return this.instanceId;
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.UP;
}

@Override
public MicroserviceInstanceStatus getInitialStatus() {
return MicroserviceInstanceStatus.STARTING;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,6 @@ public class NacosConst {
public static final String NAMING_LOAD_CACHE_AT_START = "namingLoadCacheAtStart";

public static final String NACOS_REGISTRY_NAME = "nacos-registry";

public static final String NACOS_STATUS= "nacos-status";
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,15 @@ public NacosDiscoveryInstance(Instance instance, String application, String serv

@Override
public MicroserviceInstanceStatus getStatus() {
return instance.isEnabled() ? MicroserviceInstanceStatus.UP : MicroserviceInstanceStatus.DOWN;
if (instance.isEnabled()) {
String instanceStatus = instance.getMetadata().get(NacosConst.NACOS_STATUS);
if (StringUtils.isBlank(instanceStatus)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be isEmpty?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

U said "instance.getMetadata().get(NacosConst.NACOS_STATUS maybe null for old versions instance." before,so i do it .

return MicroserviceInstanceStatus.UP;
}
return MicroserviceInstanceStatus.valueOf(instanceStatus);
} else {
return MicroserviceInstanceStatus.DOWN;
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ public class NacosDiscoveryProperties {

private boolean enableSwaggerRegistration = false;

private String initialStatus = "UP";

public String getServerAddr() {
return serverAddr;
}
Expand Down Expand Up @@ -160,4 +162,12 @@ public boolean isEnableSwaggerRegistration() {
public void setEnableSwaggerRegistration(boolean enableSwaggerRegistration) {
this.enableSwaggerRegistration = enableSwaggerRegistration;
}

public String getInitialStatus() {
return initialStatus;
}

public void setInitialStatus(String initialStatus) {
this.initialStatus = initialStatus;
}
}
Copy link
Contributor

@liubao68 liubao68 Jan 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use common configration servicecomb.instance.initialStatus, see SC how to read it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nacos,ZK,ServiceCenter has used common configration servicecomb.instance.initialStatus

Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public static Instance createMicroserviceInstance(
metadata.put(NacosConst.PROPERTY_DATACENTER, dataCenterProperties.getName());
metadata.put(NacosConst.PROPERTY_REGION, dataCenterProperties.getRegion());
metadata.put(NacosConst.PROPERTY_ZONE, dataCenterProperties.getAvailableZone());
metadata.put(NacosConst.NACOS_STATUS, properties.getInitialStatus());
if (!StringUtils.isEmpty(environment.getProperty(VERSION_MAPPING)) &&
!StringUtils.isEmpty(environment.getProperty(environment.getProperty(VERSION_MAPPING)))) {
metadata.put("version", environment.getProperty(environment.getProperty(VERSION_MAPPING)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,20 @@ public NacosRegistrationInstance getMicroserviceInstance() {

@Override
public boolean updateMicroserviceInstanceStatus(MicroserviceInstanceStatus status) {
// Do not support Nacos update status now. Because update status will fail
// due to some unknown reasons(Maybe different constrains in register and maintain api).
return true;
try {
if (MicroserviceInstanceStatus.DOWN == status) {
instance.getMetadata().put(NacosConst.NACOS_STATUS, MicroserviceInstanceStatus.DOWN.name());
namingService.deregisterInstance(nacosRegistrationInstance.getServiceName(),
nacosRegistrationInstance.getApplication(), instance);
} else {
instance.getMetadata().put(NacosConst.NACOS_STATUS, status.name());
namingService.registerInstance(nacosRegistrationInstance.getServiceName(),
nacosRegistrationInstance.getApplication(), instance);
}
return true;
} catch (Exception e) {
throw new RuntimeException(e);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whatever status, update. No need to check status. Will registerInstance cause two instances? If Nacos do not support update status, maybe we can not use this feature for nacos.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nacos register Instance again ,old instance will be covery. For Down, just deregister instance.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's better only set status, do not deregister instance.

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ public String getInstanceId() {
return instance.getInstanceId();
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.valueOf(instance.getMetadata().get(NacosConst.NACOS_STATUS));
}

@Override
public MicroserviceInstanceStatus getInitialStatus() {
return MicroserviceInstanceStatus.STARTING;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public class SCConfigurationProperties {

private boolean autoDiscovery = false;

private String initialStatus = "STARTING";
private String initialStatus = "UP";

private boolean watch = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ public String getVersion() {

@Override
public DataCenterInfo getDataCenterInfo() {
return new DataCenterInfo(microserviceInstance.getDataCenterInfo().getName(),
microserviceInstance.getDataCenterInfo().getRegion(),
microserviceInstance.getDataCenterInfo().getAvailableZone());
return new DataCenterInfo(microserviceInstance.getDataCenterInfo().getName(),
microserviceInstance.getDataCenterInfo().getRegion(),
microserviceInstance.getDataCenterInfo().getAvailableZone());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seams nothing changed, but format is wrong .

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it`s changed

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ public class SCRegistrationInstance implements RegistrationInstance {

private final ServiceCenterRegistration serviceCenterRegistration;

public SCRegistrationInstance(Microservice microservice,
MicroserviceInstance microserviceInstance,
public SCRegistrationInstance(Microservice microservice, MicroserviceInstance microserviceInstance,
ServiceCenterRegistration serviceCenterRegistration) {
this.microservice = microservice;
this.microserviceInstance = microserviceInstance;
Expand Down Expand Up @@ -106,6 +105,11 @@ public String getServiceId() {
return microservice.getServiceId();
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.valueOf(microserviceInstance.getStatus().name());
}

@Override
public MicroserviceInstanceStatus getInitialStatus() {
return MicroserviceInstanceStatus.valueOf(microserviceInstance.getStatus().name());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,11 @@ public String getInstanceId() {
return this.self.getInstanceId();
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.UP;
}

@Override
public MicroserviceInstanceStatus getInitialStatus() {
return MicroserviceInstanceStatus.STARTING;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ public ZookeeperDiscoveryInstance(ZookeeperInstance other) {
super(other);
}

@Override
public MicroserviceInstanceStatus getStatus() {
return MicroserviceInstanceStatus.UP;
}

@Override
public String getRegistryName() {
return ZookeeperConst.ZOOKEEPER_REGISTRY_NAME;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

import org.apache.servicecomb.registry.api.DataCenterInfo;
import org.apache.servicecomb.registry.api.MicroserviceInstance;
import org.apache.servicecomb.registry.api.MicroserviceInstanceStatus;

public class ZookeeperInstance implements MicroserviceInstance {
private String serviceId;
Expand All @@ -49,6 +50,8 @@ public class ZookeeperInstance implements MicroserviceInstance {

private Map<String, String> properties = new HashMap<>();

private MicroserviceInstanceStatus status;

public ZookeeperInstance() {

}
Expand All @@ -66,6 +69,8 @@ public ZookeeperInstance(ZookeeperInstance other) {
this.endpoints = other.endpoints;
this.schemas = other.schemas;
this.properties = other.properties;
this.status = other.status;

}

public void setServiceId(String serviceId) {
Expand Down Expand Up @@ -116,6 +121,10 @@ public void setProperties(Map<String, String> properties) {
this.properties = properties;
}

public void setStatus(MicroserviceInstanceStatus status) {
this.status = status;
}

@Override
public String getEnvironment() {
return this.environment;
Expand Down Expand Up @@ -187,4 +196,9 @@ public String getInstanceId() {
public String getServiceId() {
return serviceId;
}

@Override
public MicroserviceInstanceStatus getStatus() {
return this.status;
}
}
Loading
Loading