博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并行处理:性能优化之另辟蹊径
阅读量:5883 次
发布时间:2019-06-19

本文共 887 字,大约阅读时间需要 2 分钟。

你是否有过这样的经历:自己写的功能耗时比较长,导致用户操作时需要等待好久。你我都知道此时他们的心中应该是:“一万只草泥马在策马奔腾“。接下来我们要做的就是「优化」了!( PS :这点 B 数还是有的)。当然,如果你没有这个问题,出门左拐!

说到优化,对于 WEB 程序来说,我们接触最多的应该是 “数据库层面“ 的优化,也就是 SQL 语句优化。一般能用到的优化方式有减少操作的数据量、避免复杂查询、减少回表次数、添加有效索引等等。但是如果这些 “骚操作” 我们都用上了,没有可以优化的余地了。这个时候该咋办?其实我们还可以换个角度出发,比如当前这段代码能否利用「并行处理」来进一步提升性能呢?

在 JAVA 中就是通过多线程的方式,并行处理数据,使代码的性能进一步的提升。

比如常用的任务调度框架 XXL-JOB 中就提供了这种解决问题的思路!对于处理大数据量的任务,XXL-JOB 中提供了「分片广播任务」功能。具体做法是通过将执行器以集群方式部署,目标任务的路由策略选择"分片广播"情况,这样一次任务调度将会广播触发集群中所有执行器执行一次任务,多个机器一次处理,达到并行处理的目的。其中做法就是要将待处理的大数据分成多份,每个执行器执行其中一份数据,从而达到快速处理的目的。

以上是多机器并行处理的案例。有时候我们写的应用就是在一台机器跑,此时想要达到并行的目的,只能通过多线程的方式实现。之前遇到过这样一个功能,通过程序将 10万 多条记录插入线上 MySQL 数据库。如果单线程循环插入,耗时在分钟级。这种的优化方式可以考虑用多线程加数据分片的方式处理,将 10万 条数据切分成多个小的数据集合,然后通过多线程并行插入。可以大幅缩短执行时间。当然这种做法也要看数据库的性能,如果数据库承受不住这种并发,则要考虑别的方式。这时候需要和 DBA 做好沟通。

好了,并行处理加数据分片是一种优化思路,当我们无法通过优化已有代码来提升性能的时候,不妨考虑下这个思路。

转载于:https://juejin.im/post/5cb4952e6fb9a068530124f9

你可能感兴趣的文章
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>
JS Cookie
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
MacBook如何用Parallels Desktop安装windows7/8
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
ABP理论学习之仓储
查看>>
我的友情链接
查看>>
Tengine新增nginx upstream模块的使用
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
汽车常识全面介绍 - 悬挂系统
查看>>
加快ALTER TABLE 操作速度
查看>>