Hello, all!
数据库中有一大批待处理的数据,可能有百万量级,还会增长。希望定义一个接口,请求之后查询并处理好这些数据。 处理的逻辑可能涉及 RPC 之类耗时较长的代码。因此,我使用异步代码处理。伪代码如下:
// 1.查询数据库
List<Biz> bizs = queryDB();
// 2.分批次
List<List<Biz>> bizLists = Lists.partition(bizs, 1000);
// 3.异步处理 list
bizLists.forEach(list -> listAsyncService.handle(list));
// 4.listAsyncService#handle 也是异步处理
list.forEach(biz -> asyncService.handle(biz));
请教一下,上述代码是否合理。在数据量很大的情况下,如何避免步骤 1 出现 OOM 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.