关于高并发:没有高并发项目经验但经常被问高并发性能调优问题怎么办

43次阅读

共计 1407 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章对很多没有高并发教训的程序员来说,会十分有帮忙。

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

我没有高并发我的项目教训,然而面试的时候常常被问到高并发、性能调优方面的问题,该怎么办?

明天给大家说一本人学习高并发的办法。

你能够本人写一个小的电商我的项目,倡议最简略的单体构造的电商我的项目即可。

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

第一阶段

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

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

在压测期间,你会发现:因为零碎每个模块不同,所以性能体现就不一样。

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

基于这种状况,你最好要编写简单的压测脚本,能主动实现不同模块的压测工作。

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

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

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

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

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

第二阶段

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

同样的,也是借助压测工具去模仿了高并发。在压测期间,负载平衡和零碎每每呈现和单机齐全不一样的问题。

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

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

然而,高并发中,很多零碎的形成会很简单,以至于须要分布式架构零碎的水平。他们须要各种中间件做通信,做存储。

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

第三阶段

为了能 相熟市面上各种中间件的应用,开始对单体的电商平台进行革新。

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

比方,将一些模块间接调用,替换成 MQ 中间件传音讯。

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

当然,压测仍然持续。就这样,你能够实际到很多中间件和分布式框架的应用。

在模仿高并发练习的同时,别忘了去读各种高并发高性能的书籍。比方,《大型网站服务器容量布局》、《互联网守业核心技术:构建可伸缩的 web 利用》等书籍。

三个阶段的学习之后,面试的大部分根底问题你根本能够应酬了。

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

为什么咱们须要找有高并发教训的人?

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

  • 不会乱写性能很差的代码
  • 能敏锐地感知到影响零碎的问题
  • 能独立的解决因为高并发引发的问题

咱们找相熟高可用的人,其实并不要求这个人肯定能给出什么独特的高可用计划。咱们要求的是,他能晓得高可用的常识后,去意识到高可用的重要性。

比方限流性能呈现问题,他要能马上意识到这是个很重要的问题,从而把解决的优先级提到很高。

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

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

正文完
 0