Geo blob 복제
Geo blob 복제에 대해 설명합니다.
업로드 , LFS 객체, CI 잡 아티팩트와 같은 blob은 Self-Service Framework 를 사용하여 보조 사이트에 복제됩니다. 동기화 상태를 추적하기 위해, 각 모델은 해당 레지스트리 테이블을 가집니다. 예를 들어, Upload 는 PostgreSQL Geo 추적 데이터베이스 에 Geo::UploadRegistry 를 가집니다. 서비스 간 blob 복제 해피 패스 워크플로우 # 아래 다이어그램에서는 blob의 한 예시로 잡 아티팩트가 사용됩니다. 새 잡 아티팩트 복제 # 기본 사이트: Mermaid 다이어그램 (10줄) 소스 코드 보기 sequenceDiagram participant R as Runner participant P as Puma participant DB as PostgreSQL participant SsP as Secondary site PostgreSQL R->>P: Upload artifact P->>DB: Insert `ci_job_artifacts` row P->>DB: Insert `geo_events` row P->>DB: Insert `geo_event_log` row DB->>SsP: Replicate rows Runner 가 아티팩트를 업로드합니다 Puma 가 ci_job_artifacts 행을 삽입합니다 Puma가 "ID 123을 가진 잡 아티팩트가 업데이트됨"과 같은 데이터를 가진 geo_events 행을 삽입합니다 Puma가 geo_events 행을 가리키는 geo_event_log 행을 삽입합니다 (SSF가 일부 레거시 로직 위에 구축되었기 때문) PostgreSQL 스트리밍 복제가 읽기 복제본에 행을 삽입합니다 PostgreSQL DB 행이 복제된 후 보조 사이트: Mermaid 다이어그램 (14줄) 소스 코드 보기 sequenceDiagram participant DB as PostgreSQL participant GLC as Geo Log Cursor participant R as Redis participant S as Sidekiq participant TDB as PostgreSQL Tracking DB participant PP as Primary site Puma GLC->>DB: Query `geo_event_log` GLC->>DB: Query `geo_events` GLC->>R: Enqueue `Geo::EventWorker` S->>R: Pick up `Geo::EventWorker` S->>TDB: Insert to `job_artifact_registry`, "starting sync" S->>PP: GET <primary site internal URL>/geo/retrieve/job_artifact/123 S->>TDB: Update `job_artifact_registry`, "synced" Geo Log Curs
