GH GambleHub

שער API וניתוב

1) תפקיד שער API בארכיטקטורה

שער API הוא נקודת כניסה אחת למיקרו-רחם. האם הוא:
  • מסלולים מבקשים (על ידי מסלול/כותרות/geo/משקל/גרסה).
  • מגן על ההיקף (TLS/mTLS, WAF, DDOS, מגבלות קצב, AuthN/Z).
  • שולט בתנועה (כנרית/AB, צל/מראה, מפסק מעגל חשמלי, retras, פסקי זמן).
  • תקן פרוטוקולים (REST/gRPC/WebSocket), כותרות, קודים.
  • תצפיות (יומנים, מדדים, עקבות, מתאם).
  • שינוי צורה ואימות (JSON/XML, נורמליזציה, סכימה-אימות).

עבור iGaming, זה גם גיאו-ציות (חסימת גיל/מדינה), ניתוב תשלומים חכם ומדיניות משחקים אחראית על הקצה.

2) אפשרויות ניתוב

מבוסס מסלול: '/api/v1/תשלומים/= תשלומים-svc '.
מבוסס על מארח: 'Eu. אפי. דוגמא. acom eu-edge ',' psp. דוגמא. # psp-proxy '.
מבוסס כותרת: 'X-Client: Partner-A' au backend; קבל: יישום/grpc.
ניתוב Geo: על ידי IP/ASN/country (איסורי GDPR/מקומיים, latency).
משוקלל/קנרי: '90%' על הישן, '10%' על הגרסה החדשה; רול מהיר בחזרה.
ניתוב: JWT. תביעות. tier/like/region '(לדוגמה, high-roller limory).
כשל: נכס-נכס/נכס-אחריות בין מרכז נתונים/ענן ו-PSP.

3) אבטחה היקפית

TLS בכל מקום: TLS 1. 2 + בצד החיצוני, MTLS בפנים (shlyuz↔servisy).
OAuth2/JWT: אימות חתימה, ביקורת ”exp/nbf/aud/scope”, סיבוב JWKS; מטמון אימות עם טי-טי-אל.
חתימת גוף עבור פתקי אינטרנט/תשלומים.
מפתחות API: ללקוחות מערכת; להתרועע עם מכסות/תפקידים.
חוקים בסיסיים (הזרקה, חריגות פרוטוקול), גודל גוף, רשימה מונעת של מדינות.
הגנת DDOS: הגבלת חיבור, עוגיות SYN, הגבלת קצב על IP/key/endpoint.
אפס-אמון: מדיניות חובה (SPIFFE/SPIRE, זהויות שירות), העיקרון של זכויות מינימום.
פרטיות: עריכת PII ביומנים, מיסוך PAN/IBAN, מדיניות אחסון.

4) מגבלות, מכסות והגנה מפני התפרצויות

דלי מזוין, דלי דולף, חלון החלקה קבוע.
גבולות: לכל IP, לכל מפתח, לכל משתמש, לכל מסלול.

אופציונלי:
  • ברסט + מתמשך (למשל. '50 rps פרץ', '10 rps לקיים').
  • Retry-Butch ו Slow-Loris הגנה (לקרוא פסק זמן).
  • מכסה ביום/חודש לשותפים.

5) שינויים ואימות

נרמול כותרות (עקבות, מיקום, זיהוי לקוח).
בקשה/מיפוי תגובה.
Schema validation (OpenAPI/JSON Schema) לפני אימות - כשל 4xx מוקדם.
כיווץ/” קבל-קידוד ”, caching (ראה להלן).

6) מטמון וביצועים

מטמון קצה לספריות, מטא-נתונים ציבוריים, הגדרות (TTL, 'ETag '/' If-None-Match').
מיקרו-מטמון 1-5 S עבור GET חם (מפחית את עומס השיא).
קצר מטמון שלילי (404/ריק) - זהיר.
גידור בקשות ובקשות תחרותיות לשכפול ב p95> סף.

7 פסקי זמן, נסיגות, עמידות

פסקי זמן: חיבור/קריאה/כתיבה בנפרד; ציוני דרך סבירים p95.
רטריי: שיטות אידמפוטנטיות (GET/PUT) עם backoff + jitter; לנסות מחדש-תקציב.
פוסט אידמפוטנטיות: 'Idempotency-Key' + שירות/שער Detuflication.
מפסק מעגל: על ידי שגיאות/latency; חצי משפט פתוח.
מחיצה/בידוד בריכה על ידי מעלה הזרם.

8) ורסינציה ותאימות

שיטות:
  • אורי: "/v1/... (פשוט, אבל ”רועש” נתיבים).
  • כותרת/תוכן-משא ומתן: "קבל: יישום/vnd. ap. v2 + json '.
  • תכונה-דגלים/יכולת שרת - עבור תאימות-שינוי מינורי.

מדיניות: SemVer, חלון תמיכה (לדוגמה, v1 = 12-18 חודשים), לוח זמנים של דפריקציה, תגובות תואמות להרחבות (הוספת שדות אינה נשברת).

9) יכולת תצפית ובקרת איכות

קורלציה: "tracepart'/" x-בקשה-id" נדרש; אנחנו זורקים אותו.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, רוויה, מדדי אירועים מחדש/מעגל.
יומנים: JSON מבני; תחפושת PII; רמות לפי קוד.
דגימת עקבות: יעד בסיסי של 5-10% + עבור שגיאות/איטיות.
SLO/התראות: על ידי מסלולים/לקוחות (uptime, latency, שגיאה).

10) שחרור ניהול תנועה

מתג כחול-ירוק DNS/LB.
קנרית: נתח משקל/מקטעים (אזור, שותף, תפקיד).
Shadow/Mirror: העתק של התנועה לגרסה החדשה מבלי להגיב ללקוח.
כפתור חיסול: דגל לנטרל במהירות את הבעיה במעלה הזרם/תכונה.

11) ניתוב תשלומים חכם (iGaming)

כללי בחירה: גיאו, מטבע, כמות, שיעור סיכון, זמינות, עמלה.
כשל PSP: מעבר אוטומטי ב- "5xx/timeout'.
חוק אותה שיטה: החזרות/יציאות דרך השיטה המקורית - בדוק בקצה.
זיהוי תשלום: מקש על ”ID + כמות + מטבע + מטרה”.
שקיפות ETA: השער מוסיף סטטוסים וגורמים לכישלון (לא קודי PSP).

12) מדיניות צולבת-אזור וציות

גיאו-מסננים: רשימות לבנות/שחורות של מדינות, הגבלות גיל, רכסי IP.
נתונים מקומיים: ניתוב לאשכולות אזוריים (GDPR/local laws).
יומנים ו-TTL: אחסון לפי אזור, אנונימיות אוטומטית.

13) דוגמאות הגדרות

13. 1 NGINX (ניתוב + גבול + כותרות)

nginx http {
map $http_x_request_id $req_id { default $request_id; }
limit_req_zone $binary_remote_addr zone=per_ip:10m rate=20r/s;

server {
listen 443 ssl http2;
server_name api. example. com;

Security add_header Strict-Transport-Security "max-age = 31536000" always;
add_header X-Content-Type-Options nosniff;

Limit on IP location/api/v1/{
limit_req zone=per_ip burst=40 nodelay;
proxy_set_header X-Request-Id $req_id;
proxy_set_header X-Client-Ip $remote_addr;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass http://payments_v1;
}

Canary traffic by header location/api/v2/{
if ($http_x_canary = "1") { proxy_pass http://payments_v2; }
proxy_pass http://payments_v1;
}
}
}

13. 2 שליח (JWT, הגבלת קצב, חזרה, יוצא)

yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager route_config:
name: local_route virtual_hosts:
- name: payments domains: ["api. example. com"]
routes:
- match: { prefix: "/api/v1/payments" }
route:
cluster: payments_v1 timeout: 5s retry_policy:
retry_on: "connect-failure,refused-stream,5xx,retriable-status-codes"
num_retries: 2 per_try_timeout: 2s http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication providers:
main:
issuer: "https://auth. example. com/"
remote_jwks: { http_uri: { uri: "https://auth. example. com/.well-known/jwks. json" } }
forward: true rules:
- match: { prefix: "/api/" }
requires: { provider_name: "main" }
- name: envoy. filters. http. ratelimit
- name: envoy. filters. http. router clusters:
- name: payments_v1 connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN load_assignment: { cluster_name: payments_v1, endpoints: [{ lb_endpoints: [{ endpoint: { address: { socket_address: { address: payments, port_value: 8080 }}}}]}] }
outlier_detection: { consecutive_5xx: 5, interval: 5s, base_ejection_time: 30s }

14) רשימות בדיקה

לפני שחרור המסלול

[ ] אימות (JWT/JWKS, מפתחות, מטמון TTL).
[ ] מגשים/מגשים/אידמפוטנטיות מוגדרים.
[ ] גבולות: לכל IP, לכל מפתח, לכל מסלול; מכסות שותפים.
[ ] אימות של ערכת הבקשה/תגובה.
[ ] בולי עץ ועקבות עם מסכות מח "ש.
[ ] SLO/התראות ולוח מחוונים.
[ ] Geo-Rules/Complication/AGE.

עסקאות ותשלומים

[ ] PSP ניתוב חכם:
[ ] אותה שיטה נבדקת בקצה.
[ ] סטטוסים שקופים וקודי שגיאה עבור הלקוח (ללא קוד PSP גולמי).

משחרר

[ ] הקנריים/AB ומתג-להרוג, תוכנית רולבק.
[ ] צל תנועה לגרסה חדשה, השוואה של מדדים.
[ ] בדיקת טעינה ומטרות p95.

15) מדדים איכותיים (מינימום)

זמינות/SLO לפי מסלולים; שיעור שגיאה 5xx/4xx.
latency p50/p95/p99 (חיצוני ופנימי).
Treaty/timeout/circuit events (רמת רעש).
חיסול מטמון וחיסכון ב-RPS.
קצב הגבלת להיטים וירד בקשות.
PSP-ניתוב KPIs: הצלחות, TTW, אחוז פליאובר, עמלה.

16) אנטי דפוסים

מגבלה אחת לכל דבר.
”מיידי” נסוג ללא ג 'יטר (התעצמות סערה).
אמון 'X-העברה עבור' ללא נורמליזציה ורשימת פרוקסי אמינה.
פסקי זמן קשים שלא כוללים p95 (חיובי כוזב).
שינויים קשים ששוברים את התאימות.
יומנים עם סודות PII/PAN/.
ערבב API פנימי וחיצוני תחת אותו תחום/מדיניות.

17) דפוסי תגובה ושגיאות (מיקרוקופיה)

429 יותר מדי בקשות: "הבקשה הוגבלה. חזור בעוד N שניות או להגדיל את המכסה במשרדו של השותף"

401/403: "האסימון לא בתוקף/פג תוקף. נא להירשם שוב"

408/504: "השירות מגיב יותר זמן מהצפוי. הבקשה לא התקבלה" ‏

Idempotency-conflict: ”בקשה עם Idempotency-Key זה כבר מעובד (מעמד: הצלחה/כישלון)”.

18) תהליך יישום (צעדים)

1. מודל מסלול: domain/path/region map.
2. מדיניות אבטחה: TLS/mTLS, WAF, AuthN/Z, מפתחות/JWKS.
3. אמינות: פסקי זמן, מגשים מחדש, אידמפוטנטיות, מפסק מעגל.
4. יכולת תצפית: יומנים/מדדים/עקבות, קורלציה.
5. מטמון/perf: קצה/מיקרו-מטמון, דחיסה, בריכות חיבור.
6. ניתוב תשלומים: כללים, בדיקות, מעקב.
7. שחרורים: קנרית/צל, מתג כיבוי, תוכנית רולבק.
8. ציות/גיאו: מסנני מדינה, אחסון נתונים, גיל.

גיליון רמאות סופי

היקף נוקשה (TLS/mTLS, WAF, limits) + מנוהל תנועה (retrai, מעגל חשמלי, קנרית).
אימות ושינויים בקצה האיבר הם פחות מפגמים ”מבפנים”.
תצפית עם זיהוי עקבות ומסכות מח "ש אינה אופציה, אלא סטנדרט.
ניתוב תשלומים חכם וגיאו ציות הם קריטיים עבור iGaming.
מדיניות ורסינציה וחסך - חיזוי לשותפים.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.