在即时通讯网社区里,多是做IM、消息推送、客服系统、音视频聊天这类实时通信方面的开发者,在涉及到即时通讯技术时聊的最多的话题就是高并发、高吞吐、海量用户。
代码还没开始写,就考虑万一哪天这IM用户量破百万、千万该怎么办的问题,是多数程序员的基本修养。
在面视即时通讯相关工作的时候,高并发也是必谈问题,那到底什么是高并发?嗯,真要说出个所以然来,还真有点懵。
什么是高并发?
高并发是互联网系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数。
简单点说,就是QPS(Queries per second)。
那么我们在谈论高并发的时候,究竟在谈什么东西呢?归根结底,到底什么是高并发?
高并发究竟是什么?
这里先给出结论:
1)高并发的基本表现为单位时间内系统能够同时处理的请求数;
2)高并发的核心是对CPU资源的有效压榨。
举个例子:如果我们开发了一个叫做MD5穷举的应用,每个请求都会携带一个md5加密字符串,最终系统穷举出所有的结果,并返回原始字符串。这个时候我们的应用场景或者说应用业务是属于CPU密集型而不是IO密集型。
这个时候CPU一直在做有效计算,甚至可以把CPU利用率跑满,这时我们谈论高并发并没有任何意义。(当然,我们可以通过加机器也就是加CPU来提高并发能力,这个是一个正常猿都知道废话方案,谈论加机器没有什么意义,没有任何高并发是加机器解决不了,如果有,那说明你加的机器还不够多!)
对于大多数互联网应用来说,CPU不是也不应该是系统的瓶颈,系统的大部分时间的状况都是CPU在等I/O(硬盘/内存/网络) 的读/写操作完成。
这个时候就可能有人会说,我看系统监控的时候,内存和网