From 9c409d7ab56af44a4a203539a19a60eb3b1266d2 Mon Sep 17 00:00:00 2001 From: JangCan <2862008188@qq.com> Date: Sat, 20 Apr 2024 10:06:24 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=89=80=E6=9C=89zset=E6=95=B0=E6=8D=AE=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gateway/cache/GatewayZSetNodeCache.java | 20 ++++++++++++++++++- .../service/impl/GatewayLoadServiceImpl.java | 17 +++++----------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/loadcenter/gateway/cache/GatewayZSetNodeCache.java b/src/main/java/com/loadcenter/gateway/cache/GatewayZSetNodeCache.java index 78c90da..1661072 100644 --- a/src/main/java/com/loadcenter/gateway/cache/GatewayZSetNodeCache.java +++ b/src/main/java/com/loadcenter/gateway/cache/GatewayZSetNodeCache.java @@ -1,8 +1,10 @@ package com.loadcenter.gateway.cache; import com.loadcenter.gateway.cache.abs.GatewayCacheAbs; +import com.loadcenter.gateway.model.WorkGatewayNode; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.Map; /** @@ -25,10 +27,26 @@ public class GatewayZSetNodeCache extends GatewayCacheAbs { * 获取所有zset数据 * @return 负载节点集合 */ - public Map get(){ + public Map getzSet(){ return redisService.getCacheZSetScore(encode(gatewayZSetCount)); } + /** + * 获取所有zset数据 + * @return 负载节点集合 + */ + public ArrayList get(){ + ArrayList nodeList = new ArrayList<>(); + Map map = redisService.getCacheZSetScore(encode(gatewayZSetCount)); + for (Map.Entry entry : map.entrySet()) { + WorkGatewayNode workGatewayNode = new WorkGatewayNode(); + workGatewayNode.setNodeId(entry.getKey().toString()); + workGatewayNode.setSource(entry.getValue()); + nodeList.add(workGatewayNode); + } + return nodeList; + } + /** * 修改服务器的在线车辆 diff --git a/src/main/java/com/loadcenter/service/impl/GatewayLoadServiceImpl.java b/src/main/java/com/loadcenter/service/impl/GatewayLoadServiceImpl.java index 25da191..b79c448 100644 --- a/src/main/java/com/loadcenter/service/impl/GatewayLoadServiceImpl.java +++ b/src/main/java/com/loadcenter/service/impl/GatewayLoadServiceImpl.java @@ -83,7 +83,7 @@ public class GatewayLoadServiceImpl implements GatewayLoadService { ArrayList ipCacheSet = new ArrayList<>(); //从redis获取服务器IP集合 - Map map = gatewayZSetNodeCache.get(); + Map map = gatewayZSetNodeCache.getzSet(); for (Map.Entry entry : map.entrySet()) { ipCacheSet.add(entry.getKey().toString()); @@ -197,6 +197,8 @@ public class GatewayLoadServiceImpl implements GatewayLoadService { BigDecimal loadRate = new BigDecimal(vehicleMaxOnlineNum).divide(new BigDecimal(vehicleOnlineNowNum), 0, BigDecimal.ROUND_HALF_UP); log.info("负载率:[{}]",loadRate); + + ArrayList nodeList = gatewayZSetNodeCache.get(); if(loadRate.longValue()>=80L){ //调用扩容逻辑 log.info("负载过高,开始扩容"); @@ -220,20 +222,11 @@ public class GatewayLoadServiceImpl implements GatewayLoadService { gatewayZSetNodeCache.put(instancesInformation.getPublicIpAddress(),0); log.info("实例id和公网ip存入redis"); - }else if (loadRate.longValue()<20){ - //调用缩容逻辑 + }else if (loadRate.longValue()<20L){ + } } - /** - * 扩容逻辑 - * TODO - */ - - /** - * 缩容逻辑 - * TODO - */ }