本文介绍: 先以386台机器并行处理假设第一天处理数据量超过三分之一,此时计算剩余待处理量按10s需要多少机器,理论上所需机器数N

在这里插入图片描述

关键点:

时间计算

也就是一台机器三天处理量最多259200,最少处理25920份。那么1000w最多需要10000000/25920 ≈ 386台机器,最少需要39台机器。

优化思路
思路一:动态缩容,先以386台机器并行处理,假设第一天处理数据量超过三分之一,此时计算剩余待处理量按10s算需要多少台机器,理论上所需机器数N<=386。机器数可减少到N台,再过一天后再次计算所需机器数newN<=386,机器数再次缩减到386台。也就是我们时间段分成了3份,因为一篇PDF处理时长1~10s,所以每次一定是可以缩减0-N台服务器这个分段可以更细到9段、24段、72段等,这样可以更多地缩减服务器数量。当然有更省事的办法,就是一次使用386台机器,所有文件处理完后释放掉。
思路二:多线程,鉴于现在一台服务器一般情况下是多核的CPU,所以可以充分利用多线程的优势。使用线程池可以更好地避免线程的创建销毁的损耗,这里处理程序可以使用线程池来进行相应处理。线程数建议按CPU核心数 *(1+平均等待时间/平均工作时间计算
思路三:分布式任务调度,由于有多线程+多实例,所以需要有一个高效的分布式调度组件来进行任务分配,避免资源竞争和任务失败重试等。这个可以使用一些分布式任务调度框架,如XXL-JOB,基于自己业务属性自主开发一个任务调度平台。或者可以使用消息中间件方式进行任务的生产+消费,消息中间件消费一般是自带多线程的。

原文地址:https://blog.csdn.net/u011305680/article/details/134693619

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34110.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注