最近在一个系统功能的优化。这个是一个把数据校对的部分给优化一下。目前的背景是相当的惨,几万数据要通过接口刷新几天。
这个实在不能忍了。开始接手优化。一边理解业务,一边优化。里边多的是可以发挥优化的余地,优化了几处的SQl。也把业务流程给优化了一下。
主流程中,如果主要部分没有数据,那么就不要再查询详细数据,这样可以减少很大部分(经过数据分析,70%的数据都是没详细数据的那种)。
今天,用实际的开始测了,一分钟大概200条。感觉没有多快,很是郁闷啊。这样的话,20W的数据也要20小时,好像还是比较慢。后来,一想这个任务是4台前段的
服务器呢,这个也是分布式。这样纯数学算法,1分钟就800条。这样20W数据也就5小时。感觉稍微快点了。多点的任务,在这个系统里是使用队列还分配任务的,分析了那个任务的SQl,里边原来还是一致性Hash原则,失败重试,超时任务自动重置分配的处理机,里边的东西还是很多的。 每次处理1000条,连任务上上限都有啊。
分布式任务的任务管理的,分配,结果很有很好的实现,运行日志是写在文件里,可以去任务机器中得log目录下查吧。这个以后可以考虑改成NOSQL吧。
以后有时间,在好好看看一致性Hash等知识。目前系统感觉还有很多优化点,等这次上线后,在视情况进行下一次优化。这个服务中有一个根据Key来计算实时的数据任务,这个可以考虑改成多任务的啊。