我是个后端开发,在一家做在线教育工具的小公司。我们产品里有个核心功能,就是把AI处理的一些学习报告和数据,通过API实时推送到前端页面给老师看。说实话,这个功能我们自己觉得挺酷的,但上线后问题就没断过。
最头疼的就是API请求超时。特别是晚上用户高峰期,或者我们调用第三方AI服务有点波动的时候,前端那个loading圈就一直转,转半天然后弹个“请求失败”。老师那边一投诉,运营同事就来找我们,压力山大。我们试过简单粗暴地增加超时时间,但用户体验还是很差,感觉像是在赌这次请求能不能成功。
然后就是容灾备份这块,我们现在做得太简陋了。基本就是主服务挂了,手动切到备用服务器,流程全靠人盯。有次半夜主服务出问题,备用机因为数据没及时同步也半瘫着,整个服务停了好一会儿。我就想,API怎么做容灾备份才能更自动化、更稳妥点?是不是得有更智能的流量切换和状态监控机制?
另一个让我纠结的是流式返回。我们现在很多数据还是等后端全部处理完,打包成一个巨大的JSON一次性扔给前端。数据量一大,等待时间就很长。我知道像聊天那种场景,可以一个字一个字地“流式”返回,那我们这种报告生成、数据分析的场景,API怎么流式返回给前端比较合适?是把一个大任务拆成多个小数据块依次推吗?前端又该怎么配合着接和渲染?这里面的细节和坑,感觉光看文档有点虚,想听听实战过来的经验。
我也在琢磨api重试机制怎么写才好。不能无脑重试,得有个策略吧?比如指数退避?还要考虑幂等性问题,别因为重试导致同一操作执行了好几次。这块我们还没系统性地做,现在就是一些零散的处理。
团队里最近也在讨论,感觉光我们几个开发折腾这些底层稳定性问题,有点力不从心。老板提了句“api怎么做人才培养”,是不是该招个专门做中间件或者架构的同学?还是说我们应该系统地学一学、练一练?大家公司里都是怎么培养人搞定这些“脏活累活”的?
反正现在状态就是,功能能做,但一做深了,这些稳定性、体验的挑战就全冒出来了。特别希望有经验的朋友能分享一下,你们在保证API高可用、提升响应体验方面,到底用了哪些实实在在的方案?从架构设计到代码细节,再到团队分工,有什么踩过的坑或者真香定律?聊具体点最好,感谢!