文章来自“科学大院”公众号
作者:于露
一年一度的双十一已经预热很久了,想必很多人最近都和我一样做了很多功课,决定要抢半价!比如下图中的“前4000名付尾款半价”,那岂不是相当于不到6折就买到了本来就已经是打折的商品了么?
图片来源:网络
然而,我从第一年就开始努力“秒杀”,到现在为止都没有成功过。起初我一直都没有怀疑过自己,直到今年,我知道了杨超越,还有信小呆。难道他们就是天选之人,拥有与众不同的身份和与生俱来的锦鲤运,而我只是芸芸众生中每天都很normal的你我他她它?
但幸运的是,我来到了国家授时中心这个拥有神秘力量的研究所。在这个研究所里,我寻找时间与空间的终极秘密。
我终于知道问题究竟出在了什么地方,那就是:时间不同步!!!
图片来源:视觉中国
获取时间的方式
当我还在上小学、诺基亚还是街机的时候(暴露年龄),已知的唯一对表途径就是早上准点的新闻联播。然而,上了高中还有时间看新闻联播的,都已经是别人学校的学生了。我们最多只能偷偷拿出诺xiao基ling亚tong,和班级里面的钟对一下。但是这个行为也被我们渐渐遗忘在了风中。当我上了大学,我就没再给手机对过表。
这是为什么?因为我们的网络建设逐步完善,生活中各种便携电子设备开始普遍采用更加先进的授时方式。
我们从手机上获取的时间为当地标准时间。以中国境内为例,手机上自动显示的时间是北京时间。我们还在用诺基亚的时候,时间是怎么来的?大部分都是用户手动设置,依靠手机内部的晶振来提供时间标准。但是这个时间标准的稳定性不高,经常会出现一天几秒的误差。
图片来源:视觉中国
还有一种方式是通过NTP服务(互联网服务)获得。NTP(Network Time Protocol)服务是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒)。
但是,最小只有几十毫秒的误差难道会让我秒杀失败吗?答案是:会的!这是为什么呢?就要从NTP的工作原理说起。
秒杀原理大解析
NTP协议的精确对时主要是在主从工作方式下实现的。NTP算法首先要根据服务器和客户端的往返报文来确定两地时钟的差值和报文在网络中传输的延迟。
举一个简单粗暴的例子。假如11月10号的深夜,你在珠峰上瑟瑟发抖准备抢半价,这个时候你和淘宝服务器的时差为10min,这个时候我们以淘宝的服务器的时间线为时间标准,并认为淘宝的服务器可以给我们提供网络授时服务。
我们的抢购过程可以分为以下5步,首先对图中本人亲自设计的抽象图标做一个说明:
图片来源:作者绘制
Step 1:我来刷新一下
我们在10号晚上的23:20开始紧张的刷手机,为双十一做最后的准备。当我点击一个宝贝后,我就触发了一次校准。消息由我的小鸽子送给淘宝的服务器。它需要5分钟的时间飞到那里,我们将5分钟的这段时间称为t1。我的手机和淘宝的时差为10分钟。最后小鸽子在23:25时(淘宝时间)到达。如下图所示:
图片来源:作者绘制
Step 2 接收回复并根据NTP调整
淘宝的服务器接收到了小鸽子的信息,迅速处理,于23:25让小鸽子把回信送给我。小鸽子比较调皮,在回来的过程中停了1分钟看风景(不可知的延迟),再加上10分钟的时差,到达时是我的手机的23:36:30(后面分析将忽略秒)。我们将5min+1min的这段时间称为t2,同时,根据收到的NTP回信对本地时间进行校准。方法为
图片来源:作者绘制
可以看到,此时我和淘宝服务器的时差变为了11分钟。这是因为路径不对称,且路径延迟很大造成的。如果我们往返都只需要1分钟的话,那么时差就会变为4分钟。大家可以自己计算。
现实生活中的时差不会这么大,所以校正的结果我们是很难察觉的。
Step 3 23:59狂点结算
等到23:59,狂点结算!如下图所示,小鸽子飞了5分钟,堵在双十一的路上排队用了2分钟。最后到达淘宝的时候是0:17(淘宝时间)。
图片来源:作者绘制
Step 4 收到回信&根据NTP再次调整
淘宝收到了我的消息,处理后发现已经没有名额,将这一结果返回给我。过程如下图所示。我的小鸽子飞了6分钟,到达时间为0:18:30(本地时间)。同时再次触发一次时间校准,校准后的时差为5分钟(忽略秒)。我们可以看到时差在逐渐减小,如果我们多进行几次通信,那么时差可能会越来越小。
图片来源:作者绘制
Step 5 抢购失败
此次模拟抢购宣告失败。
图片来源:作者绘制
秒杀不到 是有科学道理的……
我们从第3步就可以看出来,我第一次发送信息和淘宝第一次返回信息给我的路程时间是不同的,而我只是简单的做了相减取平均,这种补偿只有在网络较为通畅时和用户距授时网站较近时才比较有效。网络信息的发送的延迟区别,具体可以分为以下四种情况:
1.网络较为通畅时:我的小鸽子直线飞过去,按最短路径送达的原则,请求时间信息路径和发送时间信息路径才可能较为一致或相对对称,才能简单的除以2。
2.用户距授时网站较近时:就像我的小鸽子从我家飞到邻居家,信息沿途经过的网站较少,不受狂风暴雨、天敌等影响,甚至就在家门口,路径改变的空间较小,路径也易相对对称。
3.在网络拥挤时(双十一前几分钟怎么可能不拥挤):全世界的鸽子都往淘宝飞,进入淘宝需要排很久的队,无论在用户距授时网站远近(从哪起飞),都会造成请求时间信息路径和发送时间信息路径严重不一致、不对称和t1与t2的严重悬殊,更不能简单的除以2。
4.用户距授时网站较远时:即便用户近处的网络通畅,在大范围内网络系统中难免会有一些网站拥挤(突然遇上鸟群拉练),造成请求时间信息路径和发送时间信息路径不一致,不对称,因而导致t1与t2的不等。也会造成我们修正后的时间与淘宝不同步。
所以,就算我们离得近,网络环境好,让小鸽子坐火箭去抢前4000名,上文提到的那些不确定也会在路上等我。延迟可能会迟到,但从不会缺席。总而言之,是因为手机端、电脑端、服务器端的时间不同步,让我们抢不到半价商品。但是多刷新多同步总是没错的。
图片来源:网络
最后,祝大家都能买到想要的宝贝。同时要提高警惕(敲黑板,第二个重点!),双十一套路多,防闺蜜种草,防博主推荐,防花呗提额。实在不行可以问自己一个问题,如果让你在等额的现金和这个商品中二选一,你会犹豫不决的话,那么就不要买!!!
欢迎转发攒人品,双十一后债见。
参考文献
1.王瑞清. 嵌入式高精度 NTP 网络时间服务器研究与实现. 武汉: 华中科技大学, 2011.
2. 彭栋. 安全网络授时服务技术研究. 西安:国家授时中心,2018.
3.李德河. 精确计算网络时延的一种方法的讨论. 西安:国家授时中心,2007.
4.舒敬环. 网络授时简介及现网实现分析. 秦皇岛: 中国人民解放军 91404 部队, 2016
作者单位: 中国科学院国家授时中心
(文章首发于科学大院,转载请联系cas@cnic.cn)
领取专属 10元无门槛券
私享最新 技术干货