C10K 问题

C10K 问题简介


C10K 问题是一个优化网络套接字以同时处理大量客户端连接的问题。  
C10K 表示处理 10000 个并发连接。
注意这里的并发连接和每秒请求数不同,虽然它们是相似的:
每秒处理许多请求需要很高的吞吐量(快速处理它们),但是更大的数量并发连接需要高效的连接调度。

C10K 问题最早是在 1999 年提出来的。为了解决该问题,首先的研究方向就是 IO 模型的优化,逐渐解决了 C10K 的问题。
epoll、kqueue、iocp 就是 IO 模型优化的一些最佳实践,这几种技术实现分别对应于不同的系统平台。

C10K 这个术语用于表示如何处理大量并发连接问题,在 2010 年已经演变成 C10M。  
2010 年早期,百万级并发连接在一台 1U 服务器成为可能:
超过 200 万的连接(WhatsApp, 24 cores, using Erlang on FreeBSD)、
1000-1200 万的连接(MigratoryData, 12 cores, using Java on Linux)。

上面说的是单台服务器处理并发连接的情况。 (个人想法:这种可以看成是服务器连接处理能力的在软件上的垂直扩展。 ) 在现代世界中的分布式负载均衡器,CDN 等技术的使用使得服务器扩展更多的是关于服务器的物理上的水平向外扩展。

Ref

C10k problem
The C10K problem
C10K for the modern world
C10K 参考资料
架构师实践日|从 C10K 到 C10M 高性能网络的探索与实践
聊聊 C10K 问题及解决方案
千万级并发实现的秘密:内核不是解决方案,而是问题所在!
C10K 问题引发的技术变革