在开始今天的文章之前,先抛一个面试题出来:
你接触过的单机最大并发数是多少? 你认为当前正常配置的服务器物理机最大并发数可以到多少? 说说你的理解和分析。
思考几分钟,如果你可以有理有据地说出答案,那确实就不用再往下看了,关上手机去陪陪家人是个不错的选择。
思考几分钟,如果你没有头绪或者对答案不确定,那么你先不用着急关闭页面去玩耍,你应该继续往下看,因为这个问题很不错。
对于后端开发人员来说,并发数往往和技术难度是呈正相关的,实际上也确实如此:体量决定架构。
服务端根据不同业务场景会有不同的侧重点,单纯追求高并发其实并不是根本目的,高可用&稳定性更重要。
所以最终我们的目的是:保证高可用高稳定的基础上追求高并发,降本增效。
高可用&高并发是我们直观感受到的,本质上这是个复杂的系统工程,每个环节都会影响结果,每一块都值得研究和深入。
在2000年初的时候,全球互联网的规模并不大,但是当时就已经提出了C10K问题,所谓C10K就是单机1w并发问题,虽然现在不觉得是个难题了,但是这在当初是很有远见和挑战的问题。
C10K问题最早由Dan Kegel发布于其个人站点,原文链接如下:
http://www.kegel.com/c10k.html
相关资料显示Dan Kegel目前工作于Google,从1978年起开始接触计算机编程,是Winetricks和Crosstool的作者,大佬年轻时的照片:
Dan Kegel这篇文章阅读难度并不大,大白建议从事服务端开发或者对高性能网络开发有兴趣的读者尝试读一读。
在APUE第三版都没有提到epoll,所以我们解决C10K问题的时间并不长,其中IO复用epoll/kqueue/iocp等技术对于C10k问题的解决起到了非常重要的作用。
开源大神们基于epoll/kqueue等开发了诸如libevent/libuv等网络库,从而大幅提高了高并发网络的开发效率,对于C/C++程序员来说并不陌生。
这里简单提一下针对下一个10年的展望和挑战:C10M问题。
站在浪尖的那一批人早就开始思考让单机达到1000w并发,现在听起来感觉不可思议,但是要达到这个目标,除了硬件上的提升,更重要的是对系统软件和协议栈的改造。
Errata Security的CEO Robert Graham在Shmoocon 2013大会上的演讲,大佬重要的观点是:
不要让OS内核执行所有繁重的任务:将数据包处理、内存管理、处理器调度等任务从内核转移到应用程序高效地完成,让诸如Linux这样的OS只处理控制层,数据层完全交给应用程序来处理。
确实也是如此,难道你不觉得Linux内核做了太多不该自己做的事情了吗?
近几年出现的DPDK、PFRING、NETMAP等技术也是类似的思想,现在流行的协处理器+CPU的架构也是这样的:
前面提到的C10K和C10M问题都是围绕着提升服务器并发能力展开的,但是难免要问:服务器最大的并发上限是多少?
做过通信的盆友们一定听过五元组这个概念,一个五元组可以唯一标记一个网络连接,所以要理解和分析最大并发数,就必须理解五元组:
这样的话,就可以基本认为:理论最大并发数 = 服务端唯一五元组数。
那么对于服务器来说,服务端唯一五元组数最大是多少呢?
有人说是65535,显然不是,但是之所以会有这类答案是因为当前Linux的端口号是2字节大小的short类型,总计2^16个端口,除去一些系统占用的端口,可用端口确实只剩下64000多了。
对于服务端本身来说,DestPort数量确实有限,假定有多张网卡,每个网卡绑定多个IP,服务端的Port端口数和IP数的组合类型也是有限的。
对于客户端来说,本身的端口和IP也是一样有限的,虽然这是个组合问题,但是数量还是有限的:
看了前面的端口&IP的组合数计算,好像并发数并不会特别大。
错了,是真的会很大。
分析一下,前面的计算都是针对单个服务器或者客户端的,但是实际上每个服务器会应对全网的所有客户端,那么从服务端看,源IP和源Port的数量是非常大的。
理论上服务端可以接受的客户端IP是2^32(按照IPv4计算),端口数是2^16,目前端口号仍然是16bit的,所有这个理论最大值是2^48,果然很大!
天下没有免费的午餐。
每一条连接都是要消耗系统资源的,所以实际中可能会设置最大并发数来保证服务器的安全和稳定,所以这个理论最大并发数是不可能达到的。
实际中并发数和业务是直接相关的,像Redis这种内存型的服务端并发十几万都是没问题的,大部分来讲几十/几百/几千/几万等是存在的。
理解了服务器的最大并发数是2^48,那么客户端最多可以连接多少服务器呢?
对于客户端来说,当然可以借助于多网卡多IP来增加连接能力,我们仍然假定客户端只有1张网卡1个IP,由于端口数的限制到2^16,再去掉系统占用的端口,剩下可用的差不多64000。
也就是说,客户端虽然可以连接任意的目的IP和目的端口,但是客户端自身端口是有限的,所以客户端的理论最大连接数是2^16,含系统占用端口。
解决前面的两个问题之后,来看另外一个问题:
一个公网出口NAT服务设备最多可同时支持多少内网IP并发访问外网服务?
毕竟公网IP都是有限并且要花钱的,我们大部分机器都是在局域网中结合NAT来进行外网访问的,所以这个场景还是很熟悉的。
来看下内网机器访问外网时的IP&端口替换和映射还原的过程,就明白了:
因为这时的客户端是NAT设备,所以NAT环境下最多支持65535个并发访问外网。
本文通过一道面试题切入,先描述了C10K和C10M问题,进而详细说明了客户端的最大访问数和服务端的最大并发数计算和原理,最后描述了NAT场景下的访问并发数。
虽然理论服务端并发数非常大,但是我们也没有必要觉得并发数高就厉害,服务复杂程度不一样,切忌唯并发数来判断业务和开发者水平。
试想echo服务和订单交易服务显然是不一样的,我们应该做的是在服务稳定和高可用的前提下去从缓存/网络/数据库等多个角度来优化提高性能。
最后感谢各位老铁的倾情阅读。
本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/HmIpCE8h1zE-v9cWGIrtQw
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。