Advertisement

C10K问题-高并发网络IO模型

阅读量:

C10K 问题

伴随着互联网技术的迅猛发展,计算机工业界面临一个关键性议题。这一议题的核心在于,如何以最低的成本实现高性能与高并发的双重目标。在以往,这或许并非一个突出的问题,然而自2000年前后起,随着互联网用户数量的爆发式增长,情况发生了显著变化。此前单机服务所承载的用户规模尚处于较低水平,例如仅限于数百名用户,而随着网络逐渐普及,面对成千上万用户的场景变得日益常见。在这种背景下,若仍沿用传统的单机处理模式,则所需成本将远超预期,唯有资金实力雄厚的企业方能持续运营。

在此背景下,“C10K”问题随之产生。“C10K”问题具体指:如何在单一物理服务器上同时处理一万用户的请求?其中,“C”代表并发,“10K”即一万。得益于操作系统与编程语言的进步,在当前环境下,普通用户借助如Java Netty、Libevent等开发框架或库便可轻松构建支持超过一万并发连接的服务端程序,并且经过优化后甚至可实现十万乃至百万级别的并发能力。然而在二十年前,攻克“C10K”难题却耗费了大量精力与智慧,堪称一项具有里程碑意义的技术突破。

操作系统层面分析

C10K问题本质上属于操作系统层面的挑战,若要在单一主机设备中实现对1万个连接的同时支持,需综合考量以下几个关键因素:

文件句柄

首先需要明确的是,每个客户连接均对应一个文件描述符,当可用的文件描述符数量达到上限

全部评论 (0)

还没有任何评论哟~