这篇文章很不错。特意转载过来,给一些外行人做科普!
就拿淘宝来说说,当作给新人一些科普。
先说你看到的页面上,最重要的几个:
【搜索商品】——这个功能,如果你有几千条商品,完全可以用select*fromtableXXwheretitlelike%XX%这样的操作来搞定。但是——当你有10000000000(一百亿)条商品的时候,任何一个数据库都无法存放了,请问你怎么搜索?这里需要用到分布式的数据存储方案,另外这个搜索也不可能直接从数据库里来取数据,必然要用到搜索引擎(简单来说搜索引擎更快)。好,能搜出商品了,是否大功告成可以啵一个了呢?早着呢,谁家的商品出现在第一页?这里需要用到巨复杂的排序算法。要是再根据你的购买行为做一些个性化的推荐——这够一帮牛叉的算法工程师奋斗终生了。
【商品详情】——就是搜索完毕,看到你感兴趣的,点击查看商品的页面,这个页面有商品的属性、详细描述、评价、卖家信息等等,这个页面的每天展示次数在30亿以上,同样的道理,如果你做一个网站每天有10个人访问,你丝毫感觉不到服务器的压力,但是30亿,要解决的问题就多了去了。首先,这些请求不能直接压到数据库上,任何单机或分布式的数据库,承受30亿每天的压力,都将崩溃到完全没有幸福感,这种情况下要用到的技术就是大规模的分布式缓存,所有的卖家信息、评价信息、商品描述都是从缓存里面来取到的,甚至更加极致的一点“商品的浏览量”这个信息,每打开页面一次都要刷新,你猜能够从缓存里面来取吗?淘宝做到了,整个商品的详情都在缓存里面。
【商品图片】——一个商品有5个图片,商品描述里面有更多图片,你猜淘宝有多少张图片要存储?100亿以上。这么多图片要是在你的硬盘里面,你怎么去查找其中的一张?要是你的同学想拷贝你的图片,你需要他准备多少块硬盘?你需要配置多少大的带宽?你们的网卡是否能够承受?你需要多长时间拷贝给他?这样的规模,很不幸市面上已经没有任何商业的解决方案,最终我们必须自己来开发一套存储系统,如果你听说过google的GFS,我们跟他类似,叫TFS。顺便说一下,腾讯也有这样的一套,也叫TFS。
【广告系统】——淘宝上有很多广告,什么,你不知道?那说明我们的广告做的还不错,居然很多人不认为它是广告,卖家怎么出价去买淘宝的广告位?广告怎么展示?怎么查看广告效果?这又是一套算法精奇的系统。
【BOSS系统】——淘宝的工作人员怎么去管理这么庞大的一个系统,例如某时刻突然宣布某位作家的作品全部从淘宝消失,从数据库到搜索引擎到广告系统,里面的相关数据在几分钟内全部消失,这又需要一个牛叉的后台支撑系统。
【运维体系】——支持这么庞大的一个网站,你猜需要多少台服务器?几千台?那是零头。这么多服务器,上面部署什么操作系统,操作系统的内核能否优化?Java虚拟机能否优化?通信模块有没有榨取性能的空间?软件怎么部署上去?出了问题怎么回滚?你装过操作系统吧,优化过吧,被360坑过没,崩溃过没?这里面又有很多门道。
不再多写了,除了上面提到的这些,还有很多很多需要做的技术,当然并不是这些东西有多么高不可攀,任何复杂的庞大的东西都是从小到大做起来的,里面需要牛叉到不行的大犇,也需要充满好奇心的菜鸟,最后这一句,你当我是别有用心好了。
分享到:
相关推荐
这本书籍《OpenCV.2经典书籍 很多实例 可以用做项目二次开发》显然是一本针对OpenCV 2版本的教程,包含了丰富的实例,适合于希望深入学习并实践OpenCV技术的开发者。 首先,OpenCV库提供了大量的函数和模块,包括...
降低网站开发维护成本:由于CMS系统在中国的发展还在起步阶段,很多企业或单位开发一个网站需要动用大量的财力物力,不单单找网站公司开发时需要耗费,后期维护升级也需要。PageAdmin的问世改变了传统的网站建设...
WPF开发教程.rar 目录 WPF基础入门 3 1. WPF基础之体系结构 3 2. WPF基础之XAML 9 3. WPF基础之基元素 23 4. WPF基础之属性系统 26 5. WPF基础之路由事件 33 6. WPF基础之布局系统 46 7. WPF基础之样式设置和模板化...
上位机软件的开发涉及到一系列复杂的编程技能,选择合适的编程语言和开发环境对于开发效率和软件质量都至关重要。C#作为一种由微软开发的面向对象的编程语言,已成为.NET平台上的主流语言。而Visual Studio是微软...
本书语言深入浅出,通俗易懂,通过大量具有典型性和实用价值的实例,以及形象的比喻,把复杂的问题和难懂的概念简单化,从多个方面引导读者进入Eclipse插件开发。 附书光盘内容为书中实例源代码及相关插件。 本书...
在压缩包文件中,"wwt83.exe"很可能是"打字高手8.3"的安装程序,用户可以通过运行这个文件来安装软件。而"打字高手8.3注册机.exe"则是对应的注册机程序,但使用这样的工具可能涉及法律风险,并且不利于软件产业的...
此外,对于复杂的应用场景,你可能需要使用到更多的BarTender API,比如批量打印、预览标签、保存为PDF等。 压缩包中的"BarTender二次开发示例"文件很可能包含了一个完整的C#项目,其中包括了上述步骤的代码示例,...
2. **Qt框架**:Qt4.7是用于图形用户界面(GUI)开发的跨平台库,QGIS大量依赖Qt构建其界面。开发者需要熟悉Qt的信号与槽机制、窗口和控件等概念,以便创建自定义UI组件。 3. **GDAL/OGR库**:QGIS的数据处理能力很...
对于初学者来说,它是一个很好的学习资源,可以帮助他们从零开始构建实际项目,了解不同行业的需求和特点,为将来针对特定行业开发软件打下坚实的基础。对于有经验的开发者,本书提供的案例和代码能够帮助他们快速...
这份"20个C#项目实战开发及项目全部源码"的资源集合为初学者和有经验的开发者提供了丰富的实践素材,让我们一起深入探讨这些项目背后的C#知识。 1. **基础语法和控制结构**:C#的基础包括变量、数据类型、运算符、...
网络安全开发包实现的都是某一种或某一类网络安全技术,都是经过很多网络安全研究和开发者的长期研究而形成的,人们的不断测试和使用使它们逐渐成熟起来,在实际应用中得到了深入推广。 网络安全开发包有很多种,...
C#多线程技术是.NET编程中一项高级且复杂的技术,它允许程序同时执行多个任务,可以有效地提高程序的响应速度和效率。C#多线程技术主要通过Threading命名空间下的类和接口来实现,它提供了丰富的工具来控制线程的...
【Java Web项目开发案例-博客网站】是一个基于SSH(Spring、Struts2和Hibernate)框架构建的实际应用示例,主要用于教授和实践Web开发技术。SSH是Java Web开发中常用的三大框架,它们各自负责不同的功能领域,协同...
本资源包含一本关于DirectX9.0和3D游戏开发的编程书籍的PDF版本以及配套的源码,对于初学者来说是一个很好的学习平台。 首先,我们要了解DirectX9.0的主要组成部分: 1. Direct3D:这是DirectX中的核心部分,用于...
《网页开发手记--实战详解》由叶青、孙亚南、孙泽军编著,笔者将网页制作技术粗略划分为前台浏览器端技术和后台服务器端技术。本书主要学习前台浏览器端技术,也就是静态页面制作技术。早期只需要使用HTML即可单独...
本书通过大量的交互案例和示例代码介绍了Three.js提供的各种API,让读者不需要了解很难编程的WebGL的底层细节及复杂的着色语言,只需大致了解JavaScript及HTML,就能轻松地在浏览器中创建二维和三维应用及图形。...
Java web 项目中所需要的常用jar包 很全面 是有一天做项目时发现缺少很多jar包 寻找这些jar包几乎花了我一下午的时间 为方便后来人 故寻找下载并整理了一些jar包 希望对读者有所帮助 因为下载包时消耗了我大量积分 ...
为什么不自己开发界面,要选择使用SkinBeauty产品? A: SkinBeauty是软件研发行业,提供给企业研发团队/个人在项目开发过程中使用的界面图形处理开发库。 负责实现产品界面的美化功能。 --...
提供的myTestDll说明.txt和myTestDll文件很可能是实际的示例代码或测试用例,对于初学者来说是很好的学习资源。 在实践中,使用DLL接口进行二次开发时,开发者需要注意以下几点: 1. 熟悉DLL的调用规则和函数参数,...