`

为什么很多看起来不是很复杂的网站比如 Facebook、淘宝,需要大量顶尖高手来开发?

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

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

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

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

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

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

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

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

相关推荐

    FaceBook插件开发入门教程

    "FaceBook插件开发入门教程" 本文将从Facebook插件开发的角度,讲解如何创建一个简单的Facebook插件,并介绍Facebook插件开发的基本概念和流程。 一、Facebook插件开发简介 Facebook插件开发是指在Facebook平台上...

    图书:Facebook应用开发

    这本关于Facebook应用开发的图书,旨在为开发者提供一个全面的指南,深入理解如何构建、优化以及发布在Facebook平台上的应用程序。Facebook的应用开发涵盖了多种技术和策略,包括社交图谱API的使用、OAuth认证流程、...

    facebook 开发api

    Facebook开发API是一个广泛的主题,尤其是当我们关注PHP版本的SDK时,它为开发者提供了与Facebook平台交互的工具。本文将深入探讨Facebook的开发环境、PHP SDK的使用、API接口的调用以及如何构建Facebook应用程序。 ...

    基于C#的Facebook开发包

    Facebook开发包,也称为Facebook SDK(Software Development Kit),是一组库和文档,为开发者提供了方便的接口来访问Facebook的开放平台服务。它简化了与Facebook API的交互过程,减少了开发者处理底层HTTP请求和...

    FaceBook基于Iphone的多个应用源码

    Iphone开发系列源码——FaceBook基于Iphone的多个应用源码Iphone开发系列源码——FaceBook基于Iphone的多个应用源码Iphone开发系列源码——FaceBook基于Iphone的多个应用源码Iphone开发系列源码——FaceBook基于...

    Facebook开发流程

    原Facebook员工王淮在业内做了关于Facebook产品的开发流程的分享和交流。在网络和杂志上都有资料,想必大家都已经看过了。 (原文载于《程序员》杂志2013年3期,未经允许不得转载。如需转载请联系market@csdn.net,...

    java web开发facebook项目

    【Java Web开发Facebook项目】是一个综合性的开发案例,它展示了如何使用Java技术和Web技术来构建一个与Facebook平台交互的应用。这个项目中,开发者利用了jQuery和Ajax这两种前端技术,提升了用户体验,实现了页面...

    Laravel开发-facebook

    别忘了替换 'your_app_id' 和 'your_app_secret' 为你的 Facebook 应用的 ID 和密钥,以及设置合适的回调地址。 接下来,我们创建一个 Facade(外观类)以便更方便地使用 Facebook SDK。在 `app/facades/Facebook....

    Laravel开发-facebook-message

    【Laravel开发与Facebook Messenger平台集成】 在现代Web开发中,Laravel作为一款流行的PHP框架,因其优雅的语法和强大的功能而备受青睐。本项目"laravel-development-facebook-message"聚焦于利用Laravel来构建与...

    FacebookApp开发教程

    ### Facebook应用程序开发教程知识点概述 #### 一、Facebook应用程序种类及架构 - **应用程序种类**: - **安装到Facebook的应用(Apps on Facebook)**:这类应用被设计为嵌入到Facebook页面框架(Canvas)中,...

    基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip

    基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料...

    Facebook大量数据处理 Scribe.zip

    为了有效应对这些挑战,Facebook开发了名为Scribe的系统,它是一个集中式的日志聚合服务,专门用于处理大规模分布式系统的数据流。Scribe的设计目标是提供简单、高效和可靠的方式来聚合来自多个节点的日志数据。 **...

    facebook api和facebook_jar包

    Facebook API和Facebook_JAR包是开发者用来与Facebook平台进行交互的重要工具,它们使得开发者能够创建应用程序,集成到Facebook生态系统中,实现数据交换、用户登录验证、发布内容等功能。Facebook API通常指的是...

    Facebook开发HDFS和HBase的新进展

    ### Facebook开发HDFS和HBase的新进展:深度解析与创新亮点 #### HDFS与HBase在Facebook的应用背景 Facebook作为全球领先的社交网络平台,每天处理着海量的数据交互,包括用户生成的内容、广告数据、社交图谱等。...

    Laravel开发-laravel-facebook

    在本文中,我们将深入探讨如何在Laravel框架中集成Facebook组件进行开发,主要基于提供的"Laravel开发-laravel-facebook"主题。Laravel是一个流行的开源PHP框架,以其优雅的语法和强大的功能而闻名。Facebook组件则...

    Laravel开发-facebooksdk

    在本文中,我们将深入探讨如何在 Laravel 框架中集成和使用 Facebook SDK。Laravel 是一个基于 PHP 的优雅、简洁且功能强大的Web应用框架,而Facebook SDK 则是 Facebook 提供的官方库,用于与 Facebook API 进行...

    Facebook广告sdk需要用到的v4的jar包

    Facebook广告SDK是为Android开发者设计的一个工具包,它允许开发者在他们的应用程序中集成Facebook的广告服务。这个SDK使得展示、管理和追踪广告变得简单,从而帮助开发者通过应用赚取收入或者推广自己的产品。在...

    在facebook开发网站流量的方法

    在Facebook开发网站流量的方法,是当今数字化营销领域中一个至关重要的课题。随着互联网技术的不断发展,社交媒体平台成为了连接用户与品牌的桥梁,而Facebook作为全球最大的社交网络之一,其庞大的用户基数为网站...

    facebook 手机开发icon资源包

    "Facebook 手机开发icon资源包"是一个专门为开发者或设计师准备的集合,包含了一系列与Facebook相关的图标,适用于iOS(iPhone)设备的开发。 这些图标通常包括应用图标、设置图标、通知图标、分享图标等多种类型,...

    Laravel开发-facebook-laravel

    接着,需要配置Facebook的App ID和App Secret,这可以在Facebook开发者平台上创建新的应用后获得。 **4. OAuth授权流程** 为了获取用户的Facebook信息,需要通过OAuth进行授权。Laravel可以通过创建一个控制器处理...

Global site tag (gtag.js) - Google Analytics