在【 程序员必须掌握的性能调优 XYZ 】这篇文章中,老兵哥结合我的经历解释了程序员往架构师方向发展时为何要跨越性能调优这一关,这是咱们创建流程化、结构化、系统化的思惟的契机。另外,老兵哥还介绍了从 X、Y、Z 三个维度优化性能的思路。接下来,咱们将从 X 维度来谈谈优化业务交互设计的思路。html
X 维度自己超出了技术范畴,但为了更好地服务业务,技术人也有必要懂得一些基础的业务优化思路。若是只知道埋头赶路,不知道抬头看天,那咱们技术人很容易作了费力不讨好的事情,例如:某些性能瓶颈是因为业务流程设计不合理致使的,在业务流程优化完善以前,咱们仅仅从技术视角去优化改善,极有可能事倍功半。具体说来,哪些业务优化思路是值得咱们借鉴实践的呢?老兵哥我分享几点我的经验供你们作引子参考。程序员
让客户端分担部分计算存储任务。面向公网的互联网应用最显著的特色就是用户基数很是大,每项业务操做自己的计算量可能不大,可是乘上用户量以后状况就彻底不同了,为了保障业务正常高效运转,咱们就要投入更多服务器和带宽资源。若是资源投入跟不上业务量的增加,那么系统性能就会变差,用户操做就会超时或失败,用户体验就会变差,最终致使业务受损。有没有办法在不增长资源投入的状况下来改善系统性能呢?若是把用户的终端(手机或电脑等)也归入到系统范畴,那么把某些任务放到客户端计算是缓解服务端资源的有效办法。数据库
具体有哪些任务适合交给客户端处理呢?数据合法性的初步验证、数据的加工转换、数据呈现形式变换等等,例如在注册登陆过程当中,客户端能够对用户填写的信息作格式层面的校验,若是不符合要求能够直接给出提示信息让用户从新填写,这样就免去了将信息发送至服务器的资源消耗。在如今流行的人脸或声纹验证身份的场景下,客户端能够直接提取照片或声音的特征码发往服务器端作校验,而不是把照片或声音文件直接发送过去。还有就是对已呈现数据的排序或展现转换上,客户端也彻底能够胜任。如今的客户端计算存储能力都很强大,关键是咱们要识别出哪些任务适合在客户端运行,这是提高性能一个思路方向。浏览器
除此以外,优化交互设计是提高性能很是有效的途径。若是交互设计不合理,那就容易产生许多无效的操做,这就是对资源最大的浪费。举一个很是广泛的场景为例,无论何种类型的业务,都会存在耗时较长的操做,好比将某批任务分派给许多人,分配时要综合考虑任务和执行者的匹配度,这个匹配过程的耗时跟任务和执行者的数量成正比,咱们习惯性作法就是提交操做指令后阻塞轮询进度直至完成,而轮询会致使大量无效的查询请求,尤为在海量用户的状况下,这就是一场 DDos 攻击,很容易本身就把本身给搞死了。性能优化
化解这种问题的关键就是优化交互,把阻塞轮询改为异步通知,批量操做指令提交以后就再也不轮询进度了,而是等待服务器端的进度更新通知,这样就避免了大量无效的查询请求。固然,业务流程优化依赖对业务的深入理解,这更可能是产品的职责,但咱们技术也要懂得常见业务模式对性能的影响。下一篇咱们将从 Y 技术维度来看看如何优化应用的性能。服务器
关注「 IT老兵哥 」,赋能程序人生!推荐原创软技能文章,请点击连接:程序员,怎样打造我的影响力?架构
近期热评系列《 程序员必须懂的架构师入门课 》:异步