From 89d0831e3e7a77134fa686efcdcc837f1463fcea Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 22 Jan 2023 11:10:34 +0800 Subject: [PATCH 1/2] fix --- .../loopstack/ras/client/holder/RasRepositoryHolder.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java index a419d69..736ee24 100644 --- a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java +++ b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java @@ -279,7 +279,9 @@ public class RasRepositoryHolder implements InitializingBean { } private void initClientLoadBalance() { - + // 构建key + // 构建算子逻辑 + // 构建蚁群算法 } /** @@ -290,7 +292,7 @@ public class RasRepositoryHolder implements InitializingBean { */ public String routingRequestAddress(String appId) { // REQUEST_FORMAT - + return null; } } -- Gitee From 8a3275c98f4fe2a8ac4eb9769e5f0e48f3bae3ff Mon Sep 17 00:00:00 2001 From: icanci Date: Mon, 23 Jan 2023 10:37:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/holder/RasRepositoryHolder.java | 5 +++ .../loadbalancing/FirstLoadBalancing.java | 31 +++++++++++++++++++ .../holder/loadbalancing/LoadBalancing.java | 22 +++++++++++++ .../loadbalancing/LoadBalancingBean.java | 23 ++++++++++++++ .../loadbalancing/LoadBalancingCache.java | 13 ++++++++ 5 files changed, 94 insertions(+) create mode 100644 client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/FirstLoadBalancing.java create mode 100644 client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancing.java create mode 100644 client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingBean.java create mode 100644 client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingCache.java diff --git a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java index 736ee24..b95ad72 100644 --- a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java +++ b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/RasRepositoryHolder.java @@ -6,6 +6,7 @@ import cn.icanci.loopstack.api.client.Client; import cn.icanci.loopstack.api.client.http.HttpClientImpl; import cn.icanci.loopstack.lsi.common.result.R; import cn.icanci.loopstack.ras.client.exception.ServerApplicationWrongfulException; +import cn.icanci.loopstack.ras.client.exception.ServiceNotFoundException; import cn.icanci.loopstack.ras.client.holder.model.ApplicationKey; import cn.icanci.loopstack.ras.client.holder.model.ApplicationValue; import cn.icanci.loopstack.ras.client.holder.model.ClientApplicationValue; @@ -292,6 +293,10 @@ public class RasRepositoryHolder implements InitializingBean { */ public String routingRequestAddress(String appId) { // REQUEST_FORMAT + ClientApplicationValue clientApplicationValue = CLIENT_APPLICATION_MAP.get(appId); + if (clientApplicationValue == null) { + throw new ServiceNotFoundException("Service for appId: " + appId + " not found!"); + } return null; } diff --git a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/FirstLoadBalancing.java b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/FirstLoadBalancing.java new file mode 100644 index 0000000..969749c --- /dev/null +++ b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/FirstLoadBalancing.java @@ -0,0 +1,31 @@ +package cn.icanci.loopstack.ras.client.holder.loadbalancing; + +import cn.icanci.loopstack.ras.client.holder.model.ApplicationValue; +import cn.icanci.loopstack.ras.client.holder.model.ClientApplicationValue; +import cn.icanci.loopstack.ras.common.enums.LoadBalanceTypeEnum; + +import java.util.Optional; +import java.util.Set; + +import org.springframework.stereotype.Service; + +/** + * 负载均衡算法实现 + * + * @author icanci + * @since 1.0 Created in 2023/01/23 10:23 + */ +@Service +@LoadBalancingBean(LoadBalanceTypeEnum.FIRST) +public class FirstLoadBalancing extends LoadBalancingCache implements LoadBalancing { + + @Override + public Optional route(ClientApplicationValue clientApplicationValue) { + if (clientApplicationValue == null) { + return Optional.empty(); + } + Set applicationValues = clientApplicationValue.getApplicationValues(); + + return null; + } +} diff --git a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancing.java b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancing.java new file mode 100644 index 0000000..6698aec --- /dev/null +++ b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancing.java @@ -0,0 +1,22 @@ +package cn.icanci.loopstack.ras.client.holder.loadbalancing; + +import cn.icanci.loopstack.ras.client.holder.model.ApplicationValue; +import cn.icanci.loopstack.ras.client.holder.model.ClientApplicationValue; + +import java.util.Optional; + +/** + * 负载均衡算法实现 + * + * @author icanci + * @since 1.0 Created in 2023/01/23 10:23 + */ +public interface LoadBalancing { + /** + * 根据AppId路由到合适的 + * + * @param clientApplicationValue 客户端服务值 + * @return 返回目标实现 + */ + Optional route(ClientApplicationValue clientApplicationValue); +} diff --git a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingBean.java b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingBean.java new file mode 100644 index 0000000..8b8e8f9 --- /dev/null +++ b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingBean.java @@ -0,0 +1,23 @@ +package cn.icanci.loopstack.ras.client.holder.loadbalancing; + +import cn.icanci.loopstack.ras.common.enums.LoadBalanceTypeEnum; + +import java.lang.annotation.*; + +/** + * 负载均衡标记tag + * + * @author icanci + * @since 1.0 Created in 2023/01/23 10:26 + */ +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface LoadBalancingBean { + /** + * 负载均衡实现 + * + * @return LoadBalanceTypeEnum + */ + LoadBalanceTypeEnum value(); +} diff --git a/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingCache.java b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingCache.java new file mode 100644 index 0000000..3084a42 --- /dev/null +++ b/client/src/main/java/cn/icanci/loopstack/ras/client/holder/loadbalancing/LoadBalancingCache.java @@ -0,0 +1,13 @@ +package cn.icanci.loopstack.ras.client.holder.loadbalancing; + +/** + * 负载均衡缓存 + * - 存储执行的过程和结果 + * - 缓存分为2种,一种是元数据缓存,一种是执行过程缓存 + * + * @author icanci + * @since 1.0 Created in 2023/01/23 10:24 + */ +public abstract class LoadBalancingCache { + +} -- Gitee