스트리밍 및 스트리밍 분석
1) 목적과 가치
스트리밍 회로는 즉시 의사 결정을 제공합니다
사기 방지/AML: 예금 구조, 속도 공격, 공급자의 이상 식별.
책임있는 게임 (RG): 한계 초과, 위험 패턴, 자기 배제.
작업/SRE: SLA 저하, 오류 버스트, 초기 사고 신호.
제품/마케팅: 개인화 이벤트, 미션/퀘스트, 실시간 세분화.
거의 실시간으로보고: GGR/NGR 쇼케이스, 작동 패널.
목표 특성: p95 엔드 투 엔드 0. 5-5 초, 완전 99 이상. 5%, 관리 가치.
2) 참조 아키텍처
1. 소화/가장자리
'/이벤트/배치 '(TH/2/3), gRPC, OTel 수집기.
체계 검증, 중복 방지, 지리 라우팅.
2. 이벤트 버스
Kafka/Redpanda ('user _ id/세입자/시장' 으로 분할).
"파손 된" 메시지에 대한 보존 3-7 일, 압축, DLQ/" 검역 ".
3. 스트리밍
Flink/Spark 구조화 된 스트리밍/빔.
고마운 진술, CEP, 워터 마크는 지연 시간, 중복 제거를 허용했습니다.
농축 (Redis/Scylla/ClickHouse-Lookup), 타임 아웃이있는 비동기 I/O.
4. 서빙/운영 디스플레이
분/초 집계 및 대시 보드를위한 ClickHouse/Pinot/Druid.
스코어링 모델의 피처 스토어 (온라인).
경고 주제 → SOAR/발권/웹 후크.
5. 장기 보관 (레이크 하우스)
청동 (생), 은 (깨끗한), 금 (서브) -Parquet + Delta/Iceberg/Hudi.
재생/백 테스트, 시간 여행.
6. 관찰 가능
파이프 라인 메트릭, 트레이싱 (OTel), 로그, 계보.
3) 계획 및 계약
스키마 우선: 각 이벤트에서 JSON/Avro/ProtoGrapi + 레지스트리, '스키마 _ 버전'.
진화: 역 호환-새로운 널링 가능 필드; 속보 - '/v2 '+ 이중 출판.
필요한 필드는 '이벤트 _ time' (UTC), '이벤트 _ id', 'trace _ id', '사용자입니다. pseudo _ id ',' market ',' source '.
4) Windows, 워터 마크 및 최신 데이터
창:- 텀블링, 호핑, 세션.
- 워터 마크: 이벤트 타임 "지식" 임계 값; 예: 2-5 분
- 늦은 데이터: 발행 전 조정, "늦게 = 참", DLQ 지연이 심합니다.
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream.payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
5) 고마운 집계 및 CEP
키: 'user _ id', 'diche _ id', 'payment. 계정 _ id '.
상태: 중복 제거를위한 슬라이딩 합/카운터, 세션, 블룸 필터.
CEP 패턴: 구조화 (<임계 값, 3 배, T 창), 장치 스위치, RG 피로.
python if deposits.count(last=10MIN) >= 3 and deposits.sum(last=10MIN) > THRESH and all(d.amount < REPORTING_THRESHOLD):
emit_alert("AML_STRUCTURING", user_id, window_snapshot())
6) 정확한 한 번, 순서 및 demmpotence
버스: 적어도 한 번은 + 파티션 키가 로컬 주문을 제공합니다.
이데올로기: '이벤트 _ id' + dedup 상태 (TTL 24-72 h).
싱크: 거래 커밋 (2 상) 또는 upsert/merge-demempotency.
전송/받은 편지함: OLTP의 도메인 이벤트 게시 보장.
7) 실시간 농축
조회: Redis/Scylla (RG 제한, KYC 상태, BIN → MCC, IP → Geo/ASN).
비동기 호출: 타임 아웃 및 폴백 ("알 수 없음") 이있는 제재/APP API.
FX/시간대: 금액과 현지 시장 시간의 정규화 ('fx _ source', 'tz').
8) 서빙 및 실시간 상점
ClickHouse/Pinot/Druid: 분/초당 집계, 구체화 된보기.
골드 스트림: 작동 테이블 GGR/RG/AML, SLA 지연 1-5 분.
API/GraphQL: 대시 보드 및 외부 통합을위한 낮은 대기 시간.
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream.game_events
GROUP BY ts_min, market, provider_id;
9) 관찰 및 SLO
SLI/SLO (랜드 마크):- p95 섭취 → 경고
- 그림% 1개의 캡션을 편집했습니다. 5%.
- 스키마 오류 1%; 'trace _ id' 를 가진 이벤트의 비율은 98% 입니다.
- 서비스 가용성을 99 이상으로 스트리밍하십시 9%.
- 파티/주제 지연, 바쁜 시간 운영자, 주 규모.
- 깔때기 "sobytiye → pravilo → key", "hot" 키의 맵, 늦은 비율.
- 비용: 비용/GB, 비용/쿼리, 체크 포인트/재생 비용.
10) 개인 정보 보호 및 준수
PII 최소화: ID 가명화, 필드 마스킹, PAN/IBAN 토큰 화.
데이터 상주: 지역 파이프 라인 (EEA/UK/BR), 개별 암호화 키.
법적 운영: 다운 스트림 상점의 DSAR/RTBF, 사례/보고서에 대한 법적 보류.
감사: 로그 액세스, 변경되지 않은 솔루션 아카이브.
11) 경제와 생산성
키 및 샤딩: "핫" 키 (소금/복합 키) 를 피하십시오.
조건: 합리적인 TTL, 스냅 샷, 튜닝 RocksDB/백엔드 상태.
준비: 시끄러운 스트림의 선행 감소.
샘플링: 중요하지 않은 지표 (트랜잭션/규정 준수가 아님) 에 유효합니다.
충전: 테마/작업, 할당량 및 팀 할당 예산.
12) 스트리밍 DQ (품질)
Ingest-validation (스키마, 에넘, 크기), dedup '(이벤트 _ id, 소스)'.
스트림에서: 완전성/dup 비율/후기 비율, 창 제어 (이중 계산 없음).
반응 정책: 중요한 → DLQ + 경고; 메이저/마이너 → 태그를 지정한 다음 지우십시
최소 규칙 (YAML, 예):yaml stream: payments rules:
- name: schema_valid type: schema severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
- name: dedup_window type: unique keys: [event_id]
window_minutes: 1440
13) 액세스 보안 및 릴리스 제어
RBAC/ABAC: 스레드 읽기, 규칙/모델 변경을위한 별도의 역할.
이중 제어: "2 키" 를 통한 규칙 및 모델 출시.
카나리아/A/B: 어두운 규칙 및 모델 실행, 정밀/리콜 제어.
비밀: KMS/CMK, 정기적 인 회전, 로그의 비밀 금지.
14) 프로세스 및 RACI
R (책임): 스트리밍 플랫폼 (인프라/릴리스), 도메인 분석 (규칙/기능), MLops (점수).
A (책임): 도메인 별 데이터/위험/준수 책임자.
C (컨설팅): DPO/Legal (PII/보존), SRE (SLO/Incidents), 아키텍처.
I (정보): 제품, 지원, 마케팅, 재무.
15) 구현 로드맵
MVP (2-4 주):1. Kafka/Redpanda + 두 가지 중요한 주제 ('결제', '지정').
2. 워터 마크, 중복 제거 및 하나의 CEP 규칙 (AML 또는 RG) 이있는 플링크 작업.
3. ClickHouse/Pinot 쇼케이스 1-5 분, 대시 보드 지연/완성.
4. 인시던트 채널 (webhooks/Jira), 기본 SLO 및 경고.
2 단계 (4-8 주):- 온라인 농축 (Redis/Scylla), Feature Store, 비동기 전망대.
- 코드로서의 규칙 관리, 카나리아 릴리스, A/B.
- DQ 스트리밍, 파이프 라인 지역화, DSAR/RTBF 절차.
- 다중 영역 활성 활성, What-if 재생 시뮬레이터, 임계 값의 자동 보정.
- 거의 실시간으로보고되는 전체 골드 스트림 쇼케이스 (GGR/RG/AML).
- 가치 대시 보드, 청구서, DR 연습.
16) 예 (조각)
Flink CEP - 장치 스위치:sql
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY event_time
MEASURES
FIRST(A.device_id) AS d1,
LAST(B.device_id) AS d2,
COUNT() AS cnt
PATTERN (A B+)
DEFINE
B AS B.device_id <> PREV(device_id) AND B.ip_asn <> PREV(ip_asn)
) MR
카프카 스트림-dem 등원 필터:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}
17) 사전 판매 점검표
- Registry, back-compat 테스트의 계획 및 계약은 녹색입니다.
- 포함 된 워터 마크/허용 된 지연 시간, dedup 및 DLQ.
- 구성 SLO 및 경고 (지연/후기/염색/상태 크기).
- 캐시와 타임 아웃으로 농축, 대체 "알 수 없음".
- 규칙/모델에 대한 RBAC/이중 제어, 모든 변경 사항이 기록됩니다.
- 규칙, 상점 및 런북 문서 및 재생/롤백.
18) 빈번한 실수와 피하는 방법
이벤트 시간을 무시하십시오: 워터 마크가 없으면 메트릭이 "플로트" 됩니다.
중복 없음: 잘못된 경고 및 이중 계산.
핫 키: 파티의 왜곡 → 소금/리 샤딩.
핫 경로의 동기식 프론트 엔드 API: async + 캐시 만.
관리되지 않는 비용: 집계, TTL 상태, 할당량, 비용 대시 보드.
시뮬레이터 부족: "재생" 이없는 롤아웃은 회귀로 이어집니다.
19) 용어집 (브리핑)
CEP-복잡한 이벤트 처리.
워터 마크-이벤트 시간별 창 준비 상태 제한.
허용 된 지연 - 늦은 사건의 허용.
Stateful Operator-상태가 저장된 운영자.
Feature Store-조정 된 기능 서핑 (온라인/오프라인).
20) 결론
스트리밍 및 스트리밍 분석은 계약, 창문 및 워터 마크, 상태 논리 및 CEP, 농축 및 실시간 상점, SLO 및 관찰 가능성, 개인 정보 보호 및 관리 가치 관리 시스템입니다. 설명 된 관행에 따라 플랫폼은 예측 가능한 대기 시간과 비용으로 안정적인 위험 감지기, 운영 패널 및 개인화를받습니다.