发布新版本时如果直接 kill 进程,正在处理的请求会中断,数据可能不一致。优雅关闭让应用处理完当前请求再停止。
一、优雅关闭
server:
shutdown: graceful
spring:
lifecycle:
timeout-per-shutdown-phase: 30s
二、手动降级
@Component
public class DegradeService {
private final Map<String, Boolean> degradeRules = new ConcurrentHashMap<>();
public boolean isDegrade(String key) {
return degradeRules.getOrDefault(key, false);
}
public void enableDegrade(String key) {
degradeRules.put(key, true);
}
public void disableDegrade(String key) {
degradeRules.put(key, false);
}
public <T> T execute(String key, Supplier<T> supplier, T fallback) {
if (isDegrade(key)) return fallback;
return supplier.get();
}
}
三、熔断降级
@RestController
public class DegradeController {
@Autowired
private DegradeService degradeService;
@PostMapping("/degrade/enable")
public ResultVO<?> enable(@RequestParam String key) {
degradeService.enableDegrade(key);
return ResultVO.success("已开启: " + key);
}
@PostMapping("/degrade/disable")
public ResultVO<?> disable(@RequestParam String key) {
degradeService.disableDegrade(key);
return ResultVO.success("已关闭: " + key);
}
}













