这篇文章很不错。特意转载过来,给一些外行人做科普!
就拿淘宝来说说,当作给新人一些科普。
先说你看到的页面上,最重要的几个:
【搜索商品】——这个功能,如果你有几千条商品,完全可以用select*fromtableXXwheretitlelike%XX%这样的操作来搞定。但是——当你有10000000000(一百亿)条商品的时候,任何一个数据库都无法存放了,请问你怎么搜索?这里需要用到分布式的数据存储方案,另外这个搜索也不可能直接从数据库里来取数据,必然要用到搜索引擎(简单来说搜索引擎更快)。好,能搜出商品了,是否大功告成可以啵一个了呢?早着呢,谁家的商品出现在第一页?这里需要用到巨复杂的排序算法。要是再根据你的购买行为做一些个性化的推荐——这够一帮牛叉的算法工程师奋斗终生了。
【商品详情】——就是搜索完毕,看到你感兴趣的,点击查看商品的页面,这个页面有商品的属性、详细描述、评价、卖家信息等等,这个页面的每天展示次数在30亿以上,同样的道理,如果你做一个网站每天有10个人访问,你丝毫感觉不到服务器的压力,但是30亿,要解决的问题就多了去了。首先,这些请求不能直接压到数据库上,任何单机或分布式的数据库,承受30亿每天的压力,都将崩溃到完全没有幸福感,这种情况下要用到的技术就是大规模的分布式缓存,所有的卖家信息、评价信息、商品描述都是从缓存里面来取到的,甚至更加极致的一点“商品的浏览量”这个信息,每打开页面一次都要刷新,你猜能够从缓存里面来取吗?淘宝做到了,整个商品的详情都在缓存里面。
【商品图片】——一个商品有5个图片,商品描述里面有更多图片,你猜淘宝有多少张图片要存储?100亿以上。这么多图片要是在你的硬盘里面,你怎么去查找其中的一张?要是你的同学想拷贝你的图片,你需要他准备多少块硬盘?你需要配置多少大的带宽?你们的网卡是否能够承受?你需要多长时间拷贝给他?这样的规模,很不幸市面上已经没有任何商业的解决方案,最终我们必须自己来开发一套存储系统,如果你听说过google的GFS,我们跟他类似,叫TFS。顺便说一下,腾讯也有这样的一套,也叫TFS。
【广告系统】——淘宝上有很多广告,什么,你不知道?那说明我们的广告做的还不错,居然很多人不认为它是广告,卖家怎么出价去买淘宝的广告位?广告怎么展示?怎么查看广告效果?这又是一套算法精奇的系统。
【BOSS系统】——淘宝的工作人员怎么去管理这么庞大的一个系统,例如某时刻突然宣布某位作家的作品全部从淘宝消失,从数据库到搜索引擎到广告系统,里面的相关数据在几分钟内全部消失,这又需要一个牛叉的后台支撑系统。
【运维体系】——支持这么庞大的一个网站,你猜需要多少台服务器?几千台?那是零头。这么多服务器,上面部署什么操作系统,操作系统的内核能否优化?Java虚拟机能否优化?通信模块有没有榨取性能的空间?软件怎么部署上去?出了问题怎么回滚?你装过操作系统吧,优化过吧,被360坑过没,崩溃过没?这里面又有很多门道。
不再多写了,除了上面提到的这些,还有很多很多需要做的技术,当然并不是这些东西有多么高不可攀,任何复杂的庞大的东西都是从小到大做起来的,里面需要牛叉到不行的大犇,也需要充满好奇心的菜鸟,最后这一句,你当我是别有用心好了。
分享到:
相关推荐
总的来说,这900多个Android开发小图标素材为开发者提供了丰富的选择,无论是在早期的概念设计阶段还是在应用的最终优化阶段,都能大大提升设计效率和应用质量。合理利用这些图标,可以使你的应用在众多应用中...
降低网站开发维护成本:由于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是微软...
降低网站开发维护成本:由于CMS系统在中国的发展还在起步阶段,很多企业或单位开发一个网站需要动用大量的财力物力,不单单找网站公司开发时需要耗费,后期维护升级也需要。PageAdmin的问世改变了传统的网站建设流程...
降低网站开发维护成本:由于CMS系统在中国的发展还在起步阶段,很多企业或单位开发一个网站需要动用大量的财力物力,不单单找网站公司开发时需要耗费,后期维护升级也需要。PageAdmin的问世改变了传统的网站建设流程...
在压缩包文件中,"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的数据处理能力很...
总的来说,精伦IDR210通用二次开发包V3.2.0为开发者提供了强大的工具,简化了身份证识别的开发过程,广泛适用于各种需要身份证验证的场合。通过深入学习和实践,开发者可以充分利用这个开发包,创造出更多高效、便捷...
这份"20个C#项目实战开发及项目全部源码"的资源集合为初学者和有经验的开发者提供了丰富的实践素材,让我们一起深入探讨这些项目背后的C#知识。 1. **基础语法和控制结构**:C#的基础包括变量、数据类型、运算符、...
鲁比(Sam Ruby),是一位杰出的软件开发者,他为Apache软件基金会下属的很多开源软件项目做出过重要的贡献,他主持的Atom web feed标准和广为使用的厂eedvalidatororg web service对web feeds的标准化起到了重要作用。...
他曾为早期的酷炫手机编写底层UI框架,并使用放大镜调试那些在当时看起来很大的屏幕(例如176x220像素)。自那时起,Jonathan Simon经历了智能手机时代之前的各种手机开发工作。本书内容涵盖了Android开发的多个方面...
对于初学者来说,它是一个很好的学习资源,可以帮助他们从零开始构建实际项目,了解不同行业的需求和特点,为将来针对特定行业开发软件打下坚实的基础。对于有经验的开发者,本书提供的案例和代码能够帮助他们快速...
网络安全开发包实现的都是某一种或某一类网络安全技术,都是经过很多网络安全研究和开发者的长期研究而形成的,人们的不断测试和使用使它们逐渐成熟起来,在实际应用中得到了深入推广。 网络安全开发包有很多种,...
"VS2008 C#开发WinCE系统程序开发详细步骤" 本文详细介绍了使用VS2008+SQLite开发WinCE系统下的PDA程序的开发步骤,涵盖了开发环境的配置、数据库的选择和连接、开发工具的选择等方面。 一、开发环境配置 开发...
总的来说,这个C#插件式框架开发完整Demo是一个全面的学习资源,涵盖了从基础的插件设计到复杂的插件管理和通信等多个方面,对于想要深入理解C#插件框架开发的开发者来说非常有价值。通过学习和研究这个Demo,开发者...
通过深入学习并实践这份教程,开发者能够熟练掌握在VC环境下利用MFC创建ActiveX控件的技能,这对于开发复杂的Windows应用程序或网页插件来说是非常有价值的。不过,随着Web技术的发展,现代浏览器逐渐放弃了对...
高手就是高手,很难得的资料