这篇文章对很多没有高并发经验的程序员来说,会非常有帮助。
很多程序员可能都遇到过类似的困惑:
我没有高并发项目经验,但是面试的时候经常被问到高并发、性能调优方面的问题,该怎么办?
今天给大家说一自己学习高并发的方法。
你可以自己写一个小的电商项目,建议最简单的单体结构的电商项目即可。
从最简单的单体项目开始,然后按照以下三个阶段来学习高并发。
第一阶段
在高并发条件下,学习对单机性能进行优化。
用 Docker 容器先去运行电商项目,然后再用 jmeter、wrk 等工具去压测。
在压测期间,你会发现:由于系统每个模块不同,所以性能表现就不一样。
这是正常的,不同模块、不同产品对并发指标的要求本身想·是不一样的。例如,商品浏览和下订单,一个读为主,一个写为主。
基于这种情况,你最好要编写复杂的压测脚本,能自动实现不同模块的压测任务。
然后在这种不断地压测探测下,去探测问题,并且通过优化代码、JVM 去解决问题。
比如,解决误用 HashMap 导致死循环的问题。又比如,误用不带缓存的文件 IO 流氓,去读取文件的问题等等。
该程序和 JVM 优化完毕后,你可能又会发现数据库也存在问题。于是,你又要去研究如何优化数据库 SQL,如何对数据库分表等问题。
也是在这个阶段,你可能还会学到,缓存的必要性以及同步缓存数据状态的重要性等重要知识点。
在搞了单机优化后,没有办法再通过单机的压测学到