GH GambleHub

API аркылуу маалыматтарды синхрондоштуруу

1) Эмне үчүн синхрондоштуруу керек жана кандай максаттар

Домендердин шайкештиги: профиль, капчык, каталогдор, лимиттер, KYC.
Кыскартуу лагдары: дээрлик оор жараяндар үчүн реалдуу убакыт (төлөмдөр, бонустар).
Туруктуулук: окуяларды жоготпостон тармак/провайдердин үзгүлтүккө учурашы.
Экономика: Delta жана пакеттөө менен egress/CPU азайтуу.

Ийгиликтин көрсөткүчтөрү: булак менен керектөөчүнүн ортосундагы lag (s), freshness, дубликаттардын үлүшү, чыр-чатактын пайызы, GB/саат синк баасы.

2) синхрондоштуруу моделдер

2. 1 Pull (polling)

Кардар интервал менен өзгөртүүнү талап кылат.

Артыкчылыктары: жөнөкөйлүк, жүктү көзөмөлдөө.
Кемчиликтери: лаг, "бош" сурамжылоолор, өзгөрүүлөрдүн жогорку ылдамдыгы менен өтүп кетүү коркунучу.
Жакшыртуу: If-Modified-Since, Etag/If-None-Match, change_token.

2. 2 Push (webhooks/events)

Булак окуяларды алуучуга жүктөйт.

Артыкчылыктары: дээрлик реалдуу убакыт, үнөмдөө сурамжылоолор.
Минустар: Retray, deduplication, коопсуздук (кол, mTLS) менен жеткирүү керек.
Талаптар: демпотенттик Консумерлер, экспоненциалдык backoff, replay.

2. 3 CDC/агымы (Change Data Capture)

Транзакциялардын логунан/окуялардын журналынан (Kafka, Debezium) өзгөрүүлөрдү тартуу.

Артыкчылыктары: толуктугу, тартиби, масштабы.
Кемчиликтери: татаалдыгы, операциялардын түрлөрүн көзөмөлдөө керек (insert/update/delete/tombstone).

2. 4 гибрид

Webhooks катары "триггер", polling - fallback жана reconciliation үчүн.

3) Инкременталдык дельта

3. 1 Watermark (убакыт белги)

Кардар 'last _ seen _ ts' сактайт жана 'updated _ at> watermark' деп сурайт.

Тобокелчиликтер: Саат Drift - UTC жана NTP колдонуу; тосмо терезе (overlap) 1-2 мин жана ID + version боюнча дедуп алып.

3. 2 Change Token / Cursor

Туруктуу ырааттуулук токени: '? cursor = eyJvZmZzZXQiOjEwMDB9'.

Артыкчылыктары: тартипти өзгөртүүгө туруктуулук, масштабдуулугу.
Талаптар: өчпөс курсорлор, TTL жана коопсуз replay.

3. 3 саны Offset (auto-increment)

`id > last_id`. Жөнөкөй, бирок ырааттуулук менен шардалоодо жана "тешиктерде" бузулат.

4) Чоң тандоолордун пагинациясы

Keyset/cursor (жакшыраак): '? after = cursor & limit = 1000' - өзгөрүүлөргө туруктуу.
Offset/limit - жөнөкөй, бирок кымбат жана жылыштарга дуушар болот.
Дайыма stable sort key (мисалы, '(updated_at, id)').

Курсор менен жооп мисал:
json
{
"items": [ { "id": "u_1", "updated_at": "2025-11-03T16:59:10Z" } ],
"next_cursor": "eyJ1cGRhdGVkX2F0IjoiMjAyNS0xMS0wM1QxNjo1OToxMFoifQ==",
"has_more": true
}

5) Өзгөртүү семантикасы: upsert, merge, delete

5. 1 Upsert/merge

'PUT/resource/{ id}' - толук алмаштыруу.
'PATCH/resource/{ id}' - жарым-жартылай жаңыртуу.
Idempotency 'Idempotency-Key' бардык write үчүн.

5. 2 өчүрүүлөр

Soft delete ('deleted = true', 'deleted _ at') - тарыхты сактоо; синк tombstone берет.
Hard delete - жоголуунун алдында 'deleted' иш-чарасын бериңиз.

Мисал tombstone:
json
{ "id":"u_1", "event":"deleted", "deleted_at":"2025-11-03T17:00:00Z" }

6) Версияларды жана атаандаштыкты көзөмөлдөө

6. 1 ETag/If-Match (оптимисттик блоктор)

Окуу кайтып келет 'ETag: "v123"'.
'If-Match менен жаңыртуу: "v123"' - "жоголгон жаңыртуулардан" коргоо.
Конфликтте - 409 Conflict менен 'error _ code: "CONFLICT_VERSION"'.

6. 2 Жазууларды чыгаруу

'version '/' updated _ at' талаасы - дельта жана дедупликация боюнча.

6. 3 Чыр-чатактар

Саясат: last-write-wins, server-wins, merge-strategy боюнча талаалар (мисалы, суммасы → кошумча, желектер → булак артыкчылыгы).

7) Заказ жана дедупликация

7. 1 жеткирүү тартиби

Кепилдиктер: at-least-once plus idempotentity → де-факто стандарт.
Маанилүү акча агымдары үчүн - idempotency store аркылуу exactly-once таасирлери.

7. 2 Демпотенттик ачкычтары

Домен талааларынын курамы: 'source _ id' event _ type 'sequence'.
TTL сактоо 24-72 саат (же SLA менен көбүрөөк).

7. 3 Дедупликация

акыркы колдонулган version/seq кабыл сактаңыз; эскилерин таштаңыз.

8) кайталоо, убакыт, backoff

Retriable: 5xx/429/408/убакыт; Non-retriable: 400/401/403/404/409/422/410/412.
экспоненциалдуу backoff + jitter: 1s, 2s, 4s... 30-60s чейин.
Retry-After 429/503 үчүн урматтоо.
Кардар убакыт: 3-5s байланыш, жалпы суроо-талап 10-30s; аракеттердин жалпы лимити 3-6.

9) Лагдарды көзөмөлдөө жана SLA

9. 1 SLI/SLO

SLI Lag: 'occurred _ at' жана 'керектөөчүгө колдонулган' ортосунда медианалык/p95 лаг.
SLO: мисалы, 'p95 lag ≤ 60s (28d)', "жоголгон окуялардын үлүшү = 0", "дубликаттардын үлүшү ≤ 0. 01%».
Error Budget: Releases/эксперименттер сарпталат.

9. 2 Метрика

`sync_lag_seconds`, `events_received_total`, `events_applied_total`, `duplicates_total`, `conflicts_total`, `retries_total`, `backlog_size`, `cursor_advance_rate`.

10) Reconciliation (салыштыруу) жана backfill

Күндүзгү/сааттык текшерүүлөр: терезелер боюнча жалпы көрсөткүчтөр/хэштер.
API салыштыруу: 'GET/reconciliation? from =... & to =... 'контролдук сумманы жана айырмачылыктарды кайтарат.
Backfill: коопсуз DDOS булагы жок, курсор менен пакеттерде тарыхый маалыматтарды жүктөө; лимиттерди сактаңыз.

11) Схемалар жана мисалдар

11. 1 Webhook окуялар (signed)

json
{
"event": "user. updated",
"id": "evt_01HX",
"occurred_at": "2025-11-03T18:00:05Z",
"sequence": 123456,
"data": { "id": "u_1", "email": "a@b. com", "updated_at": "2025-11-03T18:00:02Z" }
}
Аталыштары:
  • `X-Signature: sha256=`
  • `X-Event-Id: evt_01HX`
  • `X-Retry: 0..N`

11. 2 Инкременталдык үлгү (polling)

`GET /v1/users? updated_after=2025-11-03T17: 58:00Z&cursor=...&limit=1000`

11. 3 Idempotent upsert


POST /v1/users
Idempotency-Key: upsert-u_1-20251103T1800Z
{ "id":"u_1","email":"a@b. com","version":124 }
→ 201/200 (stable)

12) Коопсуздук жана комплаенс

Auth: OAuth2 scopes/JWT; синк каналдары үчүн - mTLS талабы боюнча.
Кол тамгалар: HMAC Webhook аталыштары, сырларды айлантуу.
PII-минималдаштыруу, блогдордо жашыруу; GDPR/DSAR: чыгаруу/алып салуу.
RBAC/ABAC: Тенант/уюмдарга кирүү, катуу квоталар.

13) Байкоо жана Логи

Лейблы: `env`, `service`, `tenant`, `source`, `cursor`, `seq`, `event_type`.
Корреляция: 'trace _ id' кириштен → логиге жана жолдорго колдонуңуз.
Dashboard: lag, backlog, курсор ылдамдыгы, түрлөрү боюнча каталар, 429/5xx, наркы (egress/мин).

14) FinOps: синхрондоштуруу наркы

пакеттөө (batch size 100-1000) + кысуу (gzip/br).
Өзгөрбөгөн беттер үчүн кэшдоо жана ETag.
Slim Payload's: гана өзгөргөн талаалар, суроо-талап боюнча толук ресурстук шилтеме.
backfill үчүн параллелизм жана "түнкү терезелер" чеги.

15) тестирлөө жана сапаты

15. 1 Келишимдер жана терс учурлар

JSON схемаларын, милдеттүү талааларды, туруктуулукту тастыктаңыз 'error _ code'.
Тесттер: out-of-order, дубликаттар, окуяларды өткөрүп жиберүү, версия чыр-чатак, 429/5xx.

15. 2 Chaos/оюндар

Инъекциялар: тармактык кечигүүлөр, 10-30% окуялар, reorder.
Критерийлер: тартипти/бүтүндүгүн сактап? жоготуулар жок? SLO ичинде артта?

16) Киргизүү чек-тизмеси

  • Модель тандалып алынган (push/pull/hybrid) жана чындык булагы.
  • Инкременталдык дельта: watermark же cursor/token.
  • Pagination: туруктуу сорттору менен cursor/keyset.
  • Idempotency-store, ачкычтары жана TTL; дедуп '(id, version/seq)'.
  • ETag/If-Match жана чыр-чатак саясаты (LWW/server-wins/merge).
  • Retry/backoff/jitter, урматтоо 'Retry-After'.
  • lag/backlog/duplicates/conflicts, дашборддор жана алерталар.
  • Reconciliation API + күнүмдүк текшерүү.
  • Коопсуздук: OAuth2/JWT, Webhook кол, mTLS, PII-саясат.
  • FinOps: batch + compression, параллелизм чектери, egress-квота.
  • тесттер топтому: reorder, duplicates, outages, backfill.

17) Ишке ашыруу планы (3 итерация)

1. MVP (1-2 жума):

Cursor-pagination, watermark-дельта, dempotent upsert, lag/backlog, retry + backoff негизги метриктер.

2. Scale (2-3 жума):

Webhooks сыяктуу триггер + polling-fallback, HMAC кол коюу, reconciliation, ETag/If-Match, дашборддор жана бурн-алерттерди лагда.

3. Pro (3-4 жума):

CDC/агымы (Kafka/Debezium) ысык домендер үчүн, auto-backfill, DR Scripts, FinOps-оптималдаштыруу (batch/brotley), SLA lag жана отчеттуулук.

18) Mini-FAQ

Эмне тандоо керек: watermark же cursor?
Cursor/keyset reorder жана масштабда туруктуу; watermark баштоо үчүн жеңил, бирок overlap жана дедуп кошуу.

exactly-once керек?
Жалпысынан алганда, кымбат. Practice - at-least-once + idempotentity; exactly-once - акча таасири үчүн гана.

Чыр-чатактарды кантип азайтуу керек?
ETag/If-Match колдонуңуз, чек ара тилкелерин долбоорлоңуз, "жашыруун" терс таасирлерден качыңыз.

Жыйынтык

Ишенимдүү синхрондоштуруу - бул инкременталдык дельталар + туура пагинация + байкоо, жаркылдоо жана үнөмдүү транспорт менен күчөтүлгөн версияларды көзөмөлдөө жана көзөмөлдөө. Ылайыктуу моделди (push/pull/CDC) тандап, SLOну лагга бекитип, чыр-чатак саясатын жана "кир" сценарийлердин тесттерин киргизиңиз - ошондо сиздин маалымат алмашууңуз алдын ала айтууга болот, туруктуу жана үнөмдүү болот.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.