From 07c0be9361adf5edc90dba443941ff88dc31ddd0 Mon Sep 17 00:00:00 2001 From: godotg Date: Sat, 13 Jan 2024 18:31:56 +0800 Subject: [PATCH] chore[loadbalancer]: cached ConsistentHashConsumer comment --- net/src/main/java/com/zfoo/net/config/ConfigManager.java | 3 +-- .../java/com/zfoo/net/config/model/ProviderModule.java | 7 +++++++ .../balancer/CachedConsistentHashLoadBalancer.java | 4 ++-- .../com/zfoo/net/consumer/registry/ZookeeperRegistry.java | 6 +++--- net/src/test/resources/protocol.xml | 2 +- .../provider/consumer_cached_consistent_config.xml | 2 +- .../resources/provider/consumer_consistent_hash_config.xml | 2 +- net/src/test/resources/provider/consumer_random_config.xml | 2 +- net/src/test/resources/provider/provider_config.xml | 4 ++-- 9 files changed, 19 insertions(+), 13 deletions(-) diff --git a/net/src/main/java/com/zfoo/net/config/ConfigManager.java b/net/src/main/java/com/zfoo/net/config/ConfigManager.java index e1c79996..4b5d3a7e 100644 --- a/net/src/main/java/com/zfoo/net/config/ConfigManager.java +++ b/net/src/main/java/com/zfoo/net/config/ConfigManager.java @@ -18,7 +18,6 @@ import com.zfoo.net.consumer.registry.ZookeeperRegistry; import com.zfoo.protocol.ProtocolManager; import com.zfoo.protocol.collection.CollectionUtils; import com.zfoo.protocol.util.AssertionUtils; -import com.zfoo.protocol.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +64,7 @@ public class ConfigManager implements IConfigManager { for (var provider : providerConfig.getProviders()) { var protocolModule = provider.getProtocolModule(); var providerName = provider.getProvider(); - AssertionUtils.isTrue(ProtocolManager.moduleByModuleName(protocolModule) != null, "provider:[{}] does not exist in the protocol manager", provider); + AssertionUtils.isTrue(ProtocolManager.moduleByModuleName(protocolModule) != null, "protocol module [{}] does not exist in the protocol manager", provider); AssertionUtils.isTrue(providerSet.add(providerName), "provider:[{}] has duplicate provider name module [provider:{}]", provider, protocolModule); } } diff --git a/net/src/main/java/com/zfoo/net/config/model/ProviderModule.java b/net/src/main/java/com/zfoo/net/config/model/ProviderModule.java index 98d7c571..ac01fa83 100644 --- a/net/src/main/java/com/zfoo/net/config/model/ProviderModule.java +++ b/net/src/main/java/com/zfoo/net/config/model/ProviderModule.java @@ -12,6 +12,8 @@ package com.zfoo.net.config.model; +import com.zfoo.protocol.util.StringUtils; + import java.util.Objects; /** @@ -67,4 +69,9 @@ public class ProviderModule { public int hashCode() { return Objects.hash(protocolModule, provider); } + + @Override + public String toString() { + return StringUtils.format("[{}-{}]", protocolModule, provider); + } } diff --git a/net/src/main/java/com/zfoo/net/consumer/balancer/CachedConsistentHashLoadBalancer.java b/net/src/main/java/com/zfoo/net/consumer/balancer/CachedConsistentHashLoadBalancer.java index 655c0352..6f0bd523 100644 --- a/net/src/main/java/com/zfoo/net/consumer/balancer/CachedConsistentHashLoadBalancer.java +++ b/net/src/main/java/com/zfoo/net/consumer/balancer/CachedConsistentHashLoadBalancer.java @@ -48,8 +48,8 @@ public class CachedConsistentHashLoadBalancer extends AbstractConsumerLoadBalanc var arg = (Number) argument; var protocolModuleId = (long) ProtocolManager.moduleByProtocol(packet.getClass()).getId(); - // 8 Byte cachedKey = 1 byte of protocolModuleId + 7 byte of argument - var cachedKey = (protocolModuleId << (7 * 8)) | (0X00FFFFFF_FFFFFFFFL & arg.longValue()); + // 8 Byte cachedKey = 7 byte of argument + 1 byte of protocolModuleId + var cachedKey = arg.longValue() << 8 | protocolModuleId; var sid = cache.getIfPresent(cachedKey); if (sid == null) { var providerSession = ConsistentHashLoadBalancer.getInstance().selectProvider(providers, packet, argument); diff --git a/net/src/main/java/com/zfoo/net/consumer/registry/ZookeeperRegistry.java b/net/src/main/java/com/zfoo/net/consumer/registry/ZookeeperRegistry.java index 2bba542f..ce0e8d80 100644 --- a/net/src/main/java/com/zfoo/net/consumer/registry/ZookeeperRegistry.java +++ b/net/src/main/java/com/zfoo/net/consumer/registry/ZookeeperRegistry.java @@ -366,7 +366,7 @@ public class ZookeeperRegistry implements IRegistry { var localProviderPath = PROVIDER_ROOT_PATH + StringUtils.SLASH + localProviderVoStr; // /zfoo/provider - // applicationNameTest | 192.168.1.104:12400 | provider:[providerTest-myProvider1, providerTest-myProvider2] + // applicationNameTest | 192.168.1.104:12400 | provider:[myProviderModule-provider1, myProviderModule-provider2] var localProviderStat = curator.checkExists().forPath(localProviderPath); if (Objects.isNull(localProviderStat)) { curator.create() @@ -383,7 +383,7 @@ public class ZookeeperRegistry implements IRegistry { .deletingChildrenIfNeeded() .withVersion(localProviderStat.getVersion()) .forPath(localProviderPath); - throw new RuntimeException(StringUtils.format("session of curator[sessionId:{}] and providerNode[sessionId:{}] can not match" + throw new RuntimeException(StringUtils.format("session of curator[sessionId:{}] and providerNode[sessionId:{}] can not match, delete old old session data" , curatorSessionId, providerNodeSessionId)); } } @@ -397,7 +397,7 @@ public class ZookeeperRegistry implements IRegistry { * @throws Exception */ private void initConsumerCache() throws Exception { - // applicationNameTest | 192.168.1.104:12400 | provider:[providerTest-myProvider1, providerTest-myProvider2] + // /zfoo/provider/applicationNameTest | 192.168.1.104:12400 | provider:[myProviderModule-provider1, myProviderModule-provider2] var localRegisterVO = NetContext.getConfigManager().getLocalConfig().toLocalRegisterVO(); // 初始化providerCacheSet // 遍历provider下注册的所有节点 diff --git a/net/src/test/resources/protocol.xml b/net/src/test/resources/protocol.xml index 95a34255..b82dae7f 100644 --- a/net/src/test/resources/protocol.xml +++ b/net/src/test/resources/protocol.xml @@ -78,7 +78,7 @@ - + diff --git a/net/src/test/resources/provider/consumer_cached_consistent_config.xml b/net/src/test/resources/provider/consumer_cached_consistent_config.xml index 4ed7f72e..d1ee2031 100644 --- a/net/src/test/resources/provider/consumer_cached_consistent_config.xml +++ b/net/src/test/resources/provider/consumer_cached_consistent_config.xml @@ -25,7 +25,7 @@ - + diff --git a/net/src/test/resources/provider/consumer_consistent_hash_config.xml b/net/src/test/resources/provider/consumer_consistent_hash_config.xml index f319ebf2..b4ad8c85 100644 --- a/net/src/test/resources/provider/consumer_consistent_hash_config.xml +++ b/net/src/test/resources/provider/consumer_consistent_hash_config.xml @@ -25,7 +25,7 @@ - + diff --git a/net/src/test/resources/provider/consumer_random_config.xml b/net/src/test/resources/provider/consumer_random_config.xml index 445c8c27..afdb8c05 100644 --- a/net/src/test/resources/provider/consumer_random_config.xml +++ b/net/src/test/resources/provider/consumer_random_config.xml @@ -24,7 +24,7 @@ - + diff --git a/net/src/test/resources/provider/provider_config.xml b/net/src/test/resources/provider/provider_config.xml index e9fe9270..bdd401b9 100644 --- a/net/src/test/resources/provider/provider_config.xml +++ b/net/src/test/resources/provider/provider_config.xml @@ -26,8 +26,8 @@ - - + +