GH GambleHub

▪ לטנסי טכנולוגיות ותשתיות ואופטימיזציה של תגובה API

Latency ו API אופטימיזציה תגובה

1) מהי ”איחור” ומדוע היא חשובה

Latency - עיכוב בקשה כולל: רשת (DNS + TCP + TLS + RTT), מאזן/שער, יישום, DB/caches/תורים, אינטגרציות חיצוניות. P95/P99 קריטיים לעסקים, לא לממוצעים: זה ה ”זנב” שמשמיד את UX, CR ו-SLO.

סלים בסיסיים:
  • SLI _ latency _ P95 = P95 (תגובה _ time) בעוד 5/30 דקות
  • ”SLI _ latency _ P99 = P99 (תגובה _ time)”
  • 'SLI _ queue _ time = P95 (פועל _ תור _ time) "
  • ”SLI _ ext _ call _ P95 = P95 (חיצוני _ despect _ latency)”

2) מפת מקור עיכוב (והיכן לחפור)

1. רשת ופרוטוקולים: DNS, לחיצות ידיים TCP, TLS, ראש הקו (HTTP/1. 1) אובדן מנות, BBR/ECN.
2. שער/מאזן: בדיקת בריאות איטית, פסקי זמן לא תקפים, תחתיות חמות.
3. יישום: מנעולים, GC/Stop-the-World, סינכרוני I/O, מחלוקת.
4. מאגרים: שאילתות מסד נתונים איטיות, אין אינדקסים, דפים קרים.
5. שירותים חיצוניים: PSP/KYC, API צד שלישי (SLAs צרים).
6. תורים ודקירות רקע: עובדים עמוסים, אין תרמיל גב.
7. מטמון/קצה: מטמון מפספס, TTL חלש, נכות לא תקפה.

3) רשת ופרוטוקולים

3. 1 DNS/TCP/TLS

DNS prefetch/preconnect בחזית, IP ארוך חיים עד PSP.
להישאר בחיים/להתחבר ללקוחות; בשרת - קשרים מצטברים.
TLS: חידוש/כרטיסי סשן, חבילת צופן מודרנית; להימנע 0-RTT לפעולות אידיאמפוטנטיות לא בטוחות.
TCP: בטל נאגל (TCP _ NODELAY) עבור צ 'אטים/חבילות קטנות; מנגינה 'חלון', לאפשר BBR איפה מתאים.

3. 2 HTTP/2 HTTP/3

HTTP/2: ריבוי מקטין HTTP/1 מנעולי HOL. 1; לפקח על סדר עדיפויות חוט.
HTTP/3/QUIC: השפעה נמוכה יותר של הפסדים/RTT; שימושי ברשת ניידת/בינלאומית.
דחיסת כותרת: HPACK/QPACK, אך שמור על גודל כותרת סביר.

3. 3 איזון/ניתוב

אזור מודע (אזורי), EWMA/הכי פחות בקשה לעומת מקרים חמים.
פגישות דבקות - רק אם יש מצב; אחר חסר מדינה + משותף מטמון/מפגשים.

4) פורמטים, מטען, דחיסה

סחיטה: Brotli (טקסט), Gzip כנשורת; פורמטים בינאריים: Protobuf/Avro עבור gRPC/internal API.
הפחת את המטען: שדות סלקטיביים (”שדות =”...), פאגינציה, GET מותנה (ETag/IF-None-Match), תגובות דלתא.
שאילתות ממושכות, איסור על רסיסי שומן, גבולות עומק ומורכבות.
הימנע N + 1: Joyns/preposition, butch endpoints עבור צבירה.

5) פסקי זמן, נסיגות, אידמפוטנטיות

שרשרת פסקי זמן לקוח <שער <appa <אחסון/שיחה חיצונית.
Retrai עם backoff + jitter, רק לשגיאות זמניות; לחשוף תקציבים על רטרואקטיבית.
Idempotence: שאילתה מפתח/token + לשמור תוצאה; נסיגות לא צריכות לשכפל פעולות (במיוחד כספים).
מפסק מעגל: פתוח כאשר מושפל; בקשות גידור/גיבוי לזנבות (לשלוח שכפול באמצעות P95).

6) תורים, אסינכרוני ותרמיל גב

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

7) יישום: רונות ובריכות

בריכות של חיבורים לבסיסי נתונים/מטמונים/HTTP; להגביל אותם כדי לא ”לחנוק” את הישבן.
JVM: פרופיל GC (G1/ZGC), הימנע מהקצאות גדולות; .NET -ThreadPool/Async; צומת. אל תחסום את לולאת האירוע, תוציא את המעבד הכבד.
פייתון: asynchronous drivers (asyncpg/httpx), uvloop; משימות מעבד באמצעות בריכת עובדים.
חימום: לחמם את JIT/caches, ”בריכות חמות” מקרים לפסגות.

8) מסדי נתונים ומטמונים

אינדקסים ותוכניות: ”הסבר” רגיל, ואקום אוטומטי/אנליזה, גבול סריקה.
איסוף חיבור (PiggBounder/Multiplexing), עסקאות קצרות.
אסטרטגיות מטמון: קריאה דרך, כתיבה דרך/כתיבה מאחור; TTL + נכות על ידי אירוע.
שארדינג/העתקים: קריאה מעבדים, ”מפתחות חמים” - מטמונים מקומיים (כמעט מטמון).

9) מטמון וקצה

CDN/Edge עבור ספריות סטטיות, cache API (אם בטוח) עבור 'Cache-Control',' ETag '.
מעופש בזמן-חידוש ויבש-אם-טעות ליציבות UX.
גיאו-הקצאה: אזור RRR/הקרוב ביותר מפחית RTT.

10) תבניות ארכיטקטוניות נגד זנבות P99

בקשות מגודרות - לשכפל בקשה איטית למקרה אחר אחרי הסף.
בקשה מתמוטטת: בקשה אחת ”מובילה” לבסיס הנתונים, השאר ממתינים לתוצאה (נמנעת מסערות).
עדיפות: VIP/פעולות קריטיות - בריכה ייעודית/עדיפות.
השפלה חיננית: Trim minor fields/widgets בעת עומס יתר.

11) תצורות (בקירוב)

11. 1 NGINX (פסקי זמן/דחיסה)

nginx proxy_connect_timeout  1s;
proxy_send_timeout   2s;
proxy_read_timeout   2s;
send_timeout      2s;

gzip on;
gzip_types application/json text/plain text/css application/javascript;

11. 2 שליח (תקציב גידור + ניהול מחדש)

yaml
RetryPolicy:
retry_on: 5xx,reset,connect-failure num_retries: 2 per_try_timeout: 300ms retry_back_off: { base_interval: 50ms, max_interval: 200ms }
retry_priority:
name: envoy. retry_priorities. previous_priorities
HedgePolicy:
hedge_on_per_try_timeout: true initial_requests: 1 additional_request_chance: 0. 2

11. 3 GRPC (לקוח)

json
{
"methodConfig": [{
"name": [{"service": "payments. Service"}],
"timeout": "0. 8s",
"retryPolicy": {
"maxAttempts": 3,
"initialBackoff": "0. 05s",
"maxBackoff": "0. 2s",
"backoffMultiplier": 2. 0,
"retryableStatusCodes": ["UNAVAILABLE","DEADLINE_EXCEEDED"]
}
}]
}

12) יכולת תצפית: מידה נכונה

RED/USE Metrics + OTEL TRAIL: "RACE _ Id' דרך gateway-service-data-API.
תגיות בודדות: "api _ version", "region", "partner", "endpoint'.
לוחות מחוונים: P50/P95/P99, זמן תור, תערובת שגיאות, קצב ניסיון חוזר, פגיעה במטמון.
סינתטיים ממדינות היעד/ASN (TR/BR/EU) ועל ידי מסלולים קריטיים (reg _ dpozit, payout).

SLO דוגמה:
  • CORE API: "P95 fight 250ms'," P99 P500 "(30 ימים)
  • עיבוד ב-P99 עם רטראס בשנות ה-60
  • קטלוג רעננות: "P95 lag ball 30 &fost

13) Latency FinOps

מילישניות שוות את הכסף: להעריך את הזכיות של $/ms ב CR/ARPU.
הגדרה נכונה: תמיד מהר יותר יקר יותר; מטמון/פורמטים מוכשרים הם זולים ומהירים יותר.
Egress/Edge: CDN מפחית את RTT ואת עלות התנועה היוצאת מהאזור.

14) רשימת אופטימיזציה (צעד אחר צעד)

1. הגדרת SLO ומדידת זנבות (P95/P99) על ידי נקודות קצה/אזורים/שותפים.
2. להפעיל HTTP/2/3, חידוש TLS, קשרים ארוכי חיים.
3. לסחוט ולהוריד במשקל תשובות: ברוטלי/Gzip, שדות לפי דרישה, עבודת אלילים, ETag.
4. הגדרת פסקי זמן/נסיגה/מפסקים; להוסיף אידמפוטנטיות.
5. מטמון/קצה: קצב פגיעה ותיקון TTL; מצבים מעופשים.
6. אינדקסים, תוכניות, בריכות, העתקים; לחסל N + 1.
7. תורים, חבטות, תרמיל גב.
8. גידור/קריסה/עדיפות לנתיבים קריטיים.
9. חימום וסולם חיזוי למבחרים (טורנירים/גפרורים).
10. סינתטיים והתראות על P99 וזמן תור; ביקורות חריפות רגילות.

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

פסק זמן גלובלי אחד ”לכל” ומגשים בלתי מבוקרים (DDOS עצמו).
פגישות דבקות ללא צורך לחמם צמתים.
ג 'י-אס-אס גדול ללא דחיסה ומסנני שדה.
קריאות סינכרוניות כדי להאט API חיצוני ב ”שביל חם”.
היעדר אינדקסים/מגבלות במסד הנתונים; N + 1 ב- ORM.
אין מטמון/קצה ו ETag; תגובות שלמות עקשניות.
תערובת של טעויות עסקיות וטכניות לתוך סל ”נסוג” אחד.

16) הקשר iGaming/fintech: הערות מעשיות

Reg ac depozit (CR): עדיפות מסלול, בריכה אישית, P99 '500'; השפלה - לנטרל UI ”קישוטים”.

אינטגרציית PSP: גבולות קונקרנסי, מגשים מחדש על ידי קודי זמן, קשרים חמים,

מבצעי אח "מים: מובטח בריכה/עדיפות, עוקף תורים ציבוריים.
טורנירים/אירועים: סולם ניבוי, חימום מטמון, טרום-פנטזיה.
דיווח: async ו ־ SLA על רעננות, אינו חוסם את נתיב הייצור.

סך הכל

אופטימיזציה של Latency היא דיסציפלינה של שיווי משקל: רשת (HTTP/2/3, TLS), פרוטוקולים ומטמון, פסקי זמן/מגשים עם אידמפוטנטיות, DB/cachs, תבניות אסינכרוניות ויכולת תצפית P95/P99. אם תתמקד בזנבות ותסיר את ”הצוואר הצר”, תייצב את התגובה, תשפר את ההמרה ותוריד את העלות לאלפית השנייה - במקום שבו זה באמת משפיע על העסק.

Contact

צרו קשר

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

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

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

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

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