就拿淘宝来说说 。
先说你看到的页面上 , 最重要的几个:
【推荐商品】——要根据用户之前的记录和与好友的关系来生成. 另外就是根据用户的信息和行为,要做机器学习和数据挖掘,从而来挑出最匹配的广告.这也是比较花人力的事情.
【搜索商品】——这个功能 , 如果你有几千条商品 , 完全可以用select * from tableXX where title like %XX%这样的操作来搞定 。但是——当你有10000000000(一百亿)条商品的时候 , 任何一个数据库都无法存放了 , 请问你怎么搜索?这里需要用到分布式的数据存储方案 , 另外这个搜索也不可能直接从数据库里来取数据 , 必然要用到搜索引擎(简单来说搜索引擎更快) 。好 , 能搜出商品了 , 是否大功告成可以啵一个了呢?早着呢 , 谁家的商品出现在第一页?这里需要用到巨复杂的排序算法 。要是再根据你的购买行为做一些个性化的推荐——这够一帮牛叉的算法工程师奋斗终生了 。
【商品详情】——就是搜索完毕 , 看到你感兴趣的 , 点击查看商品的页面 , 这个页面有商品的属性、详细描述、评价、卖家信息等等 , 这个页面的每天展示次数在50亿以上 , 同样的道理 , 如果你做一个网站每天有10个人访问 , 你丝毫感觉不到服务器的压力 , 但是50亿 , 要解决的问题就多了去了 。首先 , 这些请求不能直接压到数据库上 , 任何单机或分布式的数据库 , 承受30亿每天的压力 , 都将崩溃到完全没有幸福感 , 这种情况下要用到的技术就是大规模的分布式缓存 , 所有的卖家信息、评价信息、商品描述都是从缓存里面来取到的 , 甚至更加极致的一点“商品的浏览量”这个信息 , 每打开页面一次都要刷新 , 你猜能够从缓存里面来取吗?淘宝做到了 , 整个商品的详情都在缓存里面 。
【商品图片】——一个商品有5个图片 , 商品描述里面有更多图片 , 你猜淘宝有多少张图片要存储?100亿以上 。这么多图片要是在你的硬盘里面 , 你怎么去查找其中的一张?要是你的同学想拷贝你的图片 , 你需要他准备多少块硬盘?你需要配置多少大的带宽?你们的网卡是否能够承受?你需要多长时间拷贝给他?这样的规模 , 很不幸市面上已经没有任何商业的解决方案 , 最终我们必须自己来开发一套存储系统 , 如果你听说过google的GFS , 我们跟他类似 , 叫TFS 。顺便说一下 , 腾讯也有这样的一套 , 也叫TFS 。
【广告系统】——淘宝上有很多广告 , 什么 , 你不知道?那说明我们的广告做的还不错 , 居然很多人不认为它是广告 , 卖家怎么出价去买淘宝的广告位?广告怎么展示?怎么查看广告效果?这又是一套算法精奇的系统 。
【BOSS系统】——淘宝的工作人员怎么去管理这么庞大的一个系统 , 例如某时刻突然宣布某位作家的作品全部从淘宝消失 , 从数据库到搜索引擎到广告系统 , 里面的相关数据在几分钟内全部消失 , 这又需要一个牛叉的后台支撑系统 。
【运维体系】——支持这么庞大的一个网站 , 你猜需要多少台服务器?几千台?那是零头 。这么多服务器 , 上面部署什么操作系统 , 操作系统的内核能否优化?JAVA虚拟机能否优化?通信模块有没有榨取性能的空间?软件怎么部署上去?出了问题怎么回滚?你装过操作系统吧 , 优化过吧 , 被360坑过没 , 崩溃过没?这里面又有很多门道 。
不再多写了 , 除了上面提到的这些 , 还有很多很多需要做的技术 , 当然并不是这些东西有多么高不可攀 , 任何复杂的庞大的东西都是从小到大做起来的 , 里面需要牛叉到不行的大犇 , 也需要充满好奇心的菜鸟 , 最后这一句 , 你当我是别有用心好了 。
另外树大招风,你要一个很强的安全小组来保证网站在受攻击的时候能防御好,还有要防止垃圾信息和恶心广告或者程序的散播. 另外还有为了全球化而带来的多语言问题.
推荐阅读
- 为什么Go语言的自定义error有时候会内存溢出
- 天生发质不好怎么办
- 肝功能阳性是什么意思
- 茶与武侠
- 茶与红尘
- 护发素为什么不能抹头皮 护发素不能涂头皮么
- 孕妇梦见黄瓜藤上结了很多黄瓜 女人梦见黄瓜藤上结了很多黄瓜
- 武汉85度C闭店了吗,85度c蛋糕店为什么越来越少了
- 煮熟的百合为什么会苦,百合苦味有毒吗
- 为什么感冒老想睡觉还晕,感冒多喝水不吃药能好吗