新增获取所有zset数据方法
master
JangCan 2024-04-20 10:06:24 +08:00
parent 3f7fe62466
commit 9c409d7ab5
2 changed files with 24 additions and 13 deletions

View File

@ -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<String> {
* zset
* @return
*/
public Map<Object,Double> get(){
public Map<Object,Double> getzSet(){
return redisService.getCacheZSetScore(encode(gatewayZSetCount));
}
/**
* zset
* @return
*/
public ArrayList<WorkGatewayNode> get(){
ArrayList<WorkGatewayNode> nodeList = new ArrayList<>();
Map<Object, Double> map = redisService.getCacheZSetScore(encode(gatewayZSetCount));
for (Map.Entry<Object, Double> entry : map.entrySet()) {
WorkGatewayNode workGatewayNode = new WorkGatewayNode();
workGatewayNode.setNodeId(entry.getKey().toString());
workGatewayNode.setSource(entry.getValue());
nodeList.add(workGatewayNode);
}
return nodeList;
}
/**
* 线

View File

@ -83,7 +83,7 @@ public class GatewayLoadServiceImpl implements GatewayLoadService {
ArrayList<String> ipCacheSet = new ArrayList<>();
//从redis获取服务器IP集合
Map<Object, Double> map = gatewayZSetNodeCache.get();
Map<Object, Double> map = gatewayZSetNodeCache.getzSet();
for (Map.Entry<Object, Double> 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<WorkGatewayNode> 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
*/
}