为什么说高并发越来越重要了

我感觉分布式几乎是在这小半年间成为了行业标配。越来越多的主流框架也在 README 里面增加各种并发相关的 Benchhmark ,来突显自己在高并发场景的卓越性能。甚至连 Python 都开始出现不少异步 Web 框架,API 设计还和 Flask 高度一致,大大降低了将整套系统切换成异步的成本。

再回过头来说为什么高并发越来越被重视,以前主流的多进程/多线程是怎么了,遇到了什么瓶颈了吗?怎么大家一下子都在往异步的方向发展,往高并发的极致方向走。

我猜测主要原因有两个

  1. Node.js 的崛起

    Node.js 的崛起不仅仅带火了一大波前端工程师,有了后来的”全栈工程师” title(前端程序猿:js能写后端了?前端还一周一个框架,年底跳槽翻一番;培训机构:多开几个 js 全栈班,每个月向市场输出几百个前端工程师,年底前实现就业。),还将人们对异步非阻塞,事件循环机制的认识带到了一个全新的高度。单进程单线程的 Node.js 发挥出了极高的性能,可以处理大量的并发(可以说还没和 Python、Ruby 形成三足鼎立,就先将 Python 的 Django 和 Ruby 的 Ruby on Rails 比了下去。)。所以由此看来 Node.js 对计算机领域带来的深远影响,说 Node 是近十年最伟大的框架确实不为过。

  1. 流量高速增长,服务器成本剧增

    到这里估计有读者会问,你用异步吞吐是大了,但是流量上来了你服务器不是该加的还是得加么?用不用异步和服务器成本增加两者关系大么?我举个极端的简单例子,相信大家就明白了。

    假如现在还是十年前的流量规模,那时候普遍还是使用多进程/多线程的并发方案,提不提高单机的吞吐量真的没有必要,真遇到什么瓶颈也只会想到数据库的读写分离,或者干脆直接多加一台应用服务器做 Load Balance ,使不使用异步去提高那单机的 20% 的吞吐量,可以说根本不影响你服务器的数量,做了异步一台能搞定的,使用多进程/多线程也是一台能搞定;原本使用多进程/多线程需要用到两台的,也不会因为你现在使用了异步而减少到一台,也就是使用异步带来的优化不足以影响成本。

    如果放眼现在,稍微像样的产品基本上都是十台服务器起步,BAT 级别的大厂都是几百台,这时候单机提高 20% 的吞吐带来的成本节约就很客观了。而且现在都是微服务架构,模块之间的相互调用进一步增加流量压力,同时现在的互联网对用户体验有着近乎变态的要求,基本上缓存服务器能上多少就上多少,用堆服务器来减少用户等待时间。这时候提高吞吐就很有必要了,反正服务器钱是肯定要烧的了,最好尽可能榨干这些硬件的性能。

面对肯定会到来的异步趋势,我们可以做点什么?

是异步框架出一个学一个吗?我觉得未来各种语言的异步框架肯定会层出不穷,这时候加强对计算机各种并发方案的理解,搞懂同步/异步,阻塞/非阻塞比”沉迷“各种眼花缭乱的框架更加重要。

要知道 Node.js 是在诞生后的第六年才发布 v4.0.0 版本之后开始飞速发展,而 Swift 还在一年一改。所以沉迷于新框架或者新语言没有意义,而掌握其底层原理能保证自己未来很长一段时间不会落伍。

深入了解 MyBatis :动态 SQL 深入了解 MyBatis :ResultMap

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×