منصة B2B للسلع الرقمية

توجيه التنفيذ متعدد المصادر 2026 — توجيه الطلبات عبر الموردين

خوارزميات توجيه إنتاجية متعددة المصادر — موزونة بالكمون، واعية بالمخزون، مُحسَّنة للتكلفة، وتجاوز احتياطي لتنفيذ B2B.

توجيه التنفيذ متعدد المصادر 2026 — توجيه الطلبات عبر الموردين

لا يمكن لتنفيذ السلع الرقمية الإنتاجي B2B أن يعتمد على مورّد واحد. المورّد الحصري نقطة فشل وحيدة — انقطاع واحد وكل طلب يفشل. النمط المعماري الصحيح هو التوجيه متعدد المصادر مع اختيار تلقائي لأفضل خيار لكل طلب.

يغطي هذا الدليل منطق التوجيه في نظامك الخاص. عندما تكون FoxReload أحد مورّديك، تستدعي POST /api/orders بعد أن تختارها طبقة التوجيه لديك. واسترجع النتائج بسؤال GET /api/orders/{order_id} — لا تُرسل FoxReload استدعاءات webhook، لذا صمّم طبقة التوجيه لديك لاستطلاع الاكتمال.

1. التوجيه الموزون بالكمون

أبسط نسخة هي اختيار المورّد ذي أدنى كمون تسليم عند p95. خزّن المقاييس التاريخية في نافذة Redis المنزلقة:

type SupplierStats = { p95Ms: number; failureRate: number; stock: number };

async function pickSupplier(productId: string): Promise<string> {
  const candidates = await getSuppliersForProduct(productId);
  const stats = await Promise.all(
    candidates.map(s => redis.hgetall(`sup:${s.id}:stats`))
  );
  const scored = candidates.map((s, i) => ({
    id: s.id,
    score: 1 / (parseFloat(stats[i].p95Ms) + 1),
  }));
  return scored.sort((a, b) => b.score - a.score)[0].id;
}

يغطي هذا 80% من السيناريوهات. تتحدّث مقاييس الكمون كل 30 ثانية من أوقات اكتمال الطلبات الفعلية المسجّلة في طبقة التتبّع لديك.

2. التوجيه الواعي بالمخزون

إذا كان مخزون المورّد دون الاحتياطي (مثلاً <50 كوداً لمنتج رائج)، تجنّب استخدامه كأساسي حتى مع كمون جيد. يمنع احتياطي المخزون حالة التسابق "4 طلبات متزامنة على 3 أكواد".

function isViableSupplier(s: SupplierStats, qty: number): boolean {
  const buffer = Math.max(50, qty * 3); // 3x safety margin
  return s.stock >= buffer && s.failureRate < 0.05;
}

بالنسبة لـ FoxReload تحديداً، تحقّق من GET /api/products/{id_or_slug} للتأكد من أن المنتج لا يزال مدرجاً ونشطاً قبل توجيه الطلبات إليه.

3. التوجيه المُحسَّن للتكلفة

إذا سمحت اتفاقية مستوى الخدمة (مثلاً التنفيذ خلال 5 دقائق طبيعي في B2B)، حسّن على تكلفة الجملة. الصيغة:

score = (1 / wholesale_cost) * sla_multiplier
where sla_multiplier = 1 if p95 < target else 0

يمنح هذا ضماناً صارماً لاتفاقية مستوى الخدمة مع حد أدنى للتكلفة. عند الحجم الكبير (>10 آلاف طلب/يوم) يوفّر 1.5–3% من التكلفة الحدّية.

4. التجاوز الاحتياطي وقاطع الدائرة

نمط فحص السلامة:

الإشارة العتبة الإجراء
معدل 5xx خلال 5 دقائق >5% وسم DEGRADED
معدل انتهاء المهلة >2% وسم DEGRADED
فشل النبضة 3 على التوالي وسم DOWN
التعافي 5 ناجحة وسم HEALTHY

نمط قاطع الدائرة (بأسلوب Polly/resilience4j):

import CircuitBreaker from 'opossum';

const breaker = new CircuitBreaker(callSupplier, {
  timeout: 8000,
  errorThresholdPercentage: 50,
  resetTimeout: 120000, // 2 min
});

breaker.fallback(() => fallbackSupplier());

في الحالة المفتوحة تنتقل 100% من الحركة إلى البديل — فترة تهدئة دقيقتين، ثم فحص canary نصف مفتوح، ثم التعافي.

5. الاستطلاع بعد تقديم الطلب

عندما تكون FoxReload هي المورّد المختار، بعد استدعاء POST /api/orders يجب على طبقة التوجيه لديك استطلاع الاكتمال:

async function placeAndWait(items: OrderItem[], apiKey: string): Promise<string[]> {
  const res = await fetch('https://public-api.foxreload.com/api/orders', {
    method: 'POST',
    headers: { 'X-API-Key': apiKey, 'Content-Type': 'application/json' },
    body: JSON.stringify({ items }),
  });
  const order = await res.json();

  // Poll until terminal state
  let delay = 5_000;
  while (true) {
    await sleep(delay);
    const statusRes = await fetch(
      `https://public-api.foxreload.com/api/orders/${order.id}`,
      { headers: { 'X-API-Key': apiKey } },
    );
    const latest = await statusRes.json();
    if (latest.status === 'completed') {
      return latest.items.flatMap((i: any) => i.externalData ?? []);
    }
    if (['cancelled', 'failed'].includes(latest.status)) {
      throw new Error(`Order ${order.id} ended with status ${latest.status}`);
    }
    delay = Math.min(delay * 1.5, 30_000);
  }
}

CTA

تقدّم FoxReload واجهة REST واحدة بكتالوج منتجات ضخم. احصل على الوصول وأدخِلها في طبقة التوجيه متعددة المصادر لديك.

الأسئلة الشائعة

أي خوارزمية توجيه ينبغي أن أستخدمها افتراضياً؟
تعمل النتيجة الموزونة جيداً — 50% لتوفر المخزون الحالي، 30% لكمون p95، 20% لتكلفة الجملة. الموردون الذين يتجاوز معدل فشلهم 5% خلال 15 دقيقة ينبغي إزالتهم من المجمّع تلقائياً.
ماذا يحدث إذا تعطّل المورّد الأساسي؟
تعمل فحوص السلامة كل 10 ثوانٍ (نبضة + طلب عينة). بعد 3 إخفاقات متتالية يُوسَم المورّد بـ DEGRADED وتنتقل الحركة إلى الثانوي. ويتطلب التعافي 5 فحوص ناجحة متتالية.
هل يمكنني تثبيت منتج على مورّد محدد؟
في بنية متعددة الموردين، نعم — طبّق سياسة توجيه في طبقتك الخاصة تربط معرّفات المنتجات بالموردين المفضّلين. مفيد للعقود الحصرية أو متطلبات الامتثال الإقليمية.
كيف يؤثر التعدّد المصدري على كمون العميل النهائي؟
يضيف 80–120ms لقرار التوجيه (بحث داخلي) لكنه يقلّل تسليم p99 بنسبة 40–60% بفضل التجاوز الاحتياطي. بدون تعدّد المصادر يكون p99 = 90 ثانية؛ ومعه يكون p99 = 38 ثانية.
احصل على وصول واجهة FoxReload

مقالات ذات صلة