From 35eb89a07f7932155d07ff23dae0a46c79980ebe Mon Sep 17 00:00:00 2001 From: chengyouling Date: Wed, 24 Sep 2025 16:45:13 +0800 Subject: [PATCH 1/2] [#4942] Add random time to the scheduled task for pulling instances from serviceCenter --- .../service/center/client/ServiceCenterDiscovery.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java index 6e10ba3585a..9de08a5ca50 100644 --- a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java +++ b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Random; import java.util.concurrent.ConcurrentHashMap; import org.apache.servicecomb.http.client.task.AbstractTask; @@ -101,6 +102,8 @@ public static class SubscriptionValue { private final Object lock = new Object(); + private final Random random = new Random(); + public ServiceCenterDiscovery(ServiceCenterClient serviceCenterClient, EventBus eventBus) { super("service-center-discovery-task"); this.serviceCenterClient = serviceCenterClient; @@ -219,10 +222,15 @@ class PullInstanceTask implements Task { public void execute() { pullAllInstance(); - startTask(new BackOffSleepTask(pollInterval, new PullInstanceTask())); + startTask(new BackOffSleepTask(buildPollIntervalWithSalt(), new PullInstanceTask())); } } + private long buildPollIntervalWithSalt() { + int pollIntervalSalt = 5; + return pollInterval + random.nextInt(pollIntervalSalt) * 1000; + } + class PullInstanceOnceTask implements Task { @Override public void execute() { From 9821089b0144e0731e8b94c9935da32a2a1bc521 Mon Sep 17 00:00:00 2001 From: chengyouling Date: Thu, 25 Sep 2025 09:59:39 +0800 Subject: [PATCH 2/2] adjust fluctuation up and down --- .../service/center/client/ServiceCenterDiscovery.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java index 9de08a5ca50..a0a93318403 100644 --- a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java +++ b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java @@ -227,8 +227,10 @@ public void execute() { } private long buildPollIntervalWithSalt() { - int pollIntervalSalt = 5; - return pollInterval + random.nextInt(pollIntervalSalt) * 1000; + int positive = random.nextInt(5); + int sign = random.nextBoolean() ? 1 : -1; + long currentPollInterval = pollInterval + sign * positive * 1000; + return currentPollInterval > 0 ? currentPollInterval : pollInterval; } class PullInstanceOnceTask implements Task {