关于摩拜预约倒计时猜想

一个关于客户端和服务端时间同步问题引出的小猜想。特记录如下:

由于每天都在使用摩拜,每次预约之后不得不想那个倒计时。摩拜猿们是如何同步客户端和服务器端的时间的。

基于每次的体验,我猜想应该没有做任何同步处理。因为,每次我预约单车的时候,总想不足1min的时候,取消预约再次预约。然而真实情况是,当我取消预约再次预约的时候,竟然提示已被别人预约。心中一万只cnm从脑海中飘过。。。

现在我们梳理一下整个流程。

当用户点击预约的时候,预约的请求发送到服务端,此刻服务端不免也在处理着数以万计其他用户的请求,处理到你这个请求也许已经过去数秒。等服务端处理完请求,响应数据返回给客户端。如果再把网络延迟等因素算上,这一来一回时间误差也不会太小。

所以不论是点击预约的时候就开启倒计时(乐观模式,期望每次都能预约上,好像不太现实,用户体验极差,倒计时了以为预约成功了,谁成想服务器返回的数据告诉客户端不好意思已经被其他人抢先了,把倒计时取消了。这种模式我个人还是挺喜欢的,谁也不知道结果是什么。),还是等服务器返回数据的时候再进行倒计时(悲观模式,总是要等服务器返回数据在进行下一步操作),都会存在一定的倒计时误差。

对于乐观模式和悲观模式大部分应用都是采取折中的办法,用户点击之后,立马响应,出现一个转的圈圈。等服务端响应结果再给相应的页面展示

但是有一点是值得肯定得,为了用户体验好,不能出现客户端倒计时到了,服务端的时间还没结束。导致用户再次预约的时候提示已被预约了(其实还是那个用户预约的,只是服务端时间没到而已)。这种情况也有可能会出现,谁知道呢。

所以我猜想服务端倒计时绝对不可能和客户端一样,一般都会少一点。可能有的人就会想了,竟然服务端时间有可能比客户端时间先到了,那不是别人就可以预约了。实际真会发生这样的事情。今天早上还和讨论这个事情。他预约的时间不足1min了,我让他重新预约一下,他说没事,那个秒数足够走到车那,尴尬的事情出现了,车子并没有亮蓝灯(这里有人可能会说是不是灯坏了,好吧,这个我服。)。也就是说服务端的时间已经到了,客户端还没到。如果这个时间段正好有人预约,就是真的打脸了。其实这种体验也是不太好,明明客户端还有时间,你就可以让别人预约了。

再次声明以上仅是个人猜想。关于这个客户端和服务端时间同步问题,还有待解决。。。

posted @ 2017-08-16 13:25  呆小田  阅读(131)  评论(0编辑  收藏  举报