APP跨时区多系统时间同步处理.

最近在帮公司国际部做一个APP.
面向的用户是 东南亚和非洲.
涉及到了APP-中台-下游多服务系统 之间的时间同步问题.
之前完全没有处理过,记一下.

项目结构简述

项目的整体服务结构很简单,
依托现有的 国际服务,对国际部提供的dubbo进行封装,然后统一由中台去内网调用和分发.

项目结构
东南亚地区中台服务部署在香港阿里云,APP只通过HTTPS与中台进行交互, 中台对所有上/下游服务进行封装,内网dubbo调用.

  • 各服务需要的 常规信息(用户,所属站点,countryCode等),
  • 各服务给予的 token,

全部由中台持有,中台下发自己的token给APP
后续所有系统服务调用,中台根据自己的token去进行补充.


问题

1. APP时间篡改

这个问题很好解决,
APP使用的扫描数据的时间统一以 登录后返回服务器为准,避免Android设备自行设置时间,导致快件扫描时间混乱.


2.服务时间不同步,跨时区问题

想一想这个问题

当你在中国寄了一个快递 寄往越南的.
越南是东7区,中国大部分区域为东8区.
比如 我中国中心收件是 东8区 3:00PM,到了越南中心到件,因为是东7区,早一个小时,2:50 PM,其实相当于 东8区的 3:50PM,但是因为时区问题,反倒是 下一个中心的到件时间比上一个中心的收件时间还早.
当然这种极端情况不太可能发生,但是这终究会牵扯到 因为时区导致时间差异的问题.
况且后续会将APP推广到东南亚甚至非洲其他国家,因为时区这个问题,导致快件时间出现差错,会影响快件的物流轨迹.

直接说解决问题办法.

  • 统一中台服务器,上下游所有依赖服务 时区,指定设置 统一时区.
  • APP登录时,传入时区,APP中台根据APP传入的时区,将当前服务器的时间进行时区校准后传递给APP,后续一律使用 校准后的时间+APP的时区.

时间校准
在登录时,传递设备当前时区. 如当前为 东7区.
服务器统一为 东8区,当前服务器时间为 10:00 AM.
通过2个时区之间的校准,那么给设备返回当前 服务器时间为 9:00 AM (东7区 比 东8区 早一个小时).
后续设备所有接口请求,统一传递的时间为 经过服务器校准过的时间 加上 当前的设备时区 即可.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值