GH GambleHub

API를 통한 데이터 동기화

1) 동기화가 필요한 이유와 목표는 무엇입니까

도메인 일관성: 프로필, 지갑, 디렉토리, 한계, KYC.
지연 시간 단축: 중요한 프로세스 (지불, 보너스) 에 대한 거의 실시간.
탄력성: 이벤트 손실없이 네트워크/공급자 중단 경험.
경제학: 델타 및 패키지 화를 통해 출구/CPU를 최소화하십시오.

성공 지표: 소스와 소비자 사이의 지연, 신선도, 중복 비율, 충돌 비율, GB/hour of blue.

2) 동기화 모델

2. 1 풀 (폴링)

클라이언트는 간격을두고 변경을 요청합니

장점: 단순성, 부하 제어.
단점: 지연, "빈" 여론 조사, 높은 변화율로 건너 뛸 위험.
개선 사항: If-Modied-Super, Etag/If-None-Match는 _ tock을 변경합니다.

2. 2 푸시 (웹 후크/이벤트)

출처는 이벤트를 수신자에게 보내줍니다.

장점: 거의 실시간의 여론 조사 경제.
단점: 배송, 중복 제거, 보안 (서명, mSL) 이 포함 된 배송이 필요합니다.
요구 사항: 엄청난 소비자, 지수 백오프, 재생.

2. 3 CDC/스트리밍 (데이터 캡처 변경)

트랜잭션 로그/이벤트 로그 (Kafka, Debezium) 에서 변경 사항을 스냅 샷.

장점: 완전성, 순서, 규모.
단점: 복잡성, 작업 유형 (삽입/업데이트/삭제/묘비) 을 제어해야합니다.

2. 4 하이브리드

웹 후크는 "트리거", 폴백 및 조정을 위해 폴링됩니다.

3) 증분 델타

3. 1 워터 마크 (타임 스탬프)

클라이언트는 'last _ seen _ ts' 를 저장하고 '업데이트 된 _ at> 워터 마크' 를 요청합니다.

위험: 시간 드리프트-UTC 및 NTP 사용; 1-2 분 동안 겹치는 창을 가져 와서 ID + 버전으로 디드 업하십시오.

3. 2 토큰/커서 변경

안정적인 시퀀스 토큰: '? 커서 = eyJvZmZzXQiOjEwMDB9 '.

장점: 순서를 변경하기위한 복원력, 규모.
요구 사항: 고갈되지 않은 커서, TTL 및 안전한 재생.

3. 3 번호가 매겨진 오프셋 (자동 증가)

'id> last _ id'. 간단하지만 시퀀스에서 샤딩하고 "구멍" 할 때 분해됩니다.

4) 큰 샘플 페이지 매김

키셋/커서 (선호): '? = 커서 및 한계 = 1000 '-변경시 안정적입니다.
오프셋/제한-간단하지만 비싸며 변경 될 수 있습니다.
항상 안정적인 정렬 키 (예: '(업데이트 된 _ at, id)') 를 지정합니다.

커서 응답의 예:
json
{
"items": [ { "id": "u_1", "updated_at": "2025-11-03T16:59:10Z" } ],
"next_cursor": "eyJ1cGRhdGVkX2F0IjoiMjAyNS0xMS0wM1QxNjo1OToxMFoifQ==",
"has_more": true
}

5) 의미론 변경: upsert, 병합, 삭제

5. 1 업저트/합병

'PUT/resource/{ id}' 는 완전한 대체품입니다.
'PATCH/resource/{ id}' - 부분 업데이트 (패치와 유효성 검사).
모든 글에 대한 'Idempotency-Key' 의 이념성.

5. 2 삭제

소프트 삭제 (필드 '삭제 = 참', '삭제 _ at') - 기록 저장; 싱크대는 묘비를 준다.
하드 삭제-사라지기 전에 이벤트 '삭제' 를 제공합니다.

묘비의 예:
json
{ "id":"u_1", "event":"deleted", "deleted_at":"2025-11-03T17:00:00Z" }

6) 버전 제어 및 경쟁

6. ETag/If-Match 1 개 (낙관적 잠금 장치)

반품 'ETag: "v123"' 을 읽으십시오.
'If-Match: "v123" 에서 업데이트-" 잃어버린 업데이트 "에 대한 보호.
충돌의 경우-409 '오류 _ 코드와의 충돌: "CONFLICT _ VERSION"'.

6. 2 기록 수정

필드 '버전 '/' 업데이트 된 _ at' -델타 계산 및 중복 제거.

6. 3 충돌

정책: 마지막 쓰기, 서버 승리, 필드 별 병합 전략 (예: 합계 → 첨가제, 플래그 → 소스 우선 순위).

7) 주문 및 중복 제거

7. 1 배송 절차

보장: 적어도 한 번은 + demmpotency → 사실상 표준.
중요한 현금 흐름의 경우-demempotency 상점을 통한 정확히 한 번의 효과.

7. 2 개의 이데올로기 키

도메인 필드의 구성: 'source _ id' 이벤트 _ 유형 '시퀀스'.
저장 TTL 24-72 시간 (또는 SLA 이상).

7. 3 중복 제거

수신기에 적용된 마지막 버전/seq를 저장하십시오. 오래된 것을 떨어 뜨립니다.

8) 반복, 타임 아웃, 백오프

검색 가능: 5xx/429/408/타임 아웃; 검색 불가: 400/401/403/404/409/422/410/412.
지수 백오프 + 지터: 1, 2, 4... 30-60 년대까지.
429/503에 대한 재시도 후 존중.
클라이언트 타임 아웃: 연결 3-5, 일반 요청 10-30; 시도의 총 한계 3-6.

9) Lags and SLA 컨트롤

9. SLI/SLO 1 개

SLI Lag: 'arsed _ at' 와 '소비에 적용되는' 사이의 중간/p95 지연.
SLO: 예를 들어, 'p95 지연 60s (28d)', "잃어버린 이벤트의 공유 = 0", "중복의 공유 0입니다. 01%».
오류 예산: 릴리스/실험에 사용하십시오.

9. 2 메트릭

'sync _ lag _ secons', 'events _ resened _ total', 'ements _ apped _ total', 'complete _ total', 'retries _ total', 'backlog _ size', 'curder _ pression _ rate'.

10) 화해 및 백필

주간/시간 조정: 총계/창 해시.
조정 API: 'GET/조정? =... & to =... '체크섬 및 분산을 반환합니다.
백필: DDOS 소스없이 커서가있는 배치로 히스토리 데이터를 안전하게 다시로드합니다. 한계를 관찰하십시오.

11) 계획과 예

11. 웹 후크 이벤트 1 개 (서명)

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- 시그니처: sha256 = '
  • 'X-Event-ID: evt _ 01HX'
  • 'X- 재시도: 0.. N'

11. 2 증분 샘플링 (폴링)

'GET/v1/사용자? 업데이트 된 _ after = 2025-11-03T17: 58: 00Z & curder =... & limited = 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 헤드 라인, 회전 비밀.
로그에 마스킹하는 PII 최소화; GDPR/DSAR 업로드/삭제.
RBAC/ABAC: 세입자/조직 액세스, 엄격한 할당량.

13) 관찰 가능성 및 로그

확인: 'env', 'service', 'tentin', 'source', 'curder', 'seq', 'event _ style'.
상관 관계: 입력 → 의 'trace _ id' 는 로그 및 추적에 적용됩니다.
대시 보드: 지연, 백 로그, 커서 속도, 유형 오류, 429/5xx, 비용 (출력/분).

14) FinOps: 동기화 비용

배치 (배치 크기 100-1000) + 압축 (ggip/ml).
변경되지 않은 페이지에 대한 캐싱 및 ETag.
얇은 페이로드: 필드 만 변경되었으며 주문형 전체 리소스에 대한 링크입니다.
백필에 대한 동시성 제한 및 "야간 창".

15) 테스트 및 품질

15. 1 개의 계약 및 부정적인 경우

JSON 체계, 필요한 필드, 안정성 '오류 _ 코드' 를 확인하십시오.
테스트: 고장, 중복, 건너 뛰기 이벤트, 버전 충돌, 429/5xx.

15. 카오스/게임 2 개

주사: 네트워크 지연, 이벤트의 10-30% 감소, 재주문.
기준: 순서/무결성 유지? 손실이 없습니까? SLO 내에서 지연?

16) 구현 점검표

  • 선택된 모델 (푸시/풀/하이브리드) 및 진실의 원천.
  • 증분 델타: 워터 마크 또는 커서/토큰.
  • Pagination: 안정적인 등급의 커서/키셋.
  • Idempotency-store, 키 및 TTL; '(id, 버전/seq)' 로 정리하십시오.
  • ETag/If-Match 및 충돌 정책 (LWW/서버 승리/병합).
  • 시작/백오프/지터, '시작 후' 를 존중하십시오.
  • 메트릭스 지연/백 로그/복제/충돌, 대시 보드 및 경고.
  • 조정 API + 일일 조정.
  • 보안: OAuth2/JWT, 웹 후크 서명, mSL, PII 정책.
  • FinOps: 배치 + 압축, 동시성 한계, 출구 할당량.
  • 테스트 제품군: 재주문, 중복, 정전, 백필.

17) 구현 계획 (3 회 반복)

1. MVP (1-2 주):

커서 페이지 매김, 워터 마크 델타, demempotent upsert, 기본 지연/백 로그, 재 시도 + 백오프 메트릭.

2. 규모 (2-3 주):

웹 후크는 트리거 + 폴링 폴백, HMAC 서명, 조정, ETag/If-Match, 대시 보드 및 지연에 의한 화상 경보로 사용됩니다.

3. 프로 (3-4 주):

핫 도메인, 자동 백필, DR 스크립트, FinOps 최적화 (배치/브로 틀리), 지연 및보고를위한 SLA 용 CDC/스트리밍 (Kafka/Debezium).

18) 미니 -FAQ

선택할 수있는 것: 워터 마크 또는 커서?
커서/키셋은 재정렬 및 스케일에 더 강합니다. 워터 마크는 시작하기가 더 쉽지만 중복과 데드 업을 추가합니다.

정확히 한 번만 필요합니까?
일반적으로 비싸다. 연습-적어도 한 번은 + demempotency; 정확히 한 번만-화폐 효과에만 해당됩니다.

갈등을 최소화하는 방법?
필드별로 병합 된 ETag/If-Match를 사용하고 "숨겨진" 부작용을 피하십시오.

합계

신뢰할 수있는 동기화는 관찰 성, 반짝임 및 경제적 인 전송에 의해 향상된 증분 델타 + 올바른 페이지 매김 + demempotency 및 버전 제어입니다. 올바른 모델 (푸시/풀/CDC) 을 선택하고 지연에 SLO를 고정하고 충돌 정책과 더러운 시나리오 테스트를 구현하면 데이터 교환이 예측 가능하고 지속 가능하며 비용 효율적이됩니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.