文档章节

客户端抢购活动的时间同步与倒计时设计

阿债
 阿债
发布于 2016/07/06 14:26
字数 488
阅读 260
收藏 3

今天公司产品的一个需求,要在手机App上准点进行活动,于是有了下面这些想法。

需求描述与约束

假设我们要在手机App上进行一个抢购小米手机的活动,参与的用户同时开始,任何用户的误差要小于1秒。 活动一般是定在每周二上午十点开抢,但有周二可能节假日,或者要求更高,一小时前临时上活动,之后打开App的用户都可看到。

  1. 既然有不同时区的用户,内部存储和计算应该用全球统一的时间戳,展示时再转为北京时间。
  2. 用户可能修改手机时间,手机的时间一天下来可能有几秒误差,所以接近活动一段时间就要用倒计时。
  3. 活动快开始时要和服务器同步一次,但在线用户太多,不可能频繁地与服务器同步。

初步方案

  1. 和服务器同步时间步骤
    • App记录当前的本地时间戳start_time,向服务器发起请求;
    • Server将服务器的当前时间戳server_time和活动开始时间戳task_time返回;
    • App记录收到结果的本地时间戳stop_time;
  2. 计算同步时间,消除App和服务器间的时间误差
    • 和server_time对应的本地时间就是发出请求和收到结果的时间中间值
    local_time = start_time + (stop_time - start_time) / 2
* 活动启动的本地时间是
    launch_time = local_time + (task_time - server_time)
  1. 优化流程,减小误差,同时保证服务器承受的压力不大
    • 提前一小时采取本地倒计时,倒计时开始时间
    alarm_time = launch_time - 3600
* 活动开始前2、3分钟和服务器再同步一次时间,即进行一次上两步

再次同步时间,提前150秒
    resync_time = launch_time - 150

© 著作权归作者所有

阿债

阿债

粉丝 2
博文 16
码字总数 3577
作品 3
深圳
私信 提问
CSDN福利社,福利就在眼前(第190423期)

请大家记住我的ID:CSDN福利社,我会向大家推送各种福利!想第一时间知道福利的人加 微信: qq: 624157130 (扫微信二维码,加福利社csdn_xiaomi,备注:进CSDN福利群) 废话少说,直接上干...

csdn_fuli
2018/04/23
0
0
小米的抢购骗局+小米的抢购页面的源代码分析(三)工具类分析

小米的javascript除了数据部分,下面就只剩871行的javascript了。 下面分模块进行分析。首先从简单的工具类入手。 从616行到最后。一共253行。 小米由于采用了一个数组,存储所有的静态字符串...

Brin想写程序
2013/11/19
7.7K
7
APPx小程序生成工具助力商家备战双十一“第二战场”

双十一进入倒计时啦! 每年的双十一购物节都会成为剁手党的狂欢盛宴,同时也是一场流量大战,大大小小商家之间、淘宝、京东、苏宁……等各大电商平台之间的营销博弈,精彩纷呈。 然而今年的双...

小程序社区
2017/11/08
29
0
热点推荐:秒杀系统架构分析与实战

1 秒杀业务分析 正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(...

洋哥6
2016/04/14
574
1
抢购倒计时如何去除时差

倒计时抢购页面如何解决网络获取服务器时间延迟和页面加载延迟导致的时差,求解答。感谢。

Kerlin0722
2014/11/17
499
3

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
890
10
oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
3
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
聊聊DubboDefaultPropertiesEnvironmentPostProcessor

序 本文主要研究一下DubboDefaultPropertiesEnvironmentPostProcessor DubboDefaultPropertiesEnvironmentPostProcessor dubbo-spring-boot-project-2.7.3/dubbo-spring-boot-compatible/au......

go4it
昨天
2
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部