现象:
- 刷新页面时抢购商品列表页、商品详情页倒计时会发生变化。
- 商品列表页与商品详情页时间不一致。
- 抢购开始时价格显示非抢购价。
原因分析:
由于服务采用集群部署在多台机器上,每台服务器的时间不一致。代码里通过new Date()获取当前时间的,即获取当前服务器时间。用户每次请求可能访问到不同的服务器,从而造成了抢购开始,价格未刷新的问题以及每次刷新页面时间变化问题。
解决方案:
- 缩短NTP定时同步时钟(保证各服务器时间一致)的间隔为5分钟同步一次。
- 抢购等对时间比较敏感的业务,采用从时钟服务器获取时间(查询MySQL数据库的时间SELECT UNIX_TIMESTAMP(NOW()) as now FROM DUAL)。
网友评论