程序员怎么会不知道C10K问题呢?
今天简单说下C10K的问题,关于这个问题Ruby的作者松本行弘在《代码的未来》云计算时代的编程一章中有详细的阐述,有兴趣的同学可以直接去购买。本人已经在某淘,购买一本哈哈哈
在做技术规划和架构设计的时候,不要做过度设计,如果咱们只有一万用户,先别去操百万用户在线的心。淘宝那么大,也是从Apache、PHP、MySql发展起来的,没人能预见到淘宝能发展到这样一个规模,一旦发展起来,业务的爆发增长会驱动技术的迅速发展,在业务还不及格的时候,不用为技术的未来担心。
这个思路在业务领域不会有太大的问题,因为需求的变化实在太快了,需要实时去应付。但在底层技术的发展上,我们就有可能遇到短视的报复,比如:这个数据长度不会超过16位吧,这个程序不可能使用到2000年吧。于是就有了千年虫的问题,也有了C10K的问题。
C10K就是Client10000问题,即,在同时连接到服务器的客户端数量超过10000个的环境中,即便硬件性能足够,依然无法正常提供服务,简而言之,就是单机1万个并发连接问题。这个概念最早由DanKegel提出并发布于其个人站点(http:www。kegel。comc10k。html)。
为什么会出现这个问题?因为计算机的上古时代,没有网络的时代,不会有程序员预测到互联网时代的到来,也不会想到一台服务器会创建那么多进程。即使在互联网的初期,单台服务器有100个同时在线已经算不错了。甚至,他们在设计Unix的PID的时候,采用了有符号的16位整数,这就导致一台计算机上能够创建出来的进程无法超过32767个。而计算机也得运行一些后台进程,这样应用软件能够创建的进程数就更少了。
当然,这个问题随着技术的发展很快解决了,现在大部分的个人电脑操作系统可以创建64位的进程,由于数据类型带来的进程数上限消失了,但是我们仍然不能无限制的创建进程,因为随着连接数的上升会占用系统大量内存,同样可以造成系统不可用。
操作系统里内存的主要作用是,进程请求内存的时候为其分配可用内存,进程释放后回收内存,并监控内存的使用情况,为了提高内存的使用率,现代操作系统需要程序能够共享内存,并且内存的限制对开发者透明,有些程序占用了内存空间,但不一定是一直使用的,这样就可用把这部分数据序列化到磁盘上,需要的时候在加载到内存,这样内存资源永远会给最需要的程序使用。于是程序员们发明了虚拟内存(VirtualMemory)。
虚拟内存技术支持程序访问比物理内存大得多的内存空间,也使得多个程序共享内存更加高效,物理内存由RAM芯片提供,虚拟内存则依靠透明的使用磁盘空间,使程序运行起来好像有了更大的内存空间。
但是问题依然存在,进程和线程的创建都需要消耗一定的内存,每创建一个栈空间,都会产生内存开销,当内存使用超过物理内存的时候,一部分数据就会持久化到磁盘上,随之而来的就是性能的大幅度下降。
这就像银行挤兑,人们把现金存入银行,收取一定的利息,平时只有少数人去银行取现,银行会拿人们存的钱去做更有价值的投资。但是,如果大部分人都去银行取现,银行是没有那么多现金的。取不到钱的用户,被门挡在外面的用户,一定会去拉横幅喊口号最喜欢双截棍柔中带刚,不喜欢银行就上少林武当云云,于是银行就处于不可用状态了。现在的P2P理财也是一个道理,投资者都去变现,无论是多么良性的资产,一样玩完。
为什么现在会有这么大的连接需求呢?因为业务驱动和技术发展嘛。除了普通的网页浏览和表单提交,即时通信和实时互动交流越来越成为主流需求,keepalive技术也能让浏览器产生长连接,实时在线的客户端越来越多,如果不能解决C10K问题,将导致服务商需要购买大量的服务器,而每一台服务器都不能做到物尽其用,即使你配置了更好的CPU和更大的内存。
当然,现在我们早已经突破了C10K这个瓶颈,具体的思路就是通过单个进程或线程服务于多个客户端请求,通过异步编程和事件触发机制替换轮训,IO采用非阻塞的方式,减少不必要的性能损耗,等等。
底层的相关技术包括epoll、kqueue、libevent等,应用层面的解决方案包括OpenResty、Golang、Node。js等,比如OpenResty的介绍中是这么说的:
据说现在都去搞C10M了,你们怕不怕?
如果往两端用力拉一条由很多环(连接)组成的锁链,其中最脆弱的一个连接会先断掉。因此,锁链整体的强度取决于其中最脆弱的一环。
C10K问题的情况也很相似。一台服务器同时应付超过一万个(或者更多)并发连接的情况,哪怕只有一个要素没有考虑到超过一万个客户端的情况,这个要素就会成为最弱连接,从而导致问题的发生。
每个做架构设计和技术实现的程序员,都应当考虑这个最弱连接问题。
你是最弱的一环吗?
iPhone13预售首日3分钟内售空!粉色太受欢迎据新浪科技消息,9月17日20点,iPhone13系列在天猫开启预售,第一批粉色款不到3分钟内就售罄。苹果连夜补货天猫旗舰店,部分型号在短时间内陆续恢复正常购买。苹果官方商店也……
抛去爱国情怀,客观地讲华为和苹果谁更强?近年来,随着国产手机的崛起,也就难免会将其用于和苹果比较,xdm,你们说,华为、小米、OV、一加等等国产手机(不局限于所列的这几种),究竟谁能和苹果BATTLE,甚至取而代之?……
Android12正式版或将在10月4日进行推送早在今年2月,Android12系统就开启了开发者预览版的测试工作,9月份更新的Beta5,预示着测试版走到尽头,转正在即。据XDA,谷歌内部文档显示,定于10月4日在A……
加密货币老美高招之变着法砸盘SEC狮子大张口,调查起了Uniswap,不仅Coinbase在内被强硬管控,瑞波(Ripple)也成为一个典型例子,今年年初,曾传出瑞波被调查的消息,当天代币价格一路跌底,瑞……
反转亚马逊被判无条件解封卖家账号?这段时间,各位卖家朋友一直都在关注亚马逊封号潮的相关新闻,一个个大卖陨落的信息让很多卖家心寒,而本周,两则与亚马逊封号有关的新闻却给卖家带来一剂强心针。亚马逊被判无条件解……
苹果iOS15支持手动关闭夜景模式,炫光也得到优化,自动调色外媒9to5Mac报道,苹果在iPhone11系列手机上就已经推出了夜景模式,对iOS进行了重大的摄影升级。极低的光线拍摄,摆脱小相机传感器的限制,瞬间变得可以分享。不过,在应……
华为不是孤军奋战!海思芯片实现量产,ASML台积电有望被取代在芯片方面,我国在上世纪六七十年代就已涉足,但因为拿来主义让西方在这一领域占领了高地,同时给我国半导体企业的发展造成了很大阻碍。早期的汉芯造假事件,同样给我们半导体行业带来了重……
三大运营商,没让国人失望,瑞典爱立信国内5G订单为0我国在5G方面的发展取得重大成果,截止目前为止5G基站数量已超过八十万,覆盖范围也已经扩展到了所有的地级城市,而5G用户也逐渐突破4亿。这种情况下可以看出中国的5G通讯市场是多……
为什么苹果手机一冷就关机?在冬季,相信很多有很多北方的果粉都有出现过,因温度太低而导致iphone频频自动关机的情况,涉及的机型几乎从iPhone5S到iPhone6S都有发生,其中也包括电池容量更大的……
查企业信用的网站有哪些?话不多说,先来介绍下可以查询企业信息的平台:1、国家企业信用信息公示系统是官方网站,可以查询企业的基本信息、行政许可信息、行政处罚信息等;缺点:网站不太稳定,……
工信部拟规定未经用户同意,App不得自行唤醒更新来源:海外网海外网4月26日电据工信部网站26日消息,工信部会同公安部、市场监管总局起草《移动互联网应用程序个人信息保护管理暂行规定(征求意见稿)》,并向社会公开征求意见。意见……
短视频内卷惨烈为追赶抖音,快手一季就烧了超百亿广告费话说,你们天天都在说自己的圈子有多卷,但昨天,八姐看了看快手的财报,才不得不说,哼,短视频卷得那才叫激烈啊快手一个季度要花100多亿打广告、亏近50亿参与竞争啊。而在这么……