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 - */ }