From 04f8137b3ffbd6dd52b66b75db9d81c1756afd45 Mon Sep 17 00:00:00 2001 From: srzou Date: Tue, 30 Jul 2024 16:27:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.2.0-beta1):=E5=A2=9E=E5=8A=A0LRU?= =?UTF-8?q?=E5=92=8C=E8=BD=AE=E8=AF=A2=E8=B7=AF=E7=94=B1=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E7=9A=84=E5=AE=9A=E6=9C=9F=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/allocate/client/ClientLoadBalanceLRU.java | 7 +++++++ .../common/allocate/client/ClientLoadBalanceRound.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceLRU.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceLRU.java index 9c8014360..1cf47317f 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceLRU.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceLRU.java @@ -21,9 +21,16 @@ public class ClientLoadBalanceLRU implements ClientLoadBalance { } private ConcurrentHashMap> LRU_CACHE = new ConcurrentHashMap<>(); + private static long CACHE_VALID_TIME = 0; @Override public String route(String allocKey, TreeSet clientAllAddressSet) { + // cache clear + if (System.currentTimeMillis() > CACHE_VALID_TIME) { + LRU_CACHE.clear(); + // 每12个小时定时清理一次数据 + CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*12; + } LinkedHashMap lruItem = LRU_CACHE.get(allocKey); if (Objects.isNull(lruItem)) { lruItem = new LinkedHashMap(16, 0.75f, true) { diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceRound.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceRound.java index a1650387b..aed743111 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceRound.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/allocate/client/ClientLoadBalanceRound.java @@ -16,9 +16,16 @@ public class ClientLoadBalanceRound implements ClientLoadBalance { private static final ConcurrentHashMap COUNTER = new ConcurrentHashMap<>(); private static final int THRESHOLD = Integer.MAX_VALUE - 10000; + private static long CACHE_VALID_TIME = 0; @Override public String route(final String allocKey, final TreeSet clientAllAddressSet) { + // cache clear + if (System.currentTimeMillis() > CACHE_VALID_TIME) { + COUNTER.clear(); + // 每12个小时定时清理一次数据 + CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*12; + } String[] addressArr = clientAllAddressSet.toArray(new String[0]); AtomicInteger next = COUNTER.getOrDefault(allocKey, new AtomicInteger(1)); String nextClientId = addressArr[next.get() % clientAllAddressSet.size()];