This commit is contained in:
nkorange 2019-03-08 17:18:01 +08:00
parent 6ae100e390
commit 8d28958cb7
13 changed files with 56 additions and 30 deletions

View File

@ -65,8 +65,9 @@ server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
# default current work dir # default current work dir
server.tomcat.basedir= server.tomcat.basedir=
nacos.naming.partition.taskDispatchThreadCount=10 nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.partition.taskDispatchPeriod=200 nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.partition.batchSyncKeyCount=1000 nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.partition.initDataRatio=0.9 nacos.naming.distro.initDataRatio=0.9
nacos.naming.partition.syncRetryDelay=5000 nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=false

View File

@ -39,8 +39,9 @@ server.tomcat.basedir=
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/** nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.partition.taskDispatchThreadCount=10 nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.partition.taskDispatchPeriod=200 nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.partition.batchSyncKeyCount=1000 nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.partition.initDataRatio=0.9 nacos.naming.distro.initDataRatio=0.9
nacos.naming.partition.syncRetryDelay=5000 nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

View File

@ -16,7 +16,9 @@
package com.alibaba.nacos.naming.boot; package com.alibaba.nacos.naming.boot;
import com.alibaba.nacos.naming.misc.Loggers; import com.alibaba.nacos.naming.misc.Loggers;
import com.alibaba.nacos.naming.misc.UtilsAndCommons;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
@ -53,6 +55,10 @@ public class RunningConfig implements ApplicationListener<WebServerInitializedEv
} }
public static String getContextPath() { public static String getContextPath() {
if (StringUtils.isBlank(contextPath)) {
return UtilsAndCommons.NACOS_SERVER_CONTEXT;
}
return contextPath; return contextPath;
} }
} }

View File

@ -49,7 +49,7 @@ public class DataSyncer implements ServerChangeListener {
private DataStore dataStore; private DataStore dataStore;
@Autowired @Autowired
private PartitionConfig partitionConfig; private GlobalConfig partitionConfig;
@Autowired @Autowired
private Serializer serializer; private Serializer serializer;

View File

@ -78,6 +78,9 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
@Autowired @Autowired
private SwitchDomain switchDomain; private SwitchDomain switchDomain;
@Autowired
private GlobalConfig globalConfig;
private boolean initialized = false; private boolean initialized = false;
private volatile Map<String, List<RecordListener>> listeners = new ConcurrentHashMap<>(); private volatile Map<String, List<RecordListener>> listeners = new ConcurrentHashMap<>();
@ -101,7 +104,8 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
initialized = true; initialized = true;
return; return;
} }
while (serverListManager.getHealthyServers().isEmpty()) { // size = 1 means only myself in the list, we need at least one another server alive:
while (serverListManager.getHealthyServers().size() <= 1) {
Thread.sleep(1000L); Thread.sleep(1000L);
Loggers.EPHEMERAL.info("waiting server list init..."); Loggers.EPHEMERAL.info("waiting server list init...");
} }
@ -110,6 +114,9 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
if (NetUtils.localServer().equals(server.getKey())) { if (NetUtils.localServer().equals(server.getKey())) {
continue; continue;
} }
if (Loggers.EPHEMERAL.isDebugEnabled()) {
Loggers.EPHEMERAL.debug("sync from " + server);
}
// try sync data from remote server: // try sync data from remote server:
if (syncAllDataFromRemote(server)) { if (syncAllDataFromRemote(server)) {
initialized = true; initialized = true;
@ -227,7 +234,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
processData(data); processData(data);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
Loggers.EPHEMERAL.error("sync full data from " + server + " failed!"); Loggers.EPHEMERAL.error("sync full data from " + server + " failed!", e);
return false; return false;
} }
} }
@ -301,6 +308,10 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
@Override @Override
public boolean isAvailable() { public boolean isAvailable() {
return initialized || ServerStatus.UP.name().equals(switchDomain.getOverriddenServerStatus()); return isInitialized() || ServerStatus.UP.name().equals(switchDomain.getOverriddenServerStatus());
}
public boolean isInitialized() {
return initialized || !globalConfig.isDataWarmup();
} }
} }

View File

@ -16,6 +16,7 @@
package com.alibaba.nacos.naming.consistency.ephemeral.distro; package com.alibaba.nacos.naming.consistency.ephemeral.distro;
import com.alibaba.nacos.naming.cluster.servers.Server; import com.alibaba.nacos.naming.cluster.servers.Server;
import com.alibaba.nacos.naming.misc.GlobalConfig;
import com.alibaba.nacos.naming.misc.GlobalExecutor; import com.alibaba.nacos.naming.misc.GlobalExecutor;
import com.alibaba.nacos.naming.misc.Loggers; import com.alibaba.nacos.naming.misc.Loggers;
import com.alibaba.nacos.naming.misc.NetUtils; import com.alibaba.nacos.naming.misc.NetUtils;
@ -38,7 +39,7 @@ import java.util.concurrent.*;
public class TaskDispatcher { public class TaskDispatcher {
@Autowired @Autowired
private PartitionConfig partitionConfig; private GlobalConfig partitionConfig;
@Autowired @Autowired
private DataSyncer dataSyncer; private DataSyncer dataSyncer;

View File

@ -101,6 +101,9 @@ public class RaftCore {
@Autowired @Autowired
private SwitchDomain switchDomain; private SwitchDomain switchDomain;
@Autowired
private GlobalConfig globalConfig;
@Autowired @Autowired
private RaftProxy raftProxy; private RaftProxy raftProxy;
@ -874,7 +877,7 @@ public class RaftCore {
} }
public boolean isInitialized() { public boolean isInitialized() {
return initialized; return initialized || !globalConfig.isDataWarmup();
} }
public class Notifier implements Runnable { public class Notifier implements Runnable {

View File

@ -223,7 +223,7 @@ public class ServiceController {
} }
for (int i = start; i < end; i++) { for (int i = start; i < end; i++) {
serviceNameList.add(i, serviceNameList.get(i).replace(groupName + Constants.SERVICE_INFO_SPLITER, "")); serviceNameList.set(i, serviceNameList.get(i).replace(groupName + Constants.SERVICE_INFO_SPLITER, ""));
} }
result.put("doms", serviceNameList.subList(start, end)); result.put("doms", serviceNameList.subList(start, end));

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.alibaba.nacos.naming.consistency.ephemeral.distro; package com.alibaba.nacos.naming.misc;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -25,7 +25,7 @@ import org.springframework.stereotype.Component;
* @since 1.0.0 * @since 1.0.0
*/ */
@Component @Component
public class PartitionConfig { public class GlobalConfig {
@Value("${nacos.naming.distro.taskDispatchPeriod}") @Value("${nacos.naming.distro.taskDispatchPeriod}")
private int taskDispatchPeriod = 2000; private int taskDispatchPeriod = 2000;
@ -33,15 +33,15 @@ public class PartitionConfig {
@Value("${nacos.naming.distro.batchSyncKeyCount}") @Value("${nacos.naming.distro.batchSyncKeyCount}")
private int batchSyncKeyCount = 1000; private int batchSyncKeyCount = 1000;
@Value("${nacos.naming.distro.initDataRatio}")
private float initDataRatio = 0.9F;
@Value("${nacos.naming.distro.syncRetryDelay}") @Value("${nacos.naming.distro.syncRetryDelay}")
private long syncRetryDelay = 5000L; private long syncRetryDelay = 5000L;
@Value("${nacos.naming.distro.taskDispatchThreadCount}") @Value("${nacos.naming.distro.taskDispatchThreadCount}")
private int taskDispatchThreadCount = Runtime.getRuntime().availableProcessors(); private int taskDispatchThreadCount = Runtime.getRuntime().availableProcessors();
@Value("${nacos.naming.data.warmup}")
private boolean dataWarmup = false;
public int getTaskDispatchPeriod() { public int getTaskDispatchPeriod() {
return taskDispatchPeriod; return taskDispatchPeriod;
} }
@ -50,10 +50,6 @@ public class PartitionConfig {
return batchSyncKeyCount; return batchSyncKeyCount;
} }
public float getInitDataRatio() {
return initDataRatio;
}
public long getSyncRetryDelay() { public long getSyncRetryDelay() {
return syncRetryDelay; return syncRetryDelay;
} }
@ -61,4 +57,8 @@ public class PartitionConfig {
public int getTaskDispatchThreadCount() { public int getTaskDispatchThreadCount() {
return taskDispatchThreadCount; return taskDispatchThreadCount;
} }
public boolean isDataWarmup() {
return dataWarmup;
}
} }

View File

@ -40,11 +40,11 @@ public class ServerStatusSynchronizer implements Synchronizer {
params.put("serverStatus", msg.getData()); params.put("serverStatus", msg.getData());
String url = "http://" + serverIP + ":" + RunningConfig.getServerPort() String url = "http://" + serverIP + ":" + RunningConfig.getServerPort()
+ RunningConfig.getContextPath() + UtilsAndCommons.NACOS_NAMING_CONTEXT + "/operator/serverStatus"; + RunningConfig.getContextPath() + UtilsAndCommons.NACOS_NAMING_CONTEXT + "/operator/server/status";
if (serverIP.contains(UtilsAndCommons.IP_PORT_SPLITER)) { if (serverIP.contains(UtilsAndCommons.IP_PORT_SPLITER)) {
url = "http://" + serverIP + RunningConfig.getContextPath() + UtilsAndCommons.NACOS_NAMING_CONTEXT url = "http://" + serverIP + RunningConfig.getContextPath() + UtilsAndCommons.NACOS_NAMING_CONTEXT
+ "/operator/serverStatus"; + "/operator/server/status";
} }
try { try {

View File

@ -31,3 +31,5 @@ nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000 nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9 nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000 nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

View File

@ -358,7 +358,7 @@ public class CPInstancesAPI_ITCase {
ResponseEntity<String> response = request(NamingBase.NAMING_CONTROLLER_PATH + "/service", ResponseEntity<String> response = request(NamingBase.NAMING_CONTROLLER_PATH + "/service",
Params.newParams() Params.newParams()
.appendParam("serviceName", serviceName) .appendParam("serviceName", serviceName)
.appendParam("protectThreshold", "3") .appendParam("protectThreshold", "0.3")
.appendParam("namespaceId", namespace) .appendParam("namespaceId", namespace)
.appendParam("groupName", groupName) .appendParam("groupName", groupName)
.done(), .done(),

View File

@ -24,3 +24,4 @@ nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000 nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9 nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000 nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=false