Skip to content

Commit b65efa5

Browse files
committed
add reshard status enum
1 parent 7e67252 commit b65efa5

File tree

3 files changed

+51
-17
lines changed

3 files changed

+51
-17
lines changed

cachecloud-open-web/src/main/java/com/sohu/cache/redis/RedisClusterReshard.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sohu.cache.redis;
22

33
import com.sohu.cache.entity.InstanceInfo;
4+
import com.sohu.cache.redis.ReshardProcess.ReshardStatusEnum;
45
import com.sohu.cache.util.IdempotentConfirmer;
56
import org.apache.commons.lang.StringUtils;
67
import org.slf4j.Logger;
@@ -33,7 +34,7 @@ public class RedisClusterReshard {
3334
/**
3435
* 每次迁移key个数
3536
*/
36-
private int migrateBatch = 100;
37+
private int migrateBatch = 10;
3738

3839
/**
3940
* 所有有效节点
@@ -173,7 +174,7 @@ public boolean migrateSlot(InstanceInfo sourceInstanceInfo, InstanceInfo targetI
173174
//源和目标Jedis
174175
Jedis sourceJedis = getJedis(sourceInstanceInfo.getIp(), sourceInstanceInfo.getPort(), defaultTimeout);
175176
Jedis targetJedis = getJedis(targetInstanceInfo.getIp(), targetInstanceInfo.getPort(), defaultTimeout);
176-
//
177+
//逐个slot迁移
177178
boolean hasError = false;
178179
for (int slot = startSlot; slot <= endSlot; slot++) {
179180
long slotStartTime = System.currentTimeMillis();
@@ -189,17 +190,17 @@ public boolean migrateSlot(InstanceInfo sourceInstanceInfo, InstanceInfo targetI
189190
break;
190191
}
191192
}
192-
if (reshardProcess.getStatus() != 2) {
193-
reshardProcess.setStatus(1);
193+
if (reshardProcess.getStatus() != ReshardStatusEnum.ERROR.getValue()) {
194+
reshardProcess.setStatus(ReshardStatusEnum.FINISH.getValue());
194195
}
195196
long endTime = System.currentTimeMillis();
196197
logger.warn("clusterReshard:{}->{}, slot:{}->{}, costTime={} ms", sourceInstanceInfo.getHostPort(),
197198
targetInstanceInfo.getHostPort(), startSlot, endSlot, (endTime - startTime));
198199
if (hasError) {
199-
reshardProcess.setStatus(2);
200+
reshardProcess.setStatus(ReshardStatusEnum.ERROR.getValue());
200201
return false;
201202
} else {
202-
reshardProcess.setStatus(1);
203+
reshardProcess.setStatus(ReshardStatusEnum.FINISH.getValue());
203204
return true;
204205
}
205206
}

cachecloud-open-web/src/main/java/com/sohu/cache/redis/ReshardProcess.java

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import java.util.Arrays;
66
import java.util.Date;
7+
import java.util.HashMap;
78
import java.util.Map;
89
import java.util.concurrent.ConcurrentMap;
910
import java.util.concurrent.ConcurrentSkipListMap;
@@ -44,6 +45,43 @@ public class ReshardProcess {
4445
private volatile Date beginTime;
4546

4647
private volatile Date endTime;
48+
49+
50+
/**
51+
* Reshard状态
52+
*/
53+
public static enum ReshardStatusEnum {
54+
RUNNING(0, "运行中"),
55+
FINISH(1, "完成"),
56+
ERROR(2, "出错");
57+
58+
private int value;
59+
private String info;
60+
61+
private final static Map<Integer, ReshardStatusEnum> MAP = new HashMap<Integer, ReshardStatusEnum>();
62+
static {
63+
for (ReshardStatusEnum reshardStatusEnum : ReshardStatusEnum.values()) {
64+
MAP.put(reshardStatusEnum.getValue(), reshardStatusEnum);
65+
}
66+
}
67+
68+
public static ReshardStatusEnum getReshardStatusEnum(int value) {
69+
return MAP.get(value);
70+
}
71+
72+
private ReshardStatusEnum(int value, String info) {
73+
this.value = value;
74+
this.info = info;
75+
}
76+
77+
public int getValue() {
78+
return value;
79+
}
80+
81+
public String getInfo() {
82+
return info;
83+
}
84+
}
4785

4886
public ReshardProcess() {
4987
beginTime = new Date();
@@ -72,19 +110,14 @@ public void addReshardSlot(int slot, long moveCount) {
72110

73111
public void setStatus(int status) {
74112
this.status = status;
75-
if (Arrays.asList(1,2).contains(status) && endTime == null) {
113+
if (Arrays.asList(ReshardStatusEnum.FINISH.getValue(), ReshardStatusEnum.ERROR.getValue()).contains(status) && endTime == null) {
76114
endTime = new Date();
77115
}
78116
}
79117

80118
public String getStatusDesc() {
81-
if (status == 0) {
82-
return "运行中";
83-
} else if (status == 1) {
84-
return "完成";
85-
} else {
86-
return "出错";
87-
}
119+
ReshardStatusEnum reshardStatusEnum = ReshardStatusEnum.getReshardStatusEnum(status);
120+
return reshardStatusEnum == null ? "" : reshardStatusEnum.getInfo();
88121
}
89122

90123
public void setReshardSlot(int reshardSlot) {

cachecloud-open-web/src/main/java/com/sohu/cache/web/controller/AppManageController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ public ModelAndView doInitHorizontalScaleApply(HttpServletRequest request, HttpS
194194

195195

196196
/**
197-
* 添加分片
197+
* 添加水平扩容节点
198198
*
199199
* @return
200200
*/
@@ -207,7 +207,7 @@ public ModelAndView doAddHorizontalNodes(HttpServletRequest request,
207207
boolean isAdd = false;
208208
AppAudit appAudit = appService.getAppAuditById(appAuditId);
209209
// 解析配置
210-
String[] configArr = masterSizeSlave.split(":");
210+
String[] configArr = masterSizeSlave.split(ConstUtils.COLON);
211211
String masterHost = configArr[0];
212212
String memSize = configArr[1];
213213
int memSizeInt = NumberUtils.toInt(memSize);
@@ -226,7 +226,7 @@ public ModelAndView doAddHorizontalNodes(HttpServletRequest request,
226226
}
227227

228228
/**
229-
* 检测
229+
* 检测水平扩容节点
230230
* @param masterSizeSlave
231231
* @param appAuditId
232232
* @return

0 commit comments

Comments
 (0)