Logo GH

Ժամանակի և դրեյֆի համաժամացումը

1) Ինչո՞ ւ է ժամանակը ճարտարապետական բաղադրիչ

Ժամանակը հասնում է բոլոր շերտերին ՝ TTL տոկեններ և հավաստագրեր, RPC-ի գլուխգործոցներ, իրադարձությունների կարգը, լոգները և վերլուծությունը, համաձայնությունը և արգելափակումը։ Տասնյակ միլիոնավոր մարդկանց սխալ կարող է

կոտրել Kerberos/OAuth/JWT (դաշտեր 'iat/nbf/exp ");

աղավաղել մետրերը/թրեյզերը և ալերտները;

մեծացնել բրոկերները/հաճախորդները (թայմաուտներ, ռետրաններ, էքսպոնենցիալ backoff);

խախտել կարգը և գաղափարախոսությունը բաշխված սցենարներում։

Հիմնական տերմինները

Systset (2019) - ստանդարտ ժամանակի տարբերությունը ստանդարտից։

Skew (հանգույցը) - հանգույցների միջև օֆսեթների տարբերությունը։

Drift (dreift) - ժամացույցի հեռանալու արագությունը (108 մ), երբ հաճախորդների բացակայության դեպքում։

Jitter-ը ձերբակալման փոփոխականությունն է/108։

2) Աղբյուրներն ու ժամանակի արձանագրությունները

2. 1 NTP (Network Time Protocol)

Ստրատները (Stratum 1 - անմիջապես GNSA/ռադիոյից, Stratum 2-ից 'Stratum 1-ից և այլն)։

Ուղղումը երկու կերպ

slew (հաճախականության լողացող ենթակառուցվածք, անվտանգ դիմումների համար);

step (ժամանակի ցատկ; անցանկալի է երկարության վրա)։

Իրականացումները ՝ chrony, ntpd, medemd-timesyncd։ Մրցույթի համար 'www.chrony։

2. 2 NTS (NTP over TLS)

Վավերացված համաժամացում (պաշտպանություն MITM-ից և ժամանակի փոխարինումից)։

Առաջարկվում է արտաքին աշխատանքային ժամանակի համար։

2. 3 PTP / IEEE 1588

Ժամանակի ապարատային պարամետրերը (hardult timestamping) NIC/Windows R-ում, միլիոնավոր և միկրովայրկյան ճշգրտությունը։

Ռեժիմները ՝ boundary/transparent clock, ավելացրեցին հեռուստացույցով/enterprise։

Օգտագործել կոշտ SLO-ով p99 կարգի, HFT/telecom/արդյունաբերություն։

2. 4 GNSA (GPS/GLONASS) և PPS

Տեղական ընդունիչները տալիս են PPS (pulse-per-second) ստանդարտ Stratum 1-ի համար։

Կարևոր է հաշվի առնել, թե ինչպես կարելի է վերբեռնել։

2. 5 Ամպեր

Ամպային աղբյուրները (ներքին stratum-puls) նվազեցնում են offset և ջիթերը CPC-ի ներսում։

Մետրոպոլիտենի միջավայրերի համար տեղական և ամպային հանրաքվեներ անցկացրեք։

3) Ժամանակ ՕՀ-ում և երկաթում

TSC/HPET/RTC: ժամանակակից CPU-ն պահում է TSC-ն որպես արագ մոնոտոնային հաշվիչ։ ամրացրեք հաճախականությունը (www.ari.ru TSC)։

Վիրտուալիզացիա/բեռնարկղեր 'թռիչք և «ցատկ» ավելի հաճախ։ Հիպերվիզորի վրա խիստ թայմ ծառայությունն է։ հյուրերում 'chrony։

Էներգախնայողությունը կարող է խանգարել թայմերի մոնոտոնիան, ստուգեք RF/UEFI տարբերակները։

4) Մոնոտոնային և «պողպատե» ժամացույց

Wall-clock (իրական ժամանակը, TZ/UTC) - լոգարանների, իրադարձությունների նշանների, մարդկանց համար։

Monotonic clock-ը ընդմիջումները/թայմաուտները չափելու համար է։

Կոդում

Linux: `CLOCK_MONOTONIC`.
C++: `std::chrono::steady_clock`.

Go 'ներկառուցված մոնոտոնային մասերը' Time։ Time '-ը ընդմիջումներում։

Java: `System. nanoTime () "երկարությունների համար, ոչ օրացույցի համար։

Կանոն 'dedline և retray - մոնոտոնային ժամացույցի վրա։ հեռուստացույց/լոգոն - UTC-ում։

5) Leap second/» leap smear» և օրացուցային թակարդներ

Leap second-ը կարող է զանգահարել «00: 59:60» կամ վայրկյանի կրկնությունը թեյմերում/մետրերում։

Մոտեցումներ

Smear (լողացող «տաքացում» N ժամի ընթացքում)։

Քայլ (անցանկալի)։

Երբեք մի ապավինեք տեղական TZ/ամռանը տրամաբանության համար։ պահեք UTC-ը, ցույց տվեք օգտագործողի TZ-ում։

Թարմացրեք TZDB (ժամացույցի գոտիների հիմքը), քաղաքական փոփոխությունները տեղի են ունենում։

6) Առանց «պատի» նկատմամբ վստահության

Lampional clocks և Vector clocks-ը պատճառահետևանքային հարաբերություններ են առանց ֆիզիկական ժամերի։

Hybrid Logical Clocks (HLC) - միավորում են ֆիզիկական ժամանակը և հաշվիչը, դիմացկուն փոքր skew։

Windows Time-ի նման մոդելները վերադարձնում են ww.earliest, latest) "և պահանջում են commit-wait սերիայի համար։

7) Ժամանակի ազդեցությունը արձանագրությունների և համակարգերի վրա

Անվտանգությունը 'Kerberos թույլ է տալիս փոքրիկ skew (սովորաբար 355 րոպե), TSA/հավաստագրերը զգայուն են "www.tBefore/wwww.tAfter", JWT k' exp/nbf/iat "։

Բրոկերները/հերթերը 'առաջադրանքների/visibility timeout կախված են ճիշտ ժամանակից։

SUBD/կլաստերներ 'տարբերակների կոնֆլիկտը' համաձայն «divated _ at »/ts - մուտքագրեք HLC/տարբերակը, և մի համեմատեք« հում »wall-timestamps-ը։

Սթրիմ 'տարբերեք event time և processing Time; տեղադրեք watermarks և lateness։

Քրոն/պլանավորողները 'դրեյֆը հանգեցնում է «կպչուն »/կրկնակի մեկնարկի։ Օգտագործեք մոնոտոնային ընդմիջումներ և բանալիներ։

8) Դիտարկումը և SLO ժամանակը

8. 1 Մետրիկա

`time. www.set _ 24« (offset հանրաքվեին), »time. jitter_ms`, `stratum`, `root_delay`, `root_dispersion`.
Для PTP: `path_delay`, `grandmaster_offset`, `gm_identity`, `clock_class`.

Ալբերտ 'օֆսեթ> շեմն (օրինակ, 100-500 մզ), աղբյուրի կորցումը, step-2019։

8. 2 Ախտորոշում

`chronyc tracking/sources/sourcestats`

`ntpq -p`, `ntpstat`

PTP: «pmc», NIC/Windows R վենդեր։

8. 3 SLO/սխալ բյուջե

SLO-ի օրինակը ՝ "Japaneset no. 1 to, p99 set no 25 ruble, wwww.step prod-հանգույցներում։ PTP grandmaster failover ≤ 2 s».

9) Կազմաձևման պրակտիկան (Linux/www.ainers/K8s)

9. 1 chrony (խորհուրդ)

Օրինակ ('/etc/chrony/chrony. conf`):

pool time. example. org iburst maxsamples 9 nts makestep 0. 5 1 # one step at big error at start rtcsync # synchronize hardware clock leapsectz right/UTC # leap seconds from tzdata driftfile/var/lib/chrony/drift

Օգտակար տարբերակներ

`maxsources`, `minsamples/maxsamples`, `maxslewrate`.

Մեկուսացված DC-ի համար տեղական հանրաքվեն + GPS/PPS-ն է։

9. 2 Բեռնարկղեր և շարժիչներ

Համաժամեցումը արեք հանրակացարանի վրա։ բեռնարկղերը օգտագործում են միջուկը։

K8s-ում DaemonLine-ը chrony կամ node-level Time-գործակալ է։ արգելեք ժամանակի բերումը ծրագրերով։

9. 3 PTP stek

NIC-ը ապարատային timestamping, PTP դեմոն, boundary clocks CorpR-ում։

PTP (պրոֆիլներ), պաշտպանություն «վատ» grandmaster-ից։

10) Ժամանակի անվտանգությունը

NTS/վավերացված NTP, ֆիլտրեր և rate-limit (NTP-2019 - DDoS վեկտոր)։

PTP 210 'L2, ACL մեկուսացումը բազմազանության վրա, GM spoofing-ը։

GNSA 'ալեհավաքներ լավ ակնարկով, սպուֆինգի/ջամինգի, fallback աղբյուրների։

11) Ինժեներական արտոնագրեր և կոդը

11. 1 Dedline/timauta

Պահեք dedlins որպես «մոնոտոնային սկիզբը + դելտա», ոչ թե բացարձակ wall-timestamp։

Միշտ ավելացրեք skew (օրինակ, 2 հազար սպասվող p99-skew դեպի TTL Token)։

11. 2 Տարբերակների համեմատություն

Մի ապավինեք «contated _ at» հանգույցների միջև։ Օգտագործեք

տարբերակումը/ETag;

HLC/seq;

լավատեսական արգելափակումներ։

11. 3 Թիթեղներ և հետքեր

Միշտ UTC; միացրեք դաշտը 'time _ entset _ 24' հանգույց գործակալի լոգում։

Թափահարեք event-time-ը ուղեղի իրադարձություններում։

11. 4 Leap second

Ընտրեք քաղաքականությունը (smear/step) միատեսակ բոլոր հանգույցներով։

Փորձարկեք 'մետրերը չպետք է «կոտրվեն» մեկ վայրկյանում։

12) Ալյումինի ազդեցությունը

Auth: հոսանքներ - հաշվի առեք «clock skew allowae» (օրինակ ՝ 242-5 րոպե)։

Payments/ժամանակի հատվածները 'կլորացրեք ընդմիջումները, ոչ թե բացարձակ ժամանակը։

Բրոկերներ 'գետերի գրաֆիկները մոնոտոնային ժամացույցի վրա են։

BD/TTL: TTL Redis/DB-ում, ապավինում է տեղական ժամացույցներին 'տեղադրեք պահուստը։

Վերլուծաբան 'ժամանակի ագրեգացիան օգտագործեք միասնական UTC-ն և ingestion-ը։

13) Թեստային պլեյբուկները (Game Days)

Drift inj.ru: Արհեստականորեն հեռացնել ժամացույցը +/www.E.ru; ստուգել auth, brocers, SLO։

NTP entage: անջատել աղբյուրները, հետևել drift-ը և ինքնահարգանքը։

Leap second/smear 'leap հարձակման իմիտացիա, գծապատկերների/թայմերների գնահատում։

PTP GM failover 'ստուգել մրցույթի ժամանակը և օֆսեթը հետո։

VM suspend/resume-ը 'համոզվել, որ չկա «ցատկ» և step հյուրերի վրա։

14) Anti-patterna

Համեմատել տարբեր հանգույցների իրադարձությունները wall-ժամանակով առանց HLC/seq։

«Կառուցվածքային լոկալի» կլաստերը (TZ-ից) BD-ում UTC-ի փոխարեն։

Թույլ տալ ծրագրերին անել «date-s »/« timedatectl 2019-time»։

Ներառել step-2019 վաճառքում առանց պլանավորման։

Անտեսել TZDB նորարարությունը և անցման կանոնները ամռան ժամանակ։

Օգտագործել wall-clock-ը backoff/timouts/token-TTL-ի համար առանց skew-ի։

Փորձել «բուժել կարգը» ֆիզիկական ժամանակի փոխարեն տրամաբանական ժամերի փոխարեն։

15) Ներդրման չեկի ցուցակ

  • Միասնական քաղաքականություն ՝ NTP (NTS) կամ PTP; վստահելի աղբյուրների ցանկը։
  • Մոսկվան տեղադրված է սայթաքուն, step միայն սկզբում։
  • Leap second (smear/step) միասնական քաղաքականությունը բոլոր կլաստերներով։
  • Դելֆսեթ, ջիթեր, stratum/PTP ցուցանիշներ; ալերտներ։
  • Ծրագրերը օգտագործում են միապաղաղ ժամացույց ընդմիջումների/դադարների համար։
  • Կարգի/կոնֆլիկտների համար HLC/տարբերակը, ոչ wall-timestamps։
  • Skew պաշարները TTL թոկեններում, վկայագրերում, գրաֆիկներում։
  • K8s/VM 'համաժամացումը հանրակացարաններում, բեռնարկղերը առանց ճիշտ փոխելու ժամանակը։
  • Windows և runbooks ժամանակի, game days CI/CD օրացույցի մեջ։
  • TZDB նորարարությունը, DST/leap իրադարձությունների վարքագծի ստուգումը։

16) FAQ

Q: Ե՞ րբ է անհրաժեշտ PTP-ը NTP-ի փոխարեն։

A: Երբ SLO-ն պահանջում է միկրովայրկյան տասնյակ միկրովայրկյաններ (հեռուստացույց/HFT/արդյունաբերություն) և ցանցում/քարտեզներում ապարատային նշանների աջակցություն կա։

Q 'Որքա՞ ն տեղադրեք clock skew-ի վրա։

A 'Տիպիկ NTP-ի համար DC-ում տասնյակ-հարյուր ms (p99); դրեք 2 հազար ռուբլի։ PTP-ի հետ 'մեկ-տասնյակ iss։

Q 'Ինչպե՞ ս գոյատևել leap second

A 'Օգտագործել smear և նույն քաղաքականությունը ամենուր. փորձարկել գրաֆիկները/ագրեգատորները և թայմերը։

Q 'Կարո՞ ղ եք ապավինել wall clock-ին։

Ա 'Ոչ։ Միայն մոնոտոնային ժամացույցներ + skew։

Q 'Ինչպե՞ ս պահել «ժամանակը» BD-ում։

A: UTC («timestamptz»), գումարած/HLC տարբերակները հակամարտությունների լուծման համար։ մի պահեք տեղական տարածքները տվյալների մեջ։

17) Արդյունքները

Հուսալի ժամանակը + քաղաքականության + կարգապահությունն է կոդում։ Համաժամեցեք կոդերը (NTP/NTS կամ PTP), օգտագործեք մոնոտոնային ժամացույցներ ընդմիջումների համար, UTC տվյալների համար, HLC/տարբերակները, տեղադրեք skew պաշարները, վերահսկեք օֆսեթը և պարբերաբար կատարեք game days։ Այսպիսով, դուք նկարագրում եք «առեղծվածային» ուղիները, տարաձայնությունները իրադարձություններում և անկայուն SLO-ում։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։