Logo GH

→ فن آوری های تاخیر و زیرساخت و بهینه سازی پاسخ 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 اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

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