背景
做数据拉取服务的平台,之前的代码采用并行流去拉取第三方平台数据,且没有指定线程数;这样做数据量小的时候确实不会出现问题且数据及时性也很不错;但数据量上来了就会出现恐怖的事情!
问题
某天突然发现库里的数据部分更新部分不更新,对未更新的数据去验证又没有问题;排查了一圈发现是OOM导致触发公司的重启机制;
解决方案
原流程图

改版后流程图

对应问题
1、幂等问题:数据库中做了唯一键限制,消息重复消费也可保证数据唯一性,且用的是 **on duplicate key update**不担心报错导致程序终止
2、消息顺序消费问题:保证最终数据准确性即可,不要求顺序,需要保证顺序消费的小伙伴可考虑 hash + 队列方式保证消费顺序
文章讲述了在数据拉取服务中,由于未指定线程数导致的OOM问题。解决方案包括引入幂等性处理,利用数据库的唯一键和onduplicatekeyupdate避免数据冲突,以及对于顺序消费的讨论,提出了哈希+队列的方法来保证消费顺序。
11万+

被折叠的 条评论
为什么被折叠?



