没有高并发项目经验,但经常被问高并发、性能调优问题怎么办?

669 篇文章 15 订阅
659 篇文章 32 订阅

篇文章对很多没有高并发经验的程序员来说,会非常有帮助。

很多程序员可能都遇到过类似的困惑:

我没有高并发项目经验,但是面试的时候经常被问到高并发、性能调优方面的问题,该怎么办?

今天给大家说一自己学习高并发的方法。

你可以自己写一个小的电商项目,建议最简单的单体结构的电商项目即可。

从最简单的单体项目开始,然后按照以下三个阶段来学习高并发。

第一阶段

在高并发条件下,学习对单机性能进行优化。

用 Docker 容器先去运行电商项目,然后再用 jmeter、wrk 等工具去压测。

在压测期间,你会发现:由于系统每个模块不同,所以性能表现就不一样。

这是正常的,不同模块、不同产品对并发指标的要求本身想·是不一样的。例如,商品浏览和下订单,一个读为主,一个写为主。

基于这种情况,你最好要编写复杂的压测脚本,能自动实现不同模块的压测任务。

然后在这种不断地压测探测下,去探测问题,并且通过优化代码、JVM 去解决问题。

比如,解决误用 HashMap 导致死循环的问题。又比如,误用不带缓存的文件 IO 流氓,去读取文件的问题等等。

该程序和 JVM 优化完毕后,你可能又会发现数据库也存在问题。于是,你又要去研究如何优化数据库 SQL,如何对数据库分表等问题。

也是在这个阶段,你可能还会学到,缓存的必要性以及同步缓存数据状态的重要性等重要知识点。

在搞了单机优化后,没有办法再通过单机的压测学到什么新的东西了。于是,转向第二阶段。

第二阶段

从阿里云买了两台机器,开始尝试使用负载均衡去分担高并发的压力。

同样的,也是借助压测工具去模拟了高并发。在压测期间,负载均衡和系统屡屡出现和单机完全不一样的问题。

比如,负载均衡本身的性能问题。比如,在一些时候,负载均衡后面的机器负载是不平衡的,需要对负载算法进行调整。

这个阶段,你会接触到负载均衡中大部分的细节。

但是,高并发中,很多系统的构成会很复杂,以至于需要分布式架构系统的程度。他们需要各种中间件做通信,做存储。

所以,继续第三阶段的练习。

第三阶段

为了能熟悉市面上各种中间件的使用,开始对单体的电商平台进行改造。

比如,把一些本地调用的方法,替换成 Dubbo 远程调用。

比如,将一些模块直接调用,替换成 MQ 中间件传消息。

再比如,一些放在关系数据库的被频繁访问的数据,改存在 MongoDB 中……

当然,压测依然继续。就这样,你可以实践到很多中间件和分布式框架的使用。

三个阶段的学习之后,面试的大部分基础问题你基本可以应付了。

毕竟在程序员这个圈子里,90% 以上的人可能都没有真正的高并发经验。作为面试官来说:

为什么我们需要找有高并发经验的人?

说白了,我们想找的程序员其实就是:

  • 不会乱写性能很差的代码

  • 能敏锐地感知到影响系统的问题

  • 能独立的处理由于高并发引发的问题

我们找熟悉高可用的人,其实并不要求这个人一定能给出什么独特的高可用方案。我们要求的是,他能知道高可用的知识后,去意识到高可用的重要性。

比如限流功能出现问题,他要能马上认识到这是个很重要的问题,从而把解决的优先级提到很高。

通过以上三个阶段的学习和练习,基本是可以掌握这些技能的,这就够了,剩下的细节,就靠在实际工作再实践吧。

此外也希望各位面试官,在招人的时候,如果遇到好苗子可以适当宽容一些,给新人们一点机会。

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

咱们下期见!答案获取方式:已赞 已评 已关~

学习更多JAVA知识与技巧,关注与私信博主(03)
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值