GH GambleHub

→ فن آوری های تاخیر و زیرساخت و بهینه سازی پاسخ API

بهینه سازی پاسخ به تاخیر و API

1) «تأخیر» چیست و چرا اهمیت دارد

تاخیر - کل تاخیر درخواست: شبکه (DNS + TCP + TLS + RTT)، متعادل کننده/دروازه، برنامه، DB/کش/صف، ادغام خارجی. P95/P99 برای کسب و کار حیاتی هستند، نه متوسط: این «دم» است که UX، CR و SLO را از بین می برد.

SLI های پایه:
  • 'SLI _ latency _ P95 = P95 (response _ time)' در دقیقه 5/30
  • 'SLI _ latency _ P99 = P99 (پاسخ _ زمان)'
  • 'SLI _ queue _ time = P95 (worker _ queue _ time)'
  • 'SLI _ ext _ call _ P95 = P95 (external _ provider _ latency)'

2) نقشه منبع تاخیر (و در آن به حفاری)

1. شبکه و پروتکل ها: DNS، TCP دست دادن، TLS، سر خط (HTTP/1. 1)، از دست دادن بسته، BBR/ECN.
2. دروازه/متعادل کننده: بررسی سلامت آهسته، زمان بندی نامعتبر، پایین داغ.
3. کاربرد: قفل، GC/توقف جهان، همزمان I/O، مشاجره.
4. مخازن: پرس و جو پایگاه داده آهسته، بدون شاخص، صفحات سرد.
5. خدمات خارجی: PSP/KYC، API های شخص ثالث (SLA های باریک).
6. صف ها و ضربه های پس زمینه: کارگران بیش از حد، بدون فشار پشتی.
7. Cache/edge: حافظه پنهان، TTL ضعیف، ناتوانی نامعتبر است.

3) شبکه و پروتکل ها

3. 1 DNS/TCP/TLS

DNS prefetch/preconnect در جلو، IP طولانی مدت به PSP.
نگه داشتن زنده/اتصال در مشتریان ؛ در سرور - اتصالات جمع.
TLS: از سرگیری/بلیط جلسه، یک بسته رمزنگاری مدرن ؛ اجتناب از 0-RTT برای عملیات idemotent نا امن.
TCP: غیر فعال کردن Nagle ('TCP _ NODELAY') برای چت/بسته های کوچک ؛ «پنجره ورودی» را تنظیم کنید، BBR را در صورت لزوم فعال کنید.

3. 2 HTTP/2 и HTTP/3

HTTP/2: چندگانه قفل HOL HTTP/1 کاهش می دهد. 1; نظارت بر اولویت های موضوع.
HTTP/3/QUIC: تاثیر کمتر تلفات/RTT ؛ مفید در یک شبکه تلفن همراه/بین المللی.
فشرده سازی هدر: HPACK/QPACK، اما اندازه هدر مناسب را حفظ کنید.

3. 3 تعادل/مسیریابی

آگاهی از محل (منطقه بندی)، EWMA/حداقل درخواست در مقابل موارد داغ.
جلسات چسبیده - فقط اگر یک حالت وجود داشته باشد ؛ در غیر این صورت بدون حالت + کش/جلسات مشترک.

4) فرمت ها، بارگیری، فشرده سازی

فشار: بروتلی (متن)، Gzip به عنوان جایگزین ؛ فرمت های باینری: Protobuf/Avro برای gRPC/API های داخلی.
کاهش payload: فیلدهای انتخابی ('fields =...')، صفحه بندی، GET شرطی (ETag/If-None-Match)، پاسخ های دلتا.
GraphQL: پرس و جوهای مداوم، ممنوعیت قطعات «چربی»، محدودیت عمق و پیچیدگی.
اجتناب از N + 1: Joyns/پیش فرض، نقاط پایانی butch برای aggregates.

5) زمان، عقب نشینی، idempotence

زمان بندی های زنجیره ای مشتری <gateway <appa <storage/فراخوانی خارجی.
Retrai با عقب نشینی + jitter، فقط برای خطاهای موقت ؛ افشای بودجه در retrayes.
Idempotence: کلید پرس و جو/نشانه + ذخیره نتیجه ؛ عقب نشینی نباید عملیات تکراری (به خصوص امور مالی).
قطع کننده مدار: هنگامی که تخریب می شود باز می شود ؛ پرچین/درخواست پشتیبان برای دم (ارسال تکراری از طریق P95).

6) صف، ناهمگونی و فشار پشتی

مسیر همگام را مسدود نکنید: عملیات سنگین (KYC اسکن، گزارش) - در پس زمینه.
Backpressure: محدود کردن مصرف از صف، رفع همزمانی.
دسته بندی/ائتلاف - معاملات کوچک را ترکیب کنید (به عنوان مثال، به روز رسانی مانده ها با جمع).
صندوق پستی/صندوق ورودی: تحویل تضمین شده از حوادث در صورت شکست.

7) کاربرد: زمان اجرا و استخر

استخر اتصالات به پایگاه داده/حافظه های نهان/HTTP ؛ آنها را محدود کنید تا «پشت» را خفه نکنید.
JVM: مشخصات GC (G1/ZGC)، جلوگیری از تخصیص های بزرگ ؛ دات نت - ThreadPool/async ؛ گره ها js - حلقه رویداد را مسدود نکنید، CPU را سنگین کنید.
پایتون: درایورهای ناهمزمان (asyncpg/httpx)، uvloop ؛ وظایف CPU از طریق استخر کارگر.
گرم کردن: گرم کردن JIT/caches، «استخرهای گرم» موارد به قله.

8) پایگاه داده ها و انبارها

شاخص ها و برنامه ها: به طور منظم 'توضیح'، خودکار خلاء/تجزیه و تحلیل، حد اسکن.
ادغام اتصال (PgBouncer/Multiplexing)، معاملات کوتاه.
استراتژی های حافظه پنهان: خواندن از طریق، نوشتن از طریق/نوشتن پشت ؛ TTL + ناتوانی توسط رویداد.
Sharding/replicas: خواندن از برده ها، «کلید های داغ» - حافظه های محلی (نزدیک به حافظه پنهان).

9) ذخیره سازی و لبه

CDN/edge برای دایرکتوری های استاتیک/، پاسخ های API کش (در صورت ایمن بودن) برای «Cache-Control»، «ETag».
Stale-while-revalidate و stale-if-error برای ثبات UX.
تخصیص جغرافیایی: نزدیکترین RRR/منطقه RTT را کاهش می دهد.

10) الگوهای معماری در مقابل دم P99

Hedged requests: یک درخواست آهسته را به یک نمونه دیگر پس از آستانه کپی کنید.
درخواست فروپاشی: یک «پیشرو» درخواست به پایگاه داده، بقیه در حال انتظار برای نتیجه (جلوگیری از طوفان).
اولویت: VIP/عملیات بحرانی - استخر اختصاصی/اولویت.
تخریب برازنده: اصلاح زمینه های جزئی/ویدجت زمانی که بیش از حد.

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 + دنباله های OTel: 'trace _ id' از طریق API های خارجی gateway-service-database-external.
برچسب های فردی: «api _ version»، «منطقه»، «شریک»، «نقطه پایانی».
داشبورد: P50/P95/P99، زمان صف، ترکیب خطا، نرخ مجدد، ضربه کش.
مصنوعی از کشورهای هدف/ASN (TR/BR/EU) و مسیرهای بحرانی (reg → depozit، پرداخت).

مثال SLO:
  • هسته API: «P95 ≤ 250ms»، «P99 ≤ 500ms» (30 روز)
  • پردازش PSP webhook: «P99 ≤ 60s» با retras
  • کاتالوگ طراوت: «تاخیر P95 ≤ 30 ثانیه»

13) تاخیر и FinOps

میلی ثانیه ارزش پول: برآورد $/ms برنده در CR/ARPPU.
اندازه راست: همیشه سریع تر ≠ گران تر ؛ کش صالح/فرمت های ارزان تر و سریع تر هستند.
خروجی/لبه: CDN RTT و هزینه ترافیک خروجی از منطقه را کاهش می دهد.

14) چک لیست بهینه سازی (گام به گام)

1. SLO را تنظیم کنید و دم (P95/P99) را با نقاط پایانی/مناطق/شرکا اندازه گیری کنید.
2. روشن کردن HTTP/2/3، از سرگیری TLS، اتصالات طولانی مدت.
3. فشار و از دست دادن وزن پاسخ: Brotli/Gzip، زمینه های تقاضا، صفحه بندی، ETag.
4. تنظیم زمان/عقب نشینی/قطع کننده ؛ idemotency اضافه کنید.

5. کش/لبه: نرخ ضربه و TTL صحیح ؛ حالت های قدیمی

6. DB: شاخص ها، برنامه ها، استخر ها، کپی ها ؛ حذف N + 1

7. ناهمزمان سنگین: صف، butching، فشار پشتی.
8. پرچین/فروپاشی/اولویت برای مسیرهای بحرانی.
9. گرم کردن و مقیاس بندی پیش بینی به میدارد (مسابقات/مسابقات).
10. مصنوعی و هشدار در P99 و زمان صف ؛ بررسی های منظم perf.

15) ضد الگوهای

یک وقفه جهانی «برای همه» و retrays کنترل نشده (DDOS خود).
چسبیدن جلسات بدون نیاز به → گرههای داغ.
JSON های بزرگ بدون فشرده سازی و فیلترهای زمینه.
تماس های همزمان برای کند کردن API های خارجی در «مسیر داغ».

عدم وجود شاخص/محدودیت در پایگاه داده ؛ N + 1 در ORM

بدون کش/لبه و ETag ؛ پاسخهای کامل ماندگار

ترکیبی از کسب و کار و خطاهای فنی را به یک «جمع» سبد.

16) زمینه iGaming/fintech: یادداشت های عملی

Reg → deposit (CR): اولویت مسیر، استخر فردی، 'P99 ≤ 500ms' ؛ تخریب - غیر فعال کردن UI «دکوراسیون».
ادغام PSP: محدودیت concarrency، retrays توسط کدهای زمان، اتصالات گرم، خروج منطقه ای IP.
عملیات VIP: تضمین استخر/اولویت، دور زدن صف های عمومی.
مسابقات/رویدادها: مقیاس پیش بینی، کش گرم کردن، prefetch.
گزارش: async و SLA در طراوت، مسیر تولید را مسدود نمی کند.

مجموع

بهینه سازی تاخیر یک رشته تعادل است: شبکه (HTTP/2/3، TLS)، پروتکل ها و حافظه پنهان، زمان بندی/بازپرداخت با idempotency، DB/caches، الگوهای ناهمزمان و P95/P99 قابلیت مشاهده. با تمرکز بر روی دم و حذف «گردن باریک»، پاسخ را تثبیت می کنید، تبدیل را بهبود می بخشید و هزینه را در هر میلی ثانیه کاهش می دهید - جایی که واقعاً بر تجارت تأثیر می گذارد.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.