手把手教你做高并发项目,上午学下午用

362 阅读4分钟

首先很多新人对高并发很痴迷,以为搞懂高并发=高水平的概念,从而忽略了低延迟 和高吞吐。

任何产品不可能一开始的时候就是高并发架构。但是我们要时刻准备好迎接大流量。如果你确实希望能够直接接触高并发项目,那也不是不可以。我给你一个实际操作的思路。首先你需要了解jmeter工具,高并发的项目通常会用它来进行并发测试。并发我们通常会分为两种,一种是读并发,一种是写并发。

本人新建一个程序员交流圈子,群主是10年老技术人员,某上市公司的技术负责人,群里面每天会给群友解答疑问,招聘内推,点击即可加入圈子 验证码:ju

模拟读并发 第一阶段:正常情况下,我们编写一个接口都是直接访问数据库获取数据,那这样肯定是占用数据库连接的,所以并发数不会很高。 第二阶段:我们为数据添加缓存,访问时我们先访问缓存,比如redis,如果缓存中没有数据我们再从数据库中读取,这里就会涉及到缓存雪崩和穿透的问题。这些问题咱们可以忽略不计,因为解决办法很简单,而且有很多种。添加缓存就减少了数据库压力,更重要的是我们增加了请求的IOPS(吞吐量),也就意味着我们的服务器一秒钟可以处理更多的请求,也就提高了并发量.

第三阶段:当我们的缓存处理的IOPS比我们的服务器最高支持的并发数还高,比如Tomcat优化的好的话可以有1.5k左右(有人说可以达到6k),不过我觉得这个跟你机器的内存和tomcat的配置有关,咱们暂且假定是1.5k。如果你要超过1.5k的并发,那么此时你就需要增加服务器或者换一种并发量更高的服务器。我们以增加服务器为例,你可以添加1台服务器来支持更高的并发,然后通过nginx进行负载均衡,将流量分配到两台tomcat中。我们知道nginx的最高并发可以达到3W,也就是意味着你可以添加20台tomcat。

第四阶段:当nginx成为了我们的并发瓶颈,我们就要做nginx集群了。这也意味着我们需要将一个地区划分成多个小地区,每个地区配置一个公网nginx。而这种做法有两种,一种是通过网络路由层增加控制来实现分发,一种是通过硬件来实现,硬件的我没操作过,自己实践也不实际,因为很贵!

当然,我们并不能直接通过增加最高并发量就能处理并发,比如数据库层面中途我们就需要改成主从机制,采用分库分表或者使用mongodb这种高吞吐量的数据库来做。比如我们的机器配置也需要增加等。

模拟写并发 写并发跟读并发的区别主要在于写的时间往往比较长,读的时间我们通过缓存来提高,但写库这个动作我们并不能通过缓存来处理,此时就需要我们增加消息队列MQ,最终走向MQ的集群。增加MQ以后我们的请求只是把写库这项任务添加到队列中,然后一条一条地执行,但是用户发起的请求我们立即返回成功标志。这样可以不占用服务线程。也就提高了并发量,同时也需要修改我们的业务,比如正常下单是订单入库后返回成功,并发量上来后我们就需要调整为订单加入队列后成功,并没有入库,那么此时不能告诉用户下单成功,而是提醒用户正在下单,然后前端每1秒钟去查询订单看是否存在,如果存在再提示下单成功。

最后 提高技术能力一靠自我学习,二靠工作实践。如果工作中没有机会,就只能自学了。可以在自己家里准备基础环境,现在的高并发技术都是基于云计算的,实际上就是虚拟化。所以只要在家里准备一台配置较好的主机,多做几个虚拟机,就能大致上模拟出一个分布式环境,再学习掌握压力测试工具和方法,比如Jmeter等,就可以上手了。自学技术是一件神奇的事。痛,并快乐着