DeepSeek连续故障!Java侧多模型熔断降级+本地Ollama部署实战

张开发
2026/4/13 6:20:31 15 分钟阅读

分享文章

DeepSeek连续故障!Java侧多模型熔断降级+本地Ollama部署实战
文章目录开篇当服务器繁忙成了常态为什么要搞熔断降级血的教训Java实战Resilience4j多模型路由第一步引入依赖pom.xml第二步application.yml 熔断配置第三步多模型路由核心代码执行流程第四步Controller 接口本地Ollama部署最后的兜底保障安装 Ollama拉取 DeepSeek 本地模型Spring AI 集成 Ollamapom.xmlapplication.yml生产级三级高可用架构真实踩坑经验结语做自己的AI主人无意间发现了一个巨牛巨牛巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01开篇当服务器繁忙成了常态兄弟们最近用DeepSeek是不是有种坐过山车的感觉前脚还在愉快地让它帮你改代码后脚就弹出来一个服务器繁忙请稍后重试。这还不算完3月29号晚上到30号上午DeepSeek直接来了个长达12小时的集体罢工创下成立以来单次服务中断最长纪录。紧接着31号又崩一次这频率实在太高。说实话这也不能全怪DeepSeek。月活1.45亿和豆包并列中国AI应用第一梯队流量压力极大。但咱们打工人DDL不等人代码写到一半断线、业务卡壳老板不会听你解释DeepSeek又崩了。核心道理不能把鸡蛋放在一个篮子里。今天以Java开发者视角实战一套多模型熔断降级 本地Ollama兜底云端全崩也能正常跑AI。为什么要搞熔断降级血的教训熔断降级原理很通俗类似家电过载跳闸保护主系统不被拖崩。如果没有熔断DeepSeek响应慢、报错、502你的Java微服务线程一直阻塞等待线程池耗尽引发服务雪崩最终AI接口挂了 → 把你整个业务系统带崩所以必须一套组合拳熔断器连续失败达到阈值自动切断不再请求降级策略主服务挂了自动切备用模型/本地模型限流控制并发防止打满带宽超时控制避免慢请求拖死整个服务Java实战Resilience4j多模型路由Resilience4jJava生态最轻量熔断框架替代Hystrix完美兼容Spring Boot3.x支持注解开发。第一步引入依赖pom.xmlio.github.resilience4j resilience4j-spring-boot3 2.1.0 org.springframework.boot spring-boot-starter-aop第二步application.yml 熔断配置resilience4j:circuitbreaker:configs:default:slidingWindowSize:10failureRateThreshold:50waitDurationInOpenState:30spermittedNumberOfCallsInHalfOpenState:3instances:deepseekPrimary:baseConfig:defaultfailureRateThreshold:60ollamaLocal:baseConfig:defaultfailureRateThreshold:80timelimiter:configs:default:timeoutDuration:5s第三步多模型路由核心代码importio.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;importio.github.resilience4j.timelimiter.annotation.TimeLimiter;importlombok.extern.slf4j.Slf4j;importorg.springframework.ai.chat.prompt.Prompt;importorg.springframework.ai.ollama.OllamaChatModel;importorg.springframework.ai.openai.OpenAiChatModel;importorg.springframework.stereotype.Service;importjava.util.concurrent.CompletableFuture;ServiceSlf4jpublicclassMultiModelAiService{privatefinalOpenAiChatModeldeepSeekModel;privatefinalOllamaChatModelollamaModel;publicMultiModelAiService(OpenAiChatModeldeepSeekModel,OllamaChatModelollamaModel){this.deepSeekModeldeepSeekModel;this.ollamaModelollamaModel;}/** * 主入口优先DeepSeek失败自动降级到Ollama */CircuitBreaker(namedeepseekPrimary,fallbackMethodfallbackToOllama)TimeLimiter(namedeepseekPrimary)publicCompletableFuturegenerateCode(Stringrequirement){returnCompletableFuture.supplyAsync(()-{log.info(尝试调用DeepSeek主通道...);PromptpromptnewPrompt(请生成代码requirement);returndeepSeekModel.call(prompt).getResult().getOutput().getContent();});}/** * 降级兜底本地Ollama */publicCompletableFuturefallbackToOllama(Stringrequirement,Exceptionex){log.warn(DeepSeek异常降级至本地Ollama: {},ex.getMessage());returnCompletableFuture.supplyAsync(()-{try{PromptpromptnewPrompt(请生成代码requirement);returnollamaModel.call(prompt).getResult().getOutput().getContent();}catch(ExceptionlocalEx){log.error(本地Ollama也异常,localEx);returnAI服务暂时不可用请稍后重试;}});}}执行流程请求优先走DeepSeek 主通道5秒超时 / 失败率超60% →熔断器打开自动进入fallbackToOllama→ 切本地Ollama30秒后半开试探恢复则自动切回主服务第四步Controller 接口importlombok.RequiredArgsConstructor;importorg.springframework.http.HttpStatus;importorg.springframework.http.ResponseEntity;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.concurrent.TimeUnit;RestControllerRequestMapping(/ai)RequiredArgsConstructorpublicclassAiController{privatefinalMultiModelAiServiceaiService;PostMapping(/code)publicResponseEntitygenerateCode(RequestBodyStringrequirement){try{StringresultaiService.generateCode(requirement).get(8,TimeUnit.SECONDS);returnResponseEntity.ok(result);}catch(Exceptione){returnResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body(所有AI通道均不可用);}}}本地Ollama部署最后的兜底保障Ollama开源本地大模型运行框架一行命令部署支持标准REST APIJava直接对接。安装 Ollamamac / Linuxcurl-fsSLhttps://ollama.com/install.sh|shWindowswingetinstall--idOllama.Ollama修改模型存储目录防止C盘爆满OLLAMA_MODELSD:\ollama\models拉取 DeepSeek 本地模型根据显存选择# 4-6G显存ollama pull deepseek-r1:1.5b# 8-12G显存推荐ollama pull deepseek-r1:7b# 24G显存ollama pull deepseek-r1:14bSpring AI 集成 Ollamapom.xmlorg.springframework.ai spring-ai-starter-model-ollama 1.0.0application.ymlspring:ai:ollama:base-url:http://localhost:11434chat:model:deepseek-r1:7boptions:temperature:0.7num-ctx:4096配置完成Java即可直接调用本地模型。生产级三级高可用架构一级主力DeepSeek 官方API能力强、偶发不稳定二级备用其他云厂商AI API豆包、通义千问等三级兜底本地Ollama部署绝对稳定、自主可控优点成本极低普通游戏本即可跑7B模型可用性质变云端全崩也不影响核心业务完全自主不受第三方服务商故障影响真实踩坑经验线程池必须隔离不要用默认线程池自定义独立线程池避免OOM。Ollama首次调用慢模型加载需要时间可设置常驻内存或项目启动预热。按显存选模型8G显存强行跑32B会极度卡顿7B足够代码、文本场景。必须加监控Resilience4j Actuator Prometheus Grafana实时看熔断状态、降级次数。结语做自己的AI主人DeepSeek连续故障给所有AI开发者敲响警钟依赖单一云AI 极高风险。Java生态有成熟的Resilience4j熔断配合Ollama极简本地部署完全可以搭建高可用 低成本 自主可控的企业级AI架构。下次再遇到云端AI罢工你可以淡定看着系统自动切换本地模型手里有粮心里不慌这才是高级工程师的底气。无意间发现了一个巨牛巨牛巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01

更多文章