API دروازه و مسیریابی
1) نقش دروازه API در معماری
یک API Gateway تنها نقطه ورود به میکروسرویس است. آیا او:- درخواست مسیرها (توسط مسیر/هدر/جغرافیایی/وزن/نسخه).
- محافظت از محیط (TLS/mTLS، WAF، DDoS، محدودیت نرخ، authN/Z).
- ترافیک را کنترل می کند (canary/AB، shadow/mirror، circuit breaker، retras، timeout).
- پروتکل های استاندارد (REST/gRPC/WebSocket)، هدر ها، کد ها.
- مشاهدات (سیاهههای مربوط، معیارها، ردیابی، همبستگی).
- تبدیل و اعتبار (JSON/XML، عادی سازی، اعتبار سنجی طرح).
برای iGaming، این نیز جغرافیایی (مسدود کردن کشور/سن)، مسیریابی پرداخت هوشمند و سیاست های بازی مسئول در لبه است.
2) گزینه های مسیریابی
مبتنی بر مسیر: '/api/v1/payments/→ payments-svc '.
میزبان مبتنی بر: "eu. API. به عنوان مثال. com → eu-edge ',' psp. به عنوان مثال. کام → PSP پروکسی '.
مبتنی بر هدر: 'X-Client: partner-A' → partner backend; 'Accept: application/grpc'.
مسیریابی جغرافیایی: توسط IP/ASN/کشور (GDPR/ممنوعیت های محلی، تاخیر).
وزن/قناری: «90٪» در نسخه قدیمی، «10٪» در نسخه جدید ؛ بازگشت سریع
مسیریابی ادعا: по 'JWT. ادعا می کند. ردیف/نقش/منطقه "(به عنوان مثال، محدودیت های بالا غلتک → حق بیمه).
شکست: دارایی-دارایی/دارایی-بدهی بین مرکز داده/ابر و PSP.
3) امنیت محیط
TLS در همه جا: TLS 1. 2 + در خارج، mTLS در داخل (shlyuz↔servisy).
OAuth2/JWT: تأیید امضا، حسابرسی «exp/nbf/aud/scope»، چرخش JWKS ؛ اعتبار کش با TTL.
HMAC: امضای بدن برای وبهاب/پرداخت.
کلید های API: برای مشتریان سیستم ؛ ارتباط با سهمیه/نقش.
WAF: قوانین اساسی (تزریق، ناهنجاری های پروتکل)، اندازه بدن، لیست انکار کشورها.
حفاظت DDoS: محدود کردن اتصال، کوکی های SYN، محدودیت نرخ در IP/key/endpoint.
اعتماد صفر: سیاست های اجباری (SPIFFE/SPIRE، هویت خدمات)، اصل حداقل حقوق.
حریم خصوصی: ویرایش PII در سیاهههای مربوط، PAN/IBAN پوشش، سیاست ذخیره سازی.
4) محدودیت ها، سهمیه ها و حفاظت در برابر انفجار
Модели: سطل نشانه، سطل نشتی، پنجره ثابت/کشویی.
مرزها: در هر IP، در هر کلید، در هر کاربر، در هر مسیر.
- پشت سر هم + پایدار (به عنوان مثال،. '50 rps پشت سر هم', '10 rps حفظ').
- Retry-Budget and Slow-Loris protection (دفعات بازدید: وقفه).
- سهم به روز/ماه برای شرکا.
5) تحولات و اعتبارسنجی
عادی سازی سرصفحه ها (trace-id، locale، client-id).
درخواست/پاسخ نقشه برداری.
اعتبار سنجی طرح (OpenAPI/JSON Schema) قبل از پراکسی - شکست اولیه 4xx.
فشرده سازی/' پذیرش رمزگذاری '، ذخیره سازی (پایین را ببینید).
6) ذخیره سازی و عملکرد
نهانگاه لبۀ فهرستهای راهنما، فرادادههای عمومی، پیکربندی) TTL، «ETag »/« If-None-Match» (.
میکرو کش 1-5 ثانیه برای GET داغ (بار پیک را کاهش می دهد).
منفی کش کوتاه (در 404/خالی) - مراقب باشید.
درخواستهای تامینی و درخواستهای رقابتی برای کپی در آستانه p95>.
7) زمان، عقب نشینی، انعطاف پذیری
زمان بندی: اتصال/خواندن/نوشتن به طور جداگانه ؛ P95 معقول نشانه.
Retrai: روش های idempotent (GET/PUT) با عقب نشینی + jitter ؛ بودجه مجدد
POST idempotency: 'Idempotency-Key' + سرویس/deduplication دروازه.
قطع کننده مدار: توسط خطاها/تأخیر ؛ محاکمه نیمه باز
دیواره/جداسازی استخر توسط بالادست.
8) نسخه و سازگاری
روش ها:- نشانی اینترنتی: "/v1/... (مسیرهای ساده، اما «پر سر و صدا»).
- Header/Content-Negotiation: 'Accept: application/vnd. برنامه v2 + json '.
- ویژگی پرچم/قابلیت سرور - برای سازگاری جزئی تغییر.
سیاست: SemVer, پنجره پشتیبانی (به عنوان مثال, 'v1' = 12-18 ماه), برنامه depriction, پاسخ های سازگار برای برنامه های افزودنی (اضافه کردن زمینه نمی شکند).
9) قابلیت مشاهده و کنترل کیفیت
همبستگی: 'traceparent '/' x-request-id' مورد نیاز است ؛ پرتش ميکنيم پايين.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx، اشباع، سعی مجدد/معیارهای رویداد مدار.
سیاهههای مربوط: JSON ساختاری ؛ پنهان کردن PII ؛ سطح توسط کد
نمونه برداری ردیابی: پایه 5-10٪ + هدف برای خطاها/آهسته است.
SLO/هشدار: توسط مسیرها/مشتریان (به روز رسانی، تاخیر، خطا).
10) انتشار مدیریت ترافیک
سوئیچ DNS/LB آبی سبز.
قناری: سهم وزن/بخش (منطقه، شریک، نقش).
سایه/آینه: کپی ترافیک به نسخه جدید بدون پاسخ به مشتری.
کشتن سوئیچ: پرچم به سرعت غیر فعال کردن مشکل بالادست/ویژگی.
11) مسیریابی پرداخت هوشمند (iGaming)
قوانین انتخاب PSP: جغرافیایی، ارز، مقدار، میزان خطر، در دسترس بودن، کمیسیون.
Failover PSP: انتقال خودکار در '5xx/timeout'.
قانون همان روش: بازگشت/خروجی از طریق روش اصلی - بررسی در لبه.
شناسه پرداخت: کلید 'userId + مقدار + ارز + هدف'.
شفافیت ETA: دروازه وضعیت ها و علل شکست (نه کدهای PSP) را اضافه می کند.
12) سیاست های بین منطقه ای و انطباق
فیلترهای جغرافیایی: لیست سفید/سیاه کشورها، محدودیت های سنی، محدوده IP.
داده های ساکن: مسیریابی به خوشه های منطقه ای (GDPR/قوانین محلی).
سیاههها و 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).
- مدت زمان/Retrays/Idempotency پیکربندی شده است.
- محدودیت ها: در هر IP، در هر کلید، در هر مسیر ؛ سهمیه شریک
- اعتبار طرح درخواست/پاسخ.
- سیاهههای مربوط و آثار با «ردیابی»، ماسک PII.
- SLO/هشدارها و داشبورد.
- قوانین جغرافیایی/انطباق/سن بررسی شده است.
معاملات و پرداخت ها
- PSP مسیریابی هوشمند: قوانین، اولویت ها، Feilover.
- همان روش در لبه بررسی می شود.
- وضعیت های شفاف و کدهای خطا برای مشتری (بدون کد PSP خام).
نسخه ها
- قناری/AB و کشتن سوئیچ، طرح برگشت.
- ترافیک سایه به نسخه جدید، مقایسه معیارها.
- تست بار و اهداف p95.
15) معیارهای کیفیت (حداقل)
در دسترس بودن/SLO توسط مسیرها ؛ نرخ خطا 5xx/4xx
تاخیر p50/p95/p99 (خارجی و داخلی).
رویدادهای تکرار/اتمام وقت/مدار) سطح نویز (.
نسبت ضربه کش و صرفه جویی در RPS.
بازدید های محدود و درخواست های کاهش یافته.
KPI های مسیریابی PSP: موفقیت، TtW، درصد feilover، کمیسیون.
16) ضد الگوهای
یک محدودیت کامل «برای همه چیز».
عقب نشینی «فوری» بدون لرزش (تشدید طوفان).
Trust 'X-Forwarded-For' بدون نرمال سازی و لیست پروکسی قابل اعتماد.
زمان های سخت به استثنای p95 (مثبت کاذب).
تحولات سختی که سازگاری را از بین می برد.
سیاهههای مربوط با PII/PAN/اسرار.
API داخلی و خارجی را تحت همان دامنه/سیاست مخلوط کنید.
17) الگوهای پاسخ و خطاها (میکروکپی)
۴۲۹ Too many requests: "محدودیت درخواست رسیده است. در N ثانیه تکرار کنید یا سهمیه را در دفتر شریک افزایش دهید"
401/403: نشانه نامعتبر/منقضی شده است. لطفا دوباره ثبت نام کنید"
۴۰۸/۵۰۴: سرویس بیشتر از آنچه انتظار میرود پاسخ میدهد. این درخواست پذیرفته نشد"
Idempotency-conflict: یک درخواست با این Idempotency-Key قبلا پردازش شده است (وضعیت: موفقیت/شکست).
18) فرآیند پیاده سازی (مراحل)
1. مدل مسیر: نقشه دامنه/مسیر/منطقه.
2. سیاست های امنیتی: TLS/mTLS، WAF، authN/Z، کلید/JWKS.
3. قابلیت اطمینان: زمان بندی، بازپرداخت، بی نظمی، قطع کننده مدار.
4. قابلیت مشاهده: سیاهههای مربوط/معیارها/ردیابی، همبستگی.
5. کش/perf: لبه/میکرو کش، فشرده سازی، استخر اتصال.
6. مسیریابی پرداخت: قوانین، تست ها، نظارت.
7. نسخه ها: canary/shadow, kill-switch, rollback plan.
8. انطباق/جغرافیایی: فیلترهای کشور، ذخیره سازی داده ها، سن.
برگه تقلب نهایی
محیط سختگیرانه (TLS/mTLS، WAF، محدودیت ها) + ترافیک مدیریت شده (retrai، مدار، قناری).
اعتبار سنجی و تحولات در لبه → کمتر از نقص «در داخل» است.
قابلیت مشاهده با ماسک های trace-id و PII یک گزینه نیست، بلکه یک استاندارد است.
مسیریابی پرداخت هوشمند و انطباق جغرافیایی برای iGaming بسیار مهم است.
نسخه بندی و محرومیت سیاست - پیش بینی برای شرکای.