小弟很菜,只求轻喷……
12306这个网站的名称近年已经压过了阿理、腾讯这些互联网大佬们的风采了。虽然是它的侧陋之气,但是也在一定程度上说明大家对它的关注程序以及其性能对老百姓的影响程序。
说起互联网的“抢”,我第一次接触是在抢小米的时候,我自己用的是小米1s,但是,我没经历“抢”,当时运气好的原因。但是,后来帮同事们”抢“的时候 ,就出现问题了,服务器无响应,或者如近来小米直接给了你一个不没有”抢“功能的愚弄大家的页面,也就是,让你等待,等待完了可以点了,点了之后还是这个等待,debug了一下,发现,根本就没有网络传输,呵呵了~~。当然,说上面小米的事情,只是在说“抢”东西的时候卡,是互联网之常情。
前段时间也看见一位前辈写的12306的复杂的无奈的架构,作为一名小菜,我不和大家讨论分布负载,内存查询这些牛逼的东西,据说,这一次12306也请来了阿理等知名公司的技术团队做支持,说明,在提高性能上已经发挥到一定程度了。
但是!为什么用户还不满意呢?为什么还是怨声载道呢?这种程度的怨声载道历史上从来出现过,就连当年的vista,大家也是说没有xp好用而已。其它的第三方软件或者系统就更不用说了。归根到底,这种怨声载道的情况,按照剧情是不应该发生的!说白了,还是12306没有做好。
那么12306哪些地方没做好呢?“小雨们”请不要骂我,我也是程序员,深知你们的不易!但是,确实是没有做好,准确的说,是UI没有做好。一个好的UI设计师,能帮助程序弥盖住各种bug,各种不合理情况,当然,也能帮助机器弥盖各种性能上的不足。以前老的windows开机是光标在那里一直闪,等待系统加载完成后进入系统,用户在等待的时候总是异常的恼火与不爽,现在,看,都改用动画了,现在还有哪个系统开机的时候不是显示动画呢?另外一个,就是进度条的发明,没有进度条,你却让用户干等,多数情况下,会受到用户的吐槽,甚至用户中途out,比如,实在不想等了,直接强制关机重开,实在不想等了,按f5,实在不想等了,终止进程。
下面说理想的解决方法。我高中那会儿,应该是在09年之前,wow异常火爆,当时wow的服务器也承载不了这么多人,而代理商直接了当的戳中要害——排队!排队就是今天的主题!那个时候,也没听谁说wow的服务器垃圾或者wow垃圾,大家排队的时候,不用别人提醒,都能理解服务器的承载量是有限的。what?他们可以理解wow,为什么就不理了成千上万乃至上亿的瞬间访问量的12306呢?差别在于,一个告诉他们,前面还有多少人是否继续排队——实时参与,而另一个,则是让他们的浏览器卡掉——不知死活!
相信大家看过之前那位前辈所讲的12306的原理的时候,也应该可以理解,12306花了大把心思来加快那条生产线的生产速度,但是,如果他们真的动用了阿理等技术团队,那么只能说是硬件瓶颈了,因为,12306总不能为了几个假期的高峰,自己搞个大型的计算中心啊,阿理可以给他技术支持,总不会把自己几千台服务器给他吧。难道无解了?怎么可能无解,人类的世界从来就没有这样的剧情!
速度提到了极限还无法满足用户的原因在于,12306非要把用户塞到生产线中!如果之前那位前辈说的没错,用户下单了之后,服务器要查询各种数据库的表,进行各种操作,其复杂性,独立性,互斥性,无一不影响着其它用户,无一不影响着整个服务器的业务流程。重要的是,你把用户绑在这个里面了,他们死不如死啊!
现在不管是ajax还是websocket或者是第三方flash等插件,都满足了s2b的信息推送!
费话不多说,原理讲得多了都是扯淡。
话说,我希望我下一次抢票的时候,会出现一个窗口,告诉我我前面已经有多少人在排队,而且那个数据一直在减少(每处理一个,给成千上万的人发通知不现实,可以在距离我越近的时候,刷新的速度越快,比如我前面还有10000人排队,还剩下10020张票,我就每隔3秒刷新一次,如果还剩下10人,那么我就500毫秒刷 一次),当然,说我前面有10000人排队,我还真不信!这个时候,处理票务的服务器们要做的事情恰好相反,以前是越快越好,而现在,则是不能太快,不然,2秒内我前面10000人就被处理完了,我还没收到通知,然后票丢了……。
总的来说,强制排队,每个人给一个排队超时时间,时间过了,服务器就不等你了(你在车站买票的时候睡着了,叫不醒了,后面人还站着干等么?),处理下一个,一旦排队完成,轮到我了,我的定单便会被处理,完成 之后 ,提示我成功。而服务器要处理的用户一直在其能力范围内。这样,直接把挤死人的一分钟变成了十分钟,一个小时,五个小时。而且,用户开着浏览器,排队排个几分钟,哪怕是一个小时,能一直看见自己前面还有多少人,后面还有多少人,还剩下多少张票,就相当于花钱雇了人去车站帮自己排队买票了,都这样了,幸福感 能不上升么?即使自己没抢到,也不会多说什么 ,毕竟你前面那么多人排队呢。
再来说对于队列的管理,不读数据库,不干吗的,直接就入队了,学会数据结构的人应该都明白,这性能有多快,而队列管理服务器的后端,也就是处理票务的服务器,慢悠悠地从队列里面取走人进行处理,多舒服啊~~

转载于:https://www.cnblogs.com/ensleep/p/3532728.html

个人认为12306解决危机的方法相关推荐

  1. 解决overfitting的方法

    解决overfitting的方法 Dropout, regularization, batch normalizatin. 但是要注意dropout只在训练的时候用,让一部分神经元随机失活. Batc ...

  2. 帝国cms后台上传大视频上传m3u8批量上传一次多个的解决思路和方法

    今天我们要解决的问题是,大视频文件上传以及切片m3u8文件的上传.上面一节内容,我们已经整体描述了视频类网站的解决思路和方法 .这节我们将分块来讲.假设的前提条件是,我们本地准备了一些视频原始素材,比 ...

  3. TIME_WAIT太多解决思路和方法

    TIME_WAIT太多解决思路和方法 参考文章: (1)TIME_WAIT太多解决思路和方法 (2)https://www.cnblogs.com/gao88/p/12129275.html 备忘一下 ...

  4. Hash算法解决冲突的方法

    Hash算法解决冲突的方法一般有以下几种常用的解决方法 1, 开放定址法: 所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 公式为 ...

  5. 装箱问题c语言函数,C语言基于贪心算法解决装箱问题的方法

    本文实例讲述了C语言基于贪心算法解决装箱问题的方法.分享给大家供大家参考,具体如下: 问题描述: 有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于箱子容量),要求将物品全部装入箱子中 ...

  6. 解决乱码的方法(转)

    出现乱码怎么办,解决乱码的方法一,出现乱码的原因分析 1,保存文件时候,文件有自己的文件编码,就是汉字,或者其他国语言,以什么编码来存储 2,输出的时候,要给内容指定编码,如以网页的形势输入时< ...

  7. 内存完整性已关闭,你的设备可能易受攻击已解决之处理方法

    最近有用户在打开安全中心内存完整性的时候提示内存完整性已关闭,你的设备可能易受攻击,这是有些驱动的兼容问题确实会导致内存完整性不能开启,那么该怎么解决呢?下面来看看解决方法吧!内存完整性是 Windo ...

  8. 抖音域名防封,抖音网址免拦截提示,抖音网站防红,域名报毒解决处理生成方法

    抖音的安全机制大家都知道,很复杂也很严格,笔者逆向分析安卓和苹果的抖音app,发现很多域名拦截处理方法很特殊,这里总结了一些常见的处理解决办法.抖音整个的安全机制系统来源于https://link.w ...

  9. Think Pad笔记本分区解决思路及方法

    Think pad笔记本分区解决思路及方法       近日好友拿着新买的Thinkpad X300过来找我,说这个笔记本只有一个分区,所有的东西不得放在C盘,希望再多分出几个分区.抱怨原先在wind ...

最新文章

  1. 内存都没了,还能运行程序?
  2. ubuntu install node npm bower
  3. 密钥交换算法 - Java加密与安全
  4. PyTorch 1.0 中文官方教程:使用 PyTorch 进行图像风格转换
  5. 轻松矿工抽水多少_欧冠 皇马vs顿涅茨克矿工 矿工主力缺席 皇马主场霸气狂飙...
  6. SQL Server 2005 无法连接到服务器,error:26
  7. jquery中ajax请求分类
  8. java timer 返回值,如何让计时器返回java时间
  9. 如何判断单链表里面是否有环【转载】
  10. 流水灯及注释c语言,流水灯 - 单片机教程 - C语言网
  11. Vue设置全局loading(加载动画)功能:
  12. 简单html和css静态网页制作
  13. 【脱壳-寻找OEP】通过堆栈平衡法找到OEP(ESP定律)
  14. jwplayer播放器
  15. hadoop的map和reduce
  16. Java项目论文+PPT+源码等]S2SH+mysql的报刊订阅系统
  17. python自然语言分析_Python自然语言用金庸的武侠小说做分析和处理
  18. 微型计算机的使用寿命,PC产品的MTBF和寿命:用户怎么去选择。
  19. 使用汉明距离、LAB色彩空间相似性来衡量图片相似性
  20. linux 查看硬盘使用率

热门文章

  1. 中望软件ZW3D,数码大方CAXA实体设计,华云三维CrownCAD,建议开设 春/夏/秋/冬四季CAD学校,助力软件普及
  2. 使用计算机打印汉字文档是汉字答案,天大2019年秋季考试《计算机应用基础》在线考核试题【满分答案】...
  3. 产业洞察 |关于数字化拐点,听听CIO怎么说
  4. 三年级下册计算机知识点,苏教版三年级信息技术下册知识点.doc
  5. 解决new Date(str) 时Date 变成 NaN
  6. htable recreate
  7. 【软件工程专业】被撤销!包含上海交通大学/西安交通大学/北京师范大学等学校!...
  8. 强化学习 (Reinforcement Learning) 基础及论文资料汇总
  9. 计算机组装安装与维护作业,计算机组装和维护作业.doc
  10. 2.4G和5GWiFi的区别