CN109560889A - 一种实现App与服务端时间同步的方法 - Google Patents
一种实现App与服务端时间同步的方法 Download PDFInfo
- Publication number
- CN109560889A CN109560889A CN201811329501.9A CN201811329501A CN109560889A CN 109560889 A CN109560889 A CN 109560889A CN 201811329501 A CN201811329501 A CN 201811329501A CN 109560889 A CN109560889 A CN 109560889A
- Authority
- CN
- China
- Prior art keywords
- app
- server
- time
- network delay
- delay duration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
- H04L43/0864—Round trip delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/106—Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及一种实现App与服务端时间同步的方法。该方法通过算法在一定程度上减少网络延迟对获取的时间精度的影响;同时采用手机开机时间来保持与服务端时间的同步性,可以不受App本地时间变动的影响;另外通过持续性的计算每次请求的网络延时,可以不断使用更低网络延时的请求报文中的时间戳,来优化更新App本地保存的服务端时间,从而使App与服务端的时间不断趋于一致。
Description
技术领域
本发明属于移动互联网手机App应用开发领域,具体涉及一种实现App与服务端时间同步的方法。
背景技术
在目前的互联网手机App应用中,为了保证秒杀抢购倒计时的准确性、正确统计App到服务端之间的请求耗时、防止重放攻击等目的,需要实现较高精度(<10ms)的App与服务端的时间一致性。
现有的技术方案常见包括:
1、时钟源同步方式,即App与服务端之间不直接进行时间同步交互,而是由App与服务端分别与标准时钟源进行时间同步,从而间接保证App与服务端的时间一致性。
2、从服务端接口同步方式,即App通过接口方式获取到服务端的时间,计算服务端时间与App本地时间的时间差Δt,每次使用时将App本地时间加上Δt作为本地的服务端时间。
上述方案1的时钟源同步方式,由于服务端通常是通过多级网络与标准时钟源进行时间同步,由于多层级网络延时累加,造成服务端时间精度不够,只能够保证秒级的精确性。在这种情况下,App与服务端的时间偏差也会达到秒级,通常无法满足对时间一致性要求较高的业务场景的需要。
上述方案2的服务端接口同步方式,存在如下缺点:1、App通过网络接口获取服务端时间时,由于网络调用耗时,获取到的服务端时间传输到客户端时与实际的服务端时间已经存在偏差。2、在获取到App与服务端的时间差Δt后,App本地时间由于网络自动校准或者人为修改的原因会发生变动。
本发明在采用App与服务端之间通过时间同步接口的方式的基础上,为了解决App获取服务端时间由于网络延时造成的偏差,通过算法在一定程度上减少网络延迟的影响。为了防止App本地时间变动的影响,通过终端开机持续时间来保证校准后与服务端的时间相对一致性。同时,将时间戳嵌入到正常业务交互报文中,通过计算每次请求的网络延时,可以不断使用更低网络延时的请求报文中的时间戳来优化更新App本地保存的服务端时间,从而使App与服务端的时间一致性不断趋于精准。
发明内容
本发明的目的在于提供一种实现App与服务端时间同步的方法,通过算法在一定程度上减少网络延迟对获取的时间精度的影响;同时采用手机开机时间来保持与服务端时间的同步性,可以不受App本地时间变动的影响;另外通过持续性的计算每次请求的网络延时,可以不断使用更低网络延时的请求报文中的时间戳,来优化更新App本地保存的服务端时间,从而使App与服务端的时间不断趋于一致。
为实现上述目的,本发明的技术方案是:一种实现App与服务端时间同步的方法,包括如下步骤:
步骤S1、App与服务端时间偏差值、网络延迟时长的获取与计算:
在正常业务请求报头即Http Header中嵌入客户端和服务端的时间戳,具体记录的时间戳如下:
(1.1)App提交给服务端的请求包离开App的时间T1;
(1.2)服务端返回App的应答报文中包含服务端接收到请求包的时间T2、应答包离开服务端的时间T3;
(1.3)App接收到应答包的时间T4;
通过上述4个时间参数T1、T2、T3、T4,即可计算出2个参数:网络延迟时长d、App与服务端之间的时间偏差△t;
步骤S2、实现App与服务端保持时间一致性:
(2.1)App在启动时调用接口获取服务端的应答包离开服务端的时间T3,App将T3+d/2作为当前的服务端时间保存在App侧,并且标注该变量为ServerTime;
(2.2)App在收到服务端应答包的同时,调用手机端的SystemClock.elapsedRealtime() 方法,获取手机端***开机时间,并且记录该变量为elapsedTime;同时记录本次的网络延时时长d为变量delayTime;
(2.3)App后续请求中,报头的T1=ServerTime+SystemClock.elapsedRealtime()-elapsedTime,该时间T1即目前App侧保持的服务端时间。
在本发明一实施例中,还包括一步骤S3,即通过持续更新提高时间一致性精度:由于获取服务端时间的准确程度受网络延时时长d的影响,理论上d越小的情况下获取的服务端时间越接近实际值;根据这个原则,每次计算请求的网络延时时长d时,当新的d比App记录的d更小时,则采用这次请求的服务端时间更新App记录的ServerTime;具体实现如下:
(3.1)App在收到服务端应答包后计算本次请求的网络延时d,若d<delayTime则继续后续步骤(3.2)进行校准,否则不进行校准;
(3.2)更新App侧的ServerTime=T3+d/2;更新elapsedTime=SystemClock.elapsedRealtime();更新delayTime=d。
在本发明一实施例中,所述步骤S1中,网络延迟时长d、App与服务端之间的时间偏差△t的具体计算方式如下:
根据各时间参数之间的关系,可知:
T2-T1-△t = d1
T4-T3+△t = d2
d1+d2 = d
假设请求包网络延迟时长d1与应答包网络延迟时长d2相等,则可以推导出:
△t = ((T2+T3)-(T1+T4))/2
d = (T2-T1)+(T4-T3)
由此得出每个请求的App与服务端的时间偏差值△t以及网络延迟时长d。
相较于现有技术,本发明具有以下有益效果:本发明通过算法在一定程度上减少网络延迟对获取的时间精度的影响;同时采用手机开机时间来保持与服务端时间的同步性,可以不受App本地时间变动的影响;另外通过持续性的计算每次请求的网络延时,可以不断使用更低网络延时的请求报文中的时间戳,来优化更新App本地保存的服务端时间,从而使App与服务端的时间不断趋于一致。
附图说明
图1为App与服务端时间偏差值、网络延迟时长的获取与计算示意图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明提供了一种实现App与服务端时间同步的方法,包括如下步骤:
步骤S1、App与服务端时间偏差值、网络延迟时长的获取与计算:
在正常业务请求报头即Http Header中嵌入客户端和服务端的时间戳,具体记录的时间戳如下:
(1.1)App提交给服务端的请求包离开App的时间T1;
(1.2)服务端返回App的应答报文中包含服务端接收到请求包的时间T2、应答包离开服务端的时间T3;
(1.3)App接收到应答包的时间T4;
通过上述4个时间参数T1、T2、T3、T4,即可计算出2个参数:网络延迟时长d、App与服务端之间的时间偏差△t;
步骤S2、实现App与服务端保持时间一致性:
(2.1)App在启动时调用接口获取服务端的应答包离开服务端的时间T3,App将T3+d/2作为当前的服务端时间保存在App侧,并且标注该变量为ServerTime;
(2.2)App在收到服务端应答包的同时,调用手机端的SystemClock.elapsedRealtime() 方法,获取手机端***开机时间,并且记录该变量为elapsedTime;同时记录本次的网络延时时长d为变量delayTime;
(2.3)App后续请求中,报头的T1=ServerTime+SystemClock.elapsedRealtime()-elapsedTime,该时间T1即目前App侧保持的服务端时间。
还包括一步骤S3,即通过持续更新提高时间一致性精度:由于获取服务端时间的准确程度受网络延时时长d的影响,理论上d越小的情况下获取的服务端时间越接近实际值;根据这个原则,每次计算请求的网络延时时长d时,当新的d比App记录的d更小时,则采用这次请求的服务端时间更新App记录的ServerTime;具体实现如下:
(3.1)App在收到服务端应答包后计算本次请求的网络延时d,若d<delayTime则继续后续步骤(3.2)进行校准,否则不进行校准;
(3.2)更新App侧的ServerTime=T3+d/2;更新elapsedTime=SystemClock.elapsedRealtime();更新delayTime=d。
所述步骤S1中,网络延迟时长d、App与服务端之间的时间偏差△t的具体计算方式如下:
根据各时间参数之间的关系,可知:
T2-T1-△t = d1
T4-T3+△t = d2
d1+d2 = d
假设请求包网络延迟时长d1与应答包网络延迟时长d2相等,则可以推导出:
△t = ((T2+T3)-(T1+T4))/2
d = (T2-T1)+(T4-T3)
由此得出每个请求的App与服务端的时间偏差值△t以及网络延迟时长d。
以下为本发明的具体实现实例。
本发明的一种实现App与服务端时间同步的方法,具体实现过程如下:
1、App与服务端时间偏差值、网络延迟时长的获取与计算方式:
如图1所示,在正常业务请求报文头即Http Header中嵌入客户端和服务端的时间戳,具体记录的时间戳规则如下:(1)App提交给服务端的请求包离开App的时间T1;(2)服务端返回App的应答报文中包含服务端接收到请求包的时间T2、应答包离开服务端的时间T3;(3)App接收到应答包的时间T4。通过上述4个时间参数就能够计算出2个关键参数:请求包的往返延迟d和App与服务端之间的时间偏差△t。
根据图1可以得到如下公式:
T2-T1-△t = d1
T4-T3+△t = d2
d1+d2 = d
假设请求包网络延迟与应答包网络延迟相等,即d1=d2则可以推导出:
△t = ((T2+T3)-(T1+T4))/2
d = (T2-T1)+(T4-T3)
根据上述计算公式,可以计算出每个请求的App和服务端的时间偏差值△t以及网络延迟d。由于该算法在一定程度上考虑了网络延迟的影响,并且d1和d2越接近则△t越准,当实际d1=d2时,计算出的△t就是真实的双方时间偏差值了。
2、App与服务端保持时间一致性的方式:
1)App在启动时调用接口获取服务端的应答包返回时间T3,App将T3+d/2作为当前的服务端时间保存在App侧,并且标注该变量为ServerTime。
2)App在收到第1)步的服务端应答包的同时,调用手机端的SystemClock.elapsedRealtime() 方法,获取该手机***开机时间(包含睡眠时间),并且记录该变量为elapsedTime。同时记录本次的网络延时d为变量delayTime。
3)App后续请求中,报头中的T1=ServerTime+SystemClock.elapsedRealtime()-elapsedTime,这个时间T1就是目前App侧保持的服务端时间了。
3、持续更新提高时间一致性精度的方式
通过以上步骤1、2已经可以基本保证App与服务端的时间一致性,但是为了防止第一次获取服务端时间时,由于网络波动等对精度的影响,可以在后续的请求过程中对App保留的服务端时间进行持续校准。优化的主要思想为:由于获取服务端时间的准确程度主要受网络延时d的影响,理论上d越小的情况下获取的服务端时间越接近实际值。根据这个原则,可以每次计算请求的网络延时d,当新的d比App记录的d更小时,就使用这次请求的服务端时间更新App记录的ServerTime了。
具体步骤如下:
1)App在收到服务端应答包后计算本次请求的网络延时d,如果d<delayTime则继续后续步骤进行校准,否则不进行校准。
2)校准更新步骤:更新App侧的ServerTime=T3+d/2;更新elapsedTime=SystemClock.elapsedRealtime();更新delayTime=d。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (3)
1.一种实现App与服务端时间同步的方法,其特征在于,包括如下步骤:
步骤S1、App与服务端时间偏差值、网络延迟时长的获取与计算:
在正常业务请求报头即Http Header中嵌入客户端和服务端的时间戳,具体记录的时间戳如下:
(1.1)App提交给服务端的请求包离开App的时间T1;
(1.2)服务端返回App的应答报文中包含服务端接收到请求包的时间T2、应答包离开服务端的时间T3;
(1.3)App接收到应答包的时间T4;
通过上述4个时间参数T1、T2、T3、T4,即可计算出2个参数:网络延迟时长d、App与服务端之间的时间偏差△t;
步骤S2、实现App与服务端保持时间一致性:
(2.1)App在启动时调用接口获取服务端的应答包离开服务端的时间T3,App将T3+d/2作为当前的服务端时间保存在App侧,并且标注该变量为ServerTime;
(2.2)App在收到服务端应答包的同时,调用手机端的SystemClock.elapsedRealtime() 方法,获取手机端***开机时间,并且记录该变量为elapsedTime;同时记录本次的网络延时时长d为变量delayTime;
(2.3)App后续请求中,报头的T1=ServerTime+SystemClock.elapsedRealtime()-elapsedTime,该时间T1即目前App侧保持的服务端时间。
2.根据权利要求1所述的一种实现App与服务端时间同步的方法,其特征在于,还包括一步骤S3,即通过持续更新提高时间一致性精度:由于获取服务端时间的准确程度受网络延时时长d的影响,理论上d越小的情况下获取的服务端时间越接近实际值;根据这个原则,每次计算请求的网络延时时长d时,当新的d比App记录的d更小时,则采用这次请求的服务端时间更新App记录的ServerTime;具体实现如下:
(3.1)App在收到服务端应答包后计算本次请求的网络延时d,若d<delayTime则继续后续步骤(3.2)进行校准,否则不进行校准;
(3.2)更新App侧的ServerTime=T3+d/2;更新elapsedTime=SystemClock.elapsedRealtime();更新delayTime=d。
3.根据权利要求1或2所述的一种实现App与服务端时间同步的方法,其特征在于,所述步骤S1中,网络延迟时长d、App与服务端之间的时间偏差△t的具体计算方式如下:
根据各时间参数之间的关系,可知:
T2-T1-△t = d1
T4-T3+△t = d2
d1+d2 = d
假设请求包网络延迟时长d1与应答包网络延迟时长d2相等,则可以推导出:
△t = ((T2+T3)-(T1+T4))/2
d = (T2-T1)+(T4-T3)
由此得出每个请求的App与服务端的时间偏差值△t以及网络延迟时长d。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811329501.9A CN109560889A (zh) | 2018-11-09 | 2018-11-09 | 一种实现App与服务端时间同步的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811329501.9A CN109560889A (zh) | 2018-11-09 | 2018-11-09 | 一种实现App与服务端时间同步的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109560889A true CN109560889A (zh) | 2019-04-02 |
Family
ID=65865896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811329501.9A Pending CN109560889A (zh) | 2018-11-09 | 2018-11-09 | 一种实现App与服务端时间同步的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109560889A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110213005A (zh) * | 2019-05-17 | 2019-09-06 | 厦门网宿有限公司 | 一种时间同步方法、设备及*** |
CN110288333A (zh) * | 2019-06-28 | 2019-09-27 | 广州华多网络科技有限公司 | 一种业务数据的处理方法、客户端、服务器及*** |
CN110838885A (zh) * | 2019-11-20 | 2020-02-25 | 金蝶软件(中国)有限公司 | ***时间同步方法以及相关装置 |
CN113346973A (zh) * | 2021-05-31 | 2021-09-03 | 广州博冠信息科技有限公司 | 事件提示方法及装置、电子设备、计算机可读存储介质 |
CN114679481A (zh) * | 2022-02-23 | 2022-06-28 | 达闼机器人股份有限公司 | 机器人的控制方法、装置、存储介质及机器人集群 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973804A (zh) * | 2014-05-19 | 2014-08-06 | 广东欧珀移动通信有限公司 | 终端时间的设置方法及装置 |
CN105680969A (zh) * | 2015-12-31 | 2016-06-15 | 浙江中控技术股份有限公司 | 一种时钟同步方法及装置 |
CN108259107A (zh) * | 2018-01-17 | 2018-07-06 | 深圳聚点互动科技有限公司 | 多个无线设备间***时间同步的方法、装置、设备及存储介质 |
-
2018
- 2018-11-09 CN CN201811329501.9A patent/CN109560889A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973804A (zh) * | 2014-05-19 | 2014-08-06 | 广东欧珀移动通信有限公司 | 终端时间的设置方法及装置 |
CN105680969A (zh) * | 2015-12-31 | 2016-06-15 | 浙江中控技术股份有限公司 | 一种时钟同步方法及装置 |
CN108259107A (zh) * | 2018-01-17 | 2018-07-06 | 深圳聚点互动科技有限公司 | 多个无线设备间***时间同步的方法、装置、设备及存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110213005A (zh) * | 2019-05-17 | 2019-09-06 | 厦门网宿有限公司 | 一种时间同步方法、设备及*** |
CN110288333A (zh) * | 2019-06-28 | 2019-09-27 | 广州华多网络科技有限公司 | 一种业务数据的处理方法、客户端、服务器及*** |
CN110838885A (zh) * | 2019-11-20 | 2020-02-25 | 金蝶软件(中国)有限公司 | ***时间同步方法以及相关装置 |
CN113346973A (zh) * | 2021-05-31 | 2021-09-03 | 广州博冠信息科技有限公司 | 事件提示方法及装置、电子设备、计算机可读存储介质 |
CN113346973B (zh) * | 2021-05-31 | 2023-09-08 | 广州博冠信息科技有限公司 | 事件提示方法及装置、电子设备、计算机可读存储介质 |
CN114679481A (zh) * | 2022-02-23 | 2022-06-28 | 达闼机器人股份有限公司 | 机器人的控制方法、装置、存储介质及机器人集群 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109560889A (zh) | 一种实现App与服务端时间同步的方法 | |
CN101416431B (zh) | 根据服务器时钟的时间和频率信息控制客户端时钟的方法和设备 | |
US8873589B2 (en) | Methods and devices for clock synchronization | |
US9344981B2 (en) | Method for synchronizing clocks in a communication network | |
KR102604138B1 (ko) | 서비스 계층 시간 동기화 | |
CN1972182B (zh) | 一种提高无线传感器网络时间同步精度的方法 | |
CN103929293B (zh) | 非对称延迟的时间同步方法及*** | |
CN101455014B (zh) | 传送所发送的或者所接收的消息的发送时间信息或者接收时间信息的方法和装置 | |
CN101083523B (zh) | 一种实现集成时间戳时钟同步锁相环的方法及装置 | |
US20210075585A1 (en) | Measure and improve clock synchronization using combination of transparent and boundary clocks | |
EP1961186B1 (en) | Using travel-time as means for improving the accuracy of simple network time protocol | |
CN105743598B (zh) | 一种工业以太网时钟同步方法及*** | |
CN108964820B (zh) | 一种时钟处理方法、装置和ptp设备 | |
CN104158647A (zh) | 一种无线传感网络时钟同步方法 | |
CN110061797A (zh) | 时间同步方法、装置、存储介质及计算机设备 | |
US11965971B2 (en) | Systems for timestamping events on edge devices | |
CN103532652A (zh) | 一种时间同步装置和方法 | |
CN104053223A (zh) | 一种低功耗无线传感器网络时间同步方法 | |
US20060222016A1 (en) | Synchronization of time stamps of peer devices in a communication node | |
CN110176973B (zh) | 时钟同步的方法、***、计算机设备和存储介质 | |
CN103532693B (zh) | 一种时间同步装置和方法 | |
TW201733386A (zh) | 時脈同步方法、行動網路系統、網路控制器與網路交換器 | |
Li et al. | A security management architecture for time synchronization towards high precision networks | |
WO2018098791A1 (zh) | 适用于多跳无线传感器网络的时钟同步频率偏移估计方法 | |
CN108134644B (zh) | 同步方法、装置、同步设备及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190402 |