58和百姓网的技术学习
http://v.youku.com/v_show/id_XMzc4OTA4MDky.html 58使用mongdb
http://v.youku.com/v_show/id_XMzM4MDYwNTQw.html 赶集网。
http://v.youku.com/v_show/id_XMzQxNDk1MDYw.html 去哪儿网搜索
只有最适合的。没有最好的。
预算是1万个并发。假设当时来了10万个并发,导致网站打不开。怎么应对:
做一些队列。路由算法。存储领域做到扩展。存储领域难的问题是扩展方面。水平,均匀的分散到多个节点上去。节点冗余的必要性,容灾。
58:mysql在使用,mongdb也在使用。帖子(就是发布的信息)排序,放在数据库中是不能满足需求的。
之前用的mysql。
分库策略:按照用户id取模,取hash值进行切分。随机数的跳跃性较大,对数据库影响大。
一般是以时间为基准来进行分片。当时从安全性,可控性。还是考虑了传统的方案mysql。
帖子点击数:招聘,简历下载次数等。做成了一个通用性的mongdb存储。
要考虑可控性:为什么不用其他的nosql,偏偏选择mongdb?因为其他系统虽然了解,但是不会使用。
考虑过渡性:从以前的sql转换到mongdb不用能够平滑过渡。思考要做到线性扩展,比如加一个分片,需要手动去部署。
cdn为解决问题:网络传输会有损害,距离越远损害越大。有延迟。cdn是为减少网络延迟。
图片保存多份的问题,需要很大的数据存储量。他们为了解决这个问题,用户可以传递参数我们实时生成图片。java 和c++
http://www.infoq.com/cn/presentations/pxl-baixing-optimize-network-speed
百姓网:
在程序中放一段代码。记录每次sql查询所用的时间。如果超过预期,则保存下来,这样能够避免以后这种sql集中起来。在线上能够把问题解决掉。
选择机房:让用户来告诉我们哪个机房最好。监控用户下载一个文件用多久。自己写监控代码。使用onload事件。这种方式能够了解到,你这个机房,我在上海访问的时候下载多长时间,在北京访问的时候是多长时间。
监控一个用户下载文件所用的时间:在服务器记录一个页面初始化时的时间 然后再记录页面加载完毕时的时间 相减就行了。url地址中要有个随机数,这样避免用户第二次下载的时候cache住了。
多域名问题(城市),总共才10个人,不可能各个城市都去搭建机房难以维护,就比较麻烦。于是就用了两个机房,北京和上海各一个。把配置拷贝,一模一样的配置。主从结构。
北京服务器不能写,只能读。写代码的人就麻烦。统计数据问题。同步更新问题。
北京用刀片服务器,所以硬件上好,避免工程师跑到北京去来回跑维护。刀片服务器2万块钱(用三年)。
双机房问题,南北各一个机房。再给一次机会,会选择一个机房。