GH GambleHub

Wagt zolaklary we duýgurlyk

1) Esasy ýörelgeler

UTC ulag we saklamak hökmünde. Ähli serwer wagt sortlary we sortlama açarlary - UTC-de. Ýerli "diwar" wagtyna - gyrada (edge/UI) ýa-da ýörite bellenen format hyzmatynda üýtgetmek.
Zona ≠ süýşmek. 'Europeewropa/Kyiv' diňe 'UTC + 02:00' däl: düzgünler wagtyň geçmegi bilen üýtgeýär. IANA (tzdb) identifikatorlaryny "+ 03:00" däl-de, ulanyjynyň/obýektiň profilinde saklaň.
Sagadyň anyk tapawudy.

Wall clock (adam wagty, DST-e sezewar).
UTC clock (ähliumumy masştab).
Monotonic clock (dowamlylygy we wagtyny ölçemek üçin). "Diwar" sagadynda hiç wagt wagt hasaplamaň.
Wagtyň titremesine çydamlylyk we çydamlylyk. Ulgamlar NTP/süýşmegiň ownuk böküşlerini dogry başdan geçirmeli.


2) Maglumatlaryň nusgasy we API-şertnamalary

Wakalar: 'occurred _ at' (UTC, RFC 3339), 'timezone' (IANA), goşmaça 'wall _ time' (döredilende süýşmegi saklamak bilen lokal).
Döwürler: UTC-de '[start, end)' ýarym ýapyk aralyklaryny ulanyň; okalýan programmalar üçin asyl beýany + zonany saklaň.
Gaýtalanýan düzgünler: RRULE/cron-ekwiwalent + IANA zonasy hökmünde seriýalaň. Meýilnamalaşdyrmak DST düşünýän hereketlendirijini tabşyryň.
API-de wagt formaty: ISO 8601/RFC 3339 aç-açan 'Z' ýa-da göçürme bilen, mysal üçin '2025-10-31T17: 00: 00Z'. Süýşmän "ýüzýän" setirleri geçirmäň.
Wersiýalaşdyrmak: Wagtyň iş kadalarynyň üýtgemegi (mysal üçin, ýurduň hemişelik UTC + 1-e geçmegi) - konfigurasiýalaryň göçmegi we meýilnamalary gaýtadan hasaplamak; wersiýalaryň shemalarynda göz öňünde tutuň.


3) Tomus wagty (DST): Ambiguites and pass

Köpeldilen ýerli döwürler. Güýzde ýerli "02:30" iki gezek bolup biler. Zolakda meýilleşdiriji '2025-10-26T02: 30 + 03' we '2025-10-26T02: 30 + 02' tapawutlandyrmalydyr.
Sypdyrylan ýerli döwürler. Ýazda minutlyk aralyklar "bökýär" (mysal üçin '02: 00-03: 00' ýok). Meýilnamalaşdyryjy strategiýany kesgitlemäge borçludyr: '03:00' -a geçirmek, sypdyrmak ýa-da "mümkin boldugyça gysga wagtda" ýerine ýetirmek.
Maslahat: tabşyrygy "ýerli düzgün + zona" hökmünde saklaň we hakyky ýagdaýlary DST-de saýlanan syýasaty düzüp, öňünden UTC-de (rolling window) materiallaşdyryň.


4) Leap seconds и time smear

Leap second. Goşmaça sekunt käwagt UTC-e girizilýär. Işewürlik prosesleriniň köpüsi 23:59:60 "görmeli" däldir.
Smear. Käbir gurşawlar böküşden gaça durmak üçin düzedişleri penjirä ýumşak paýlaýarlar (mysal üçin 12 sagatdan ±).
Amal: Tutuş klaster üçin ýeke-täk wagt syýasatyny (NTP/smir) utgaşdyryň, meta-maglumatlara giriň we runbook-da saklaň.


5) Meýilleşdirijiler we cron-patternler

"Ýönekeý cron" howpy. Klassiki cron DST we IANA zolaklaryny bilmeýär. Meýilnama zolaga birikdirilen hereketlendirijileri ulanyň (Kwartz synpy, Bulut Scheduler hyzmatlary, Kubernetes CronJob dolandyryjy/dolandyryş arkaly).
Meýilnamalaryň materiallaşdyrylmagy. Ygtybarlylyk üçin UTC-de indiki N uçuşlary materiallaşdyryň (mysal üçin 7-30 gün), cursor saklaň we DST-de syýasaty kesgitläň.
Wezipeleriň idempotentligi. Ключ deduplication: `(job_id, scheduled_at_utc)`; gaýtadan başlamak zyýanly täsirleri köpeltmeli däldir.
Sagadyň süýşmegi. Uzak arakesmelerde/hadysalarda catch-up ýa-da skip etmek barada karar beriň. per-job.


6) Teswirnamalardaky we nobatlardaky wagt

Waka tekerleri (Kafka/Pulsar). 'event _ time' we 'ingest _ time' aýratynlykda saklaň. Retrospektiv hasaplamalar üçin 'event _ time' ulanyň.
Idempotent sarp edijiler. Gaýtadan eltilende, partiýanyň üýtgemegine däl-de, wakanyň açaryna we 'event _ time' -a gönükdiriň.
Penjireleri tertipläň. "Dükanyň ýerli wagty boýunça 24 sagadyň dowamynda" penjirelerini belli bir senede belli bir zonanyň ýerli düzgünlerinden alnan UTC aralyklary hökmünde hasaplaň.


7) Loglar, yzarlamalar, metrikler

Bitewi taýmzon standartı: UTC-daky ähli tehniki loglar we metrikler ('Z' bilen). Dashbordlarda görkezmek - ulanyjy üçin lokallaşdyrylan.
Yzarlamalar: 'trace _ start _ utc', 'duration _ ms' -ni monoton sagatda geçiriň. "Diwar" wagtyny hiç haçan aýyrmaň.
Iş hasabatlary: UTC boýunça däl-de, domen zolagynda "gije-gündizi" düzüň (mysal üçin, 'Europeewropa/Pari Paris' fransuz salgydy üçin). Anyk resminamalaşdyryň.


8) Ulanyjy profilleri we mazmuny

Профиль: `preferred_timezone` (IANA), `preferred_locale`, `currency`, `week_start` (Mon/Sun).
Multizon häsiýetleri: toparlar/guramalar üçin gatnaşyjynyň şahsy zolagyna garamazdan "domen zolagyny" (mysal üçin, dükan/edara görnüşli tarap) saklaň.
Bellikler: ulanyjynyň zolagynda "asuda sagatlary" hasaplaň; DST howpsuzlygy bilen UTC penjiresinden iberiň.


9) Anti-patternler

Diňe ýerli wagty süýşürilmezden saklamak.
IANA identifikatorynyň ýerine '+ hh: mm' -ni gaty tikiň.
Dowamlylygy iki sany "diwar" wagtynyň tapawudy bilen sanamak.
Zolaklar/DST goldawsyz cron boýunça meýilleşdiriň.
Standart ýerli zonany talap edende, UTC-de "her gün" analitika etmek.
Zonanyň kadalarynyň üýtgemezligini çaklamak (ýurtlar wagt syýasatyny üýtgedýärler).


10) Wagt synagy

Gözegçilik edilýän sagat. Kesgitlenen synaglar üçin "sagady" koda (Clock/TimeProvider) sanjym ediň.

Halatlar toplumy:
  • Tomus/gyş wagtyna geçmek (goşa/geçilmezlik).
  • Ulanyjynyň zolaklaryň arasynda hereket etmegi ('preferred _ timezone' çalyşmagy).
  • Tzdb düzgünlerini üýtgetmek (bazany täzelemek - regressiýa synaglary).
  • NTP göçürmeleri, wakalaryň gijikdirilmegi.
  • Fazzi synaglary. Tötänleýin zolaklar, seneler, formatlar; salgylanma kitaphanasy bilen deňeşdirmek.

11) Gözegçilik etmek we peýdalanmak

Alertler: NTP-iň sinhronizasiýasy, tzdb täzelenmesiniň yza galmagy, DST-de "ýerine ýetirilmedik" cron-meseleleriň partlamalary.
Daşbordlar: wakalary zolaklar/ýerli günler boýunça paýlamak; catch-up/skip hasaplaýjylary.
Runbook: ýurisdiksiýada wagt düzgünlerini üýtgedeniňizde proseduralar; tzdb täzeleniş tertibi; meýilnamalaryň eýeleri bilen aragatnaşyk.


12) Satuw patternleri

Time Normalization Gateway. RFC 3339 UTC-e gelýän wagty kadalaşdyrýan, zonalary tassyklaýan (IANA) we konteksti doldurýan inçe hyzmat.
Local-Day Builder. "Ýerli gün" we zonadan DST-i göz öňünde tutup, takyk UTC-serhetleri '[start _ utc, end_utc)' gurýan kitaphana/hyzmat.
Schedule Materializer. Düzgünleri "ýerli söz + zona" görnüşinde saklaýan meýilnamalaşdyryjy, UTC-de geljekki ýagdaýlary materiallaşdyrýar we gapma-garşylyklary/geçişleri dolandyrýar.
Dual-Timestamp Events. 'occurred _ at _ utc', 'wall _ time _ local', 'timezone' meýdanlary. UI üçin ýerli, ulgamlar üçin UTC çalşylýar.


13) Arhitektoryň çek-sanawy

1. UTC hemme ýerde saklanýarmy?
2. IANA zonasy we domen maglumatlary syýasaty barmy?
3. Meýilnamalaşdyryjy DST-e düşünýärmi we UTC-de zatlary materiallaşdyrýarmy?
4. Logi/metrika - UTC; hasabatlar - domen zolagynda?
5. Wagt/retrailer - monoton sagatda?
6. Tzdb täzelenmesi awtomatlaşdyrylyp, gözegçilik edilýärmi?
7. Synaglar düzgünleri üýtgetmegi, goşa/minutlary ýitirmegi öz içine alýarmy?


14) Kiçi reseptler (psevdokod)

Lokal "iş gününi" UTC aralygyna öwürmek


function localDayToUtcInterval(dateLocal, tz):
startLocal = combine(dateLocal, 00:00) in tz endLocal  = startLocal + 1 day startUtc  = toUTC(startLocal) // учитывает DST endUtc   = toUTC(endLocal)
return [startUtc, endUtc)

Gaýtalanýan tertibi materiallaşdyrmak


inputs: rrule, tz, windowStartUtc, windowEndUtc for each localOccurrence in expand(rrule, tz, [windowStartUtc, windowEndUtc] projected to tz):
emit occurrence { scheduled_at_utc = toUTC(localOccurrence), tz }

Meseläni başlamak üçin idempotent açary


dedupe_key = hash(job_id + scheduled_at_utc.toString())

15) Howpsuzlyk we laýyklyk

Audit: Ulanyjy talaplaryny ("maňa Lima wagty 23: 00-a çenli wada berildi") serwer hronologiýasy bilen utgaşdyrmak üçin iki wagt proýeksiýasyny (UTC we ýerli) saklaň.
Düzgünleşdiriji: hasabat döwürleri talap edilýän zolaklarda (salgytlar, jogapkär oýun çäkleri, "sagatlar boýunça" marketing çäklendirmeleri) emele gelýär.
Gizlinlik: wagt zolagy - şahsy sazlamalar, ýöne takyk kesgitlemeýän maglumatlar; umumy gizlinlik syýasatynyň çäginde gaýtadan işläň.


Netije

"Wagtyň duýgurlygy" senäniň formaty barada däl-de, jogapkärçiligiň binagärlik çäkleri barada: nirede saklamak, nirede üýtgetmek, nädip meýilleşdirmek we nädip dogrudygyny subut etmek. UTC derejesinde birleşdirmek, aýdyň IANA zolaklary, başarnykly meýilleşdirijiler, goşa wagtlar we monotoniki sagatlar wagty hadysalaryň çeşmesinden öňünden aýdyp boljak infrastruktura hyzmatyna öwürýär.


"Binagärlik we teswirnamalar" bölüminiň degişli maddalary (maslahat berilýär):
  • GeoDNS we geo-marşrut; Ýüküň deňagramlylygy; Wakalaryň wagt bilen syn edilmegi; Cron-patternler we programmalaryň materiallaşdyrylmagy; Sebitleýin çäklendirmeler we ýerli hasabat günleri.
Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.