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


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

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

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

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

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

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

    第一阶段

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

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

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

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

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

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

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

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

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

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

    第二阶段

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

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

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

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

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

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

    第三阶段

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

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

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

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

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

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

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

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

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

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

    • 不会乱写性能很差的代码
    • 能敏锐感知到影响系统的问题
    • 能独立的处理由于高并发引发的问题

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

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

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

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


    你好,我是四猿外。

    一家上市公司的技术总监,管理的技术团队一百余人。

    我从一名非计算机专业的毕业生,转行到程序员,一路打拼,一路成长。

    我会把自己的成长故事写成文章,把枯燥的技术文章写成故事。

    欢迎关注我的公众号。

  • 相关阅读:
    mvc是如何工作的
    MVC4 AJAX Unobtrusive
    MVC4 jQuery UI自动完成
    MVC4Html Helper
    MVC4 Layouts布局视图局部视图
    理解mvc
    ASP.NET MVC HTMLHELPER类的方法总结
    I2C中的重复起始条件到底是什么意思
    release, retain, autorelease 与 AT, MT, AMT
    CMSIS SVD(System View Description)小解
  • 原文地址:https://www.cnblogs.com/siyuanwai/p/14949641.html
Copyright © 2020-2023  润新知