前言
昨晚正式环境上线埋点回调的功能。测服经过测试没有问题,也通过加锁解决了瞬时并发导致的MySQL插入主键重复的问题。
上线前遇到了什么?
但是在上线前的1个小时,突然想到埋点回调接口的请求频率会很高,一个后端消息推送给客户端后,客户端会有瞬时的好几个并发。同时我们的客户端又比较多,这样并发会非常大。
但是我们在测试环境又忘记进行压测了。当时同事建议我先不上了,我也想过先不上吧。
但是在前一天刚刚因为上线前打包出现问题取消上线了。然后隔了一天要上了又取消?感觉不好开口。陷入了纠结之中…肯定不能冒险上,不然背锅的就是我。
那会儿脑袋也有点昏沉,思考了大概6分钟左右,突然灵机一动,想到这个回调的业务其实不需要客户端实时的知道执行结果。
也就是说我完全可以用异步,立马给前端返回OK,然后把请求接下来后异步处理,通过线程池慢慢消化任务。当然还有其他的解耦方式,这是写起来最快的,因为马上要上线了,于是花了不到1分钟改完代码上到测试环境测试没问题。
总结
写代码时永远不要忘了我们的代码时时刻刻都有并发的情况。
还有接口的访问量是否会特别大。