问题

为什么部分外行人看起来不太复杂的网站,比如Facebook,需要大量顶尖高手来开发?

回答
您这个问题触及到了软件开发的“冰山效应”,即我们看到的 website(比如 Facebook)只是最终呈现给用户的“冰山一角”,而支撑起这个“冰山”的庞大、复杂且精密的水下结构,才是需要大量顶尖高手来开发的真正原因。

让我们来详细剖析一下,为什么一个看起来“不太复杂”的网站,例如 Facebook,需要如此众多的顶尖人才:

1. 海量用户与巨大流量:

用户基数: Facebook 拥有数十亿的月活跃用户。想象一下,同时有数亿人在线使用,这是一个多么庞大的数字。
请求量: 每个用户在网站上的每一个操作(刷新页面、点赞、评论、发送消息、上传图片等)都会产生一个或多个服务器请求。这意味着 Facebook 的服务器需要每秒处理数以亿计甚至更多的请求。
高并发处理: 顶尖的软件工程师需要设计和实现能够处理如此高并发请求的系统。这涉及到负载均衡、请求分发、异步处理、缓存策略等一系列复杂技术。如果设计不当,服务器会瞬间过载,导致网站崩溃。
低延迟要求: 用户期望网页能快速加载和响应。即使是微小的延迟,在海量用户基数下也会累积成巨大的用户体验损失。因此,优化每一个网络请求、数据库查询、渲染过程的效率至关重要。

2. 复杂的功能集合与持续迭代:

不仅仅是社交: Facebook 已经远远不止是一个简单的社交网络。它集成了消息(Messenger)、视频(Facebook Watch)、市场(Marketplace)、游戏、直播、广告平台、新闻资讯、群组、活动等等无数功能。
功能间的深度耦合与解耦: 随着功能的增加,各个模块之间的关系变得越来越复杂。顶尖工程师需要巧妙地设计架构,保证新功能的加入不会破坏现有功能,同时又能高效地与其他功能协同工作。这涉及到微服务架构、API设计、领域驱动设计等高级概念。
快速迭代与创新: 科技行业竞争激烈,Facebook 需要不断推出新功能、改进现有功能、修复bug,以保持用户活跃度和市场竞争力。这种快速迭代要求开发流程高度自动化、可维护性强、并且能够快速响应变化。顶尖人才擅长在快速变化的环境中保持代码质量和系统稳定性。

3. 数据管理与分析的挑战:

海量数据存储: Facebook 每天产生和存储的数据量是天文数字,包括用户发布的文字、图片、视频、关系网络、行为日志等等。
高效的数据检索与查询: 如何在如此庞大的数据集中快速地找到用户需要的信息(例如,搜索好友、显示新闻feed)是巨大的挑战。这需要专业的数据库工程师、数据仓库工程师和分布式系统专家。
实时数据处理: 很多功能需要实时处理数据,例如通知、实时聊天、新闻feed更新。这需要强大的流处理技术(如 Kafka, Spark Streaming)和内存计算技术。
数据分析与机器学习: Facebook 依赖大量数据分析来了解用户行为、优化推荐算法、检测垃圾信息、进行广告定位等。这需要数据科学家、机器学习工程师,他们不仅要懂算法,还要能将其高效地部署到生产环境中。

4. 用户体验与界面设计的极致追求:

前端的复杂性: 虽然 Facebook 的界面看起来简洁,但背后是极其复杂的前端工程。要实现流畅的动画、响应式布局(在各种设备上都能良好显示)、高效的页面渲染、复杂的交互逻辑,都需要顶尖的前端工程师。
性能优化: 即使是前端代码,也需要进行极致的性能优化,比如代码分割、懒加载、虚拟化滚动等,以确保用户体验的流畅性。
可访问性: 要确保残障人士也能正常使用网站,需要遵循严格的可访问性标准,这同样需要专业的知识和细致的实现。

5. 系统稳定性、安全性和可靠性:

高可用性: Facebook 需要 24/7 不间断运行。任何宕机都意味着巨大的经济损失和用户信任的丧失。顶尖的系统工程师负责设计和维护高可用、容错性强的系统架构。
安全性: Facebook 存储着用户大量的个人信息,因此安全性是重中之重。顶尖的安全工程师负责抵御黑客攻击、防止数据泄露、保护用户隐私。这涉及到密码学、网络安全、应用安全等多个领域。
大规模分布式系统的挑战: Facebook 的基础设施是一个由成千上万台服务器组成的庞大分布式系统。管理、监控、部署和维护这样的系统本身就是一项极其复杂的工程,需要经验丰富的分布式系统工程师和运维专家。

6. 内部工具和平台的构建:

开发效率工具: 为了提高数千名开发者的效率,Facebook 需要开发和维护大量的内部开发工具、CI/CD(持续集成/持续部署)流水线、代码审查系统、自动化测试框架等。这些工具的质量直接影响了整个开发团队的生产力。
监控与日志系统: 如何实时监控系统状态、收集和分析海量日志以快速定位问题,都需要专门的系统来支撑。

为什么需要“顶尖高手”?

解决复杂问题: 上述提到的任何一个方面都可能是一个复杂的科学或工程问题。解决这些问题需要深入的理论知识、丰富的实践经验和出色的创造力。
性能要求: 在处理海量数据和高并发请求时,任何微小的性能瓶颈都会被放大。顶尖工程师能够识别并解决这些瓶颈,实现极致的性能。
可扩展性: 系统需要能够随着用户和数据量的增长而轻松扩展,这要求在设计之初就考虑周全。
可维护性与可读性: 在一个庞大的代码库中,保持代码的可读性和可维护性至关重要,以便团队成员能够协作开发,并能快速地进行修改和升级。
创新与前沿技术: Facebook 经常会探索和引入最新的技术(如新的编程语言、数据库技术、AI算法),这需要顶尖人才来评估、学习和应用。

总结来说, Facebook 表面上的“不太复杂”只是一个设计精良的用户界面和交互体验。而支撑起这一体验的,是一个庞大、复杂、高并发、海量数据驱动的分布式系统。开发和维护这样一个系统,需要跨越多个技术领域(后端、前端、数据库、分布式系统、网络、安全、数据科学、机器学习、运维等)的顶尖专家,他们需要协作解决最棘手的工程挑战,以确保网站的稳定、高效、安全和持续创新。这就像建造一座摩天大楼,外表看起来只是钢筋水泥和玻璃,但其背后是无数工程师、建筑师、材料专家的智慧和辛劳。

网友意见

user avatar

转载下

@陈萌萌

之前的答案:

我有 20 个整数,一把全装进内存,调用个 sort,完事了。
我有 2GB 那么多的整数,一把全装进内存……恩恩,如果机器不那么破,勉强也完事吧。
我有 20GB 那么多的整数,对,往你家 PC 里多插几条 8GB 的内存条试试?
那我现在有 200GB 那么多的整数……看你丫的怎么装内存,哈哈哈哈哈哈!
吓尿了吧!?写外排序?你写啊!It's ONLY the beginning!很多人可是连内存里的快排都写不出的哦~

好,现在有 200GB 的整数,排个序吧……呃,给你 10 台机器吧。
  1. 这 200GB 的整数,如何分配?
  2. 这 10 台机器之间如何通讯?没错,我不止坑了你去写外排序,我还得坑你去玩网络编程。
  3. 假设每一台机器上的数据都已经完全排好,如何多快好省地把各自排序好的结果 merge 在一起?
  4. 如何设计有效的 merge 逻辑减少 10 台机器之间的网络IO。
  5. 别以为 10 台机器不需要维护,万一在排序的时候其中一台机器挂了,怎么办?具体包括但不限于:他在挂之前有响应其他机器发给他的 request 吗?他在挂之前自身的任务完成了多少了?假设这台机器在挂的时候正在跟隔壁的机器互相传输数据肿么办?
  6. 谁去监听这 10 台机器的健康?或者是其他机器怎么知道某台机器挂了?如果是连接超时,怎么知道是网络阻塞还是目标机真的挂了?
  7. 如果某台机器真的挂了无法恢复,又或者由于隔壁的黄大牛要打魔兽了劫走了一台(集群升级,集群中的节点被临时撤走的事常有哦),如何把那台机器上那 20GB 的数据分给其余的 9 台?
如果数据不是 200GB,而是 2TB,2PB……

排序简单么?简单。

但是给很多数字排序就不简单了。

user avatar

就拿淘宝来说说,当作给新人一些科普。

先说你看到的页面上,最重要的几个:

【搜索商品】——这个功能,如果你有几千条商品,完全可以用select * from tableXX where title like %XX%这样的操作来搞定。但是——当你有10000000000(一百亿)条商品的时候,任何一个数据库都无法存放了,请问你怎么搜索?这里需要用到分布式的数据存储方案,另外这个搜索也不可能直接从数据库里来取数据,必然要用到搜索引擎(简单来说搜索引擎更快)。好,能搜出商品了,是否大功告成可以啵一个了呢?早着呢,谁家的商品出现在第一页?这里需要用到巨复杂的排序算法。要是再根据你的购买行为做一些个性化的推荐——这够一帮牛叉的算法工程师奋斗终生了。

【商品详情】——就是搜索完毕,看到你感兴趣的,点击查看商品的页面,这个页面有商品的属性、详细描述、评价、卖家信息等等,这个页面的每天展示次数在30亿以上,同样的道理,如果你做一个网站每天有10个人访问,你丝毫感觉不到服务器的压力,但是30亿,要解决的问题就多了去了。首先,这些请求不能直接压到数据库上,任何单机或分布式的数据库,承受30亿每天的压力,都将崩溃到完全没有幸福感,这种情况下要用到的技术就是大规模的分布式缓存,所有的卖家信息、评价信息、商品描述都是从缓存里面来取到的,甚至更加极致的一点“商品的浏览量”这个信息,每打开页面一次都要刷新,你猜能够从缓存里面来取吗?淘宝做到了,整个商品的详情都在缓存里面。

【商品图片】——一个商品有5个图片,商品描述里面有更多图片,你猜淘宝有多少张图片要存储?100亿以上。这么多图片要是在你的硬盘里面,你怎么去查找其中的一张?要是你的同学想拷贝你的图片,你需要他准备多少块硬盘?你需要配置多少大的带宽?你们的网卡是否能够承受?你需要多长时间拷贝给他?这样的规模,很不幸市面上已经没有任何商业的解决方案,最终我们必须自己来开发一套存储系统,如果你听说过google的GFS,我们跟他类似,叫TFS。顺便说一下,腾讯也有这样的一套,也叫TFS。

【广告系统】——淘宝上有很多广告,什么,你不知道?那说明我们的广告做的还不错,居然很多人不认为它是广告,卖家怎么出价去买淘宝的广告位?广告怎么展示?怎么查看广告效果?这又是一套算法精奇的系统。

【BOSS系统】——淘宝的工作人员怎么去管理这么庞大的一个系统,例如某时刻突然宣布某位作家的作品全部从淘宝消失,从数据库到搜索引擎到广告系统,里面的相关数据在几分钟内全部消失,这又需要一个牛叉的后台支撑系统。

【运维体系】——支持这么庞大的一个网站,你猜需要多少台服务器?几千台?那是零头。这么多服务器,上面部署什么操作系统,操作系统的内核能否优化?Java虚拟机能否优化?通信模块有没有榨取性能的空间?软件怎么部署上去?出了问题怎么回滚?你装过操作系统吧,优化过吧,被360坑过没,崩溃过没?这里面又有很多门道。

不再多写了,除了上面提到的这些,还有很多很多需要做的技术,当然并不是这些东西有多么高不可攀,任何复杂的庞大的东西都是从小到大做起来的,里面需要牛叉到不行的大犇,也需要充满好奇心的菜鸟,最后这一句,你当我是别有用心好了。

user avatar

因为你看到的,只是你看到的呀!

你没有从上帝的视角去看一下,在你点击某个按钮的一瞬间,全世界几千万人可能也在点同一个按钮!

Scale,scale!

Scale带来大量的直接开销,而这些直接的开销会带来大量的第二级的间接的开销,第二级的会带来第三级的……

比如:

你开始就一台服务器,做个小网站,会java或者python或者世界最XX语言就行,花了一天。

然后幸福的烦恼来了,流量上去了,你开始认真了,你就得想着,准备个热备份吧,那就有同步问题了,你那点Java知识就没啥用了,得找懂得数据库和服务器系统的人了。

然后流量继续增大,你发现服务器压力太大,得进行分布式了,搞个最简单的Master Slave模式,slave分流点读请求吧。这时候一般的服务器管理人员也不行了,得找一两个有分布式系统经验的人了。

然后流量继续增大,你发现简单的Master Slave也搞不定了,你需要更复杂的服务器集群,这时候你发现光管理这些服务的人就一大坨了,他们自己就能成立个部门叫Infrastructure。

这时你发现,你这么多机器,代码总不能让程序员自己一台台的登录上去部署吧,于是又得找专门的人,成立一个组,叫Deployment。

然后你发现,这么多机器,现在除了和外面的用户通信,自己之间也要互相通信,也要做AAA(Authentication,Authorization,Auditing),也要做很多和外面用户请求没啥关系的脏活累活,于是你把原来做网站的人分了两组,一组叫后端,一组叫前端。

然后你发现你的程序员太多了,需要好多内部开发的工具,比如搜代码的,比如搜办公室的,比如内部通讯的,于是你又得雇一大堆人做Internal Tools。

由于你完美的管理,网站流量继续增大,你发现一个服务器集群都不够,你得开专门的数据中心了,于是你又得买地,又得雇一帮运行维护人员维护数据中心。

然后你发现你的员工实在太多了,人的管理成了新的头痛,于是你需要专门的HR部门,财务部门,法务部门,于是你的员工变的更多了……

然后你发现你的员工实在太多太多了,你得雇一大批为这些干正事的员工服务的人员,比如清洁工,厨师,保安,shuttle司机,前台招待,托儿所老师……

……

……

最后你发现你做了一个按钮,似乎只用到了一个前端,

然后为了能让这个按钮同时被几千万人用,后面需要2个数据中心,2000台机器,200个后端,50个QA,100个Infra,100个Deployment,200个运维 ……

然后为了能让这些人正常上班,后面需要100个Internal tools,100个保安,50个HR,20个财务,20个法务,20个shuttle司机,50个厨师,100个清洁工,20个前台招待,10个托儿所老师 ……


说了这么多,

最后你,作为一个用户,所看到的,当然只有那个“看起来不太复杂”的按钮了……

类似的话题

  • 回答
    您这个问题触及到了软件开发的“冰山效应”,即我们看到的 website(比如 Facebook)只是最终呈现给用户的“冰山一角”,而支撑起这个“冰山”的庞大、复杂且精密的水下结构,才是需要大量顶尖高手来开发的真正原因。让我们来详细剖析一下,为什么一个看起来“不太复杂”的网站,例如 Facebook,.............
  • 回答
    这个问题很有意思,也确实是一个大家普遍会有的观察。为什么有些国家的人在疫情面前显得“放松”,而另一些国家(比如以色列和日本)则反应“强烈”,立刻采取严厉措施?这背后其实牵扯到非常复杂的原因,不能简单地归结为某些国民性,而是多方面因素交织作用的结果。我们得从几个关键维度来拆解这个问题:1. 对风险的感.............
  • 回答
    这确实是个挺有意思的问题,很多东北的朋友也纳闷,为什么外地人一提起东北菜,脑子里蹦出来的第一个词儿就是“东北乱炖”呢?其实这背后有几个挺值得琢磨的原因,咱们慢慢聊。首先,咱们得承认,作为土生土长的东北人,我们在日常生活中,无论是自家吃饭,还是在餐馆点菜,真的很少、几乎不会有人直接说“东北乱炖”。为什.............
  • 回答
    这确实是个很有意思的话题,在中国生活的外籍人士中,确实有一部分人对“老外”这个称呼不太舒服。这背后其实有着挺复杂的心理和文化原因,不是简单一句“被不被尊重”就能概括的。咱们就来掰扯掰扯,看看为什么会这样。首先,得承认“老外”这个词本身在中性到略带负面的光谱上摇摆,很大程度上取决于语境和说话者的语气。.............
  • 回答
    “在外国,中国人最爱欺负中国人”这句说法,虽然带着些许情绪化和绝对化的色彩,但在现实生活中确实能看到一些让大家产生这种感受的现象。要理解这句话,咱们得往深了扒一扒背后的原因,这可不是一两句话就能说清的事儿。首先,咱们得承认,无论是哪个国家,哪个族群,群体内部的矛盾和冲突都是存在的。 这是人性的一部分.............
  • 回答
    在探究为何部分国内女性对外国男性情有独钟这一现象时,我们不妨从多个维度进行剖析,尽量避免空泛的论调,而是深入到她们真实的心理和现实的考量之中。这并非一个简单的好恶问题,而是多种社会文化因素交织下的复杂选择。首先,从文化差异带来的新鲜感和吸引力来说。长期浸淫于中国本土文化背景下的女性,当面对来自不同文.............
  • 回答
    关于中国女性为何会青睐外国男性以及如何看待“凯乐其计划”的讨论,这是一个复杂且多面向的社会现象,背后交织着个人选择、文化交流、经济发展和社会观念的演变。要深入探讨这个问题,我们需要剥离掉一些过于简单化的标签,从更细致的角度去理解。首先,我们得承认,将“喜欢外国男性”这一现象笼统化,本身就可能忽略了个.............
  • 回答
    LOFTER平台聚集了大量创作者,其中不乏才华横溢、拥有忠实粉丝群体的“太太”。然而,在评论区,我们也时常能看到一些创作者对不同声音的敏感,甚至出现排斥批评或建议的现象。这背后的原因其实相当复杂,并非简单的“不能接受”就能概括,更多的是由多种因素交织而成。首先,情感投入与自我认同是核心驱动力。在LO.............
  • 回答
    在《绝地求生:大逃杀》这款风靡全球的游戏中,玩家群体庞大,自然也少不了各种各样的互动和文化碰撞。有时候,一些外国玩家对中国玩家表现出不友好的态度,这背后其实是一个挺复杂的问题,不能一概而论,也不能简单归咎于某个特定群体。如果非要细说,大概可以从几个方面来看:首先,游戏中的一些不良行为确实是导致误解和.............
  • 回答
    在中国部分高校,学生对课件资料的获取和传播受到限制,这背后其实有挺多层原因的,并非单一因素在起作用。我试着从几个角度来给您捋一捋。首先,知识产权和版权保护是核心问题。大学教授们花费大量时间和精力去研究、备课、制作课件。这些课件往往凝聚了他们的学术思想、研究成果,甚至可能包含未公开发表的理论或方法。从.............
  • 回答
    战火硝烟散尽,岁月留痕:中国抗日老兵晚景的沉重反思与他国参照曾几何时,硝烟弥漫的战场上,他们是抵御外侮的钢铁长城;如今,岁月流转,时光荏苒,许多曾经浴血奋战的抗日老兵,却在晚年面临着令人心酸的境遇。为何他们的晚景会如此凄凉?而放眼世界,其他国家的退伍老兵又是怎样的生活?这其中,既有历史遗留的复杂因素.............
  • 回答
    外国网友这么说,其实是抓住了一个挺有意思的切入点,也反映出他们从一个比较“抽离”和“理性”的角度去看待《三国演义》这本小说。他们认为“空城计”最“棒”或者说最“绝妙”的地方,恰恰在于它从来没有真正发生过,而更像是一场高明的心理战术和策略游戏。咱们一点点拆开来说,为什么他们会这么想,以及这其中有什么值.............
  • 回答
    这个问题触及到一些关于婚姻观念、文化差异和社会现实的复杂议题,值得我们深入探讨。如果一个男生对国内女生争取冠姓权持保留甚至反对的态度,他为什么不选择那些在婚姻中普遍接受改夫姓的外国女性呢?这背后并非简单的“选择题”,而是涉及到情感、生活习惯、家庭观念、社会融入以及个人对“理想伴侣”的定义等多个层面。.............
  • 回答
    .......
  • 回答
    近期,一些外国媒体聚焦中国2020年的经济增长数据,普遍指出该数字为2.3%,并将其描述为“40多年来的最低点”。要全面理解这一说法,我们需要从几个关键维度进行剖析:一、 数据本身的解读与背景首先,必须承认,2.3%的增长率确实是中国自改革开放以来公布的较低经济增长数字之一。但将此数据孤立地看待,而.............
  • 回答
    关于东航客机在榆林机场“跑道外接地”事件,根据媒体报道,我可以为你详细梳理一下发生的情况。事情发生在某日,东方航空一架执飞航班,从上海浦东出发,目的地是陕西榆林机场。这架飞机在准备降落榆林机场的过程中,出现了偏离正常跑道着陆的情况,也就是媒体所说的“跑道外接地”。从目前披露的信息来看,这次事件的发生.............
  • 回答
    那些在电脑前敲敲键盘、思考出各种方案的脑力劳动者们,似乎总是不太乐意把手头的工作“甩”出去一部分。你可能会好奇,明明有很多事情可以交给别人做,为什么他们好像总要把所有事情都“一个人扛”呢?这里面可不是因为他们“轴”或者不懂得“借力”,而是出于一系列非常现实、且与他们工作特性息息相关的考量。首先,我们.............
  • 回答
    这则关于头部主播涉嫌偷漏税的媒体报道,无疑牵动了社会各界的神经。薇娅案只是冰山一角,媒体透露“除薇娅外仍有部分头部主播偷漏税未被披露”的消息,这背后隐藏着几个值得我们深入关注的维度:一、 税务监管的常态化与深化: 信号意义: 这则消息最直接的信号是,税务部门对于网络直播行业,尤其是头部主播的税收.............
  • 回答
    .......
  • 回答
    这是一个复杂且普遍存在的现象,可以从多个层面来解读为什么部分年轻人在成年后,仍然倾向于将自己的失败归结于社会。这并非简单的推卸责任,而是多种心理、社会和经济因素交织作用的结果。一、 宏观社会因素的真实影响与年轻人的感知: 经济结构性问题: 就业市场萎缩与内卷加剧: 许多年轻人面临的是.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有