الموازات / الساحة / المعماريات المتصلة
Type: Learn + Build
Languages: Python (stdlib, threading, queue)
Prerequisites: Phase 16 · 05 (Supervisor Pattern), Phase 16 · 04 (Primitive Model)
Time: ~75 minutes
المشكلة
المدير يُقَدِّم إلى عدد قليل من العمال. ماذا عن المئات؟ المدير نفسه يصبح عقدة الزجاجة: كل قرار حول من يفعل ما يُقود عبر وكيل واحد. خطوة خطة بطيئة واحدة تعيق النظام بأكمله.
تعديل معمارات السحابة التصميم. بدلا من تخطيط مركزي يرسل العمل ، يقوم العمال بتحديد العمل من صف مشترك. يتم إدخال "التنسيق" في أساسية الحافلة الحادثة. لا يوجد منظمة. النظام يتقييم حتى يقوم الصف.
المفهوم
الشكل
┌──── shared queue ────┐
│ │
┌────────┼────────┐ ◄──────┬───┘
▼ ▼ ▼ │
Worker Worker Worker Worker
A B C D
│ │ │ │
└────────┴────────┴─────────┘
│
▼
results poolلا يوجد منظم. كل عامل يكرر: سحب مهمة، وعملية، كتابة النتيجة (وبإمكانك اختيار متابعة).
عندما يتناسب السحابة
- Many independent tasks.إزالة، تحويل، تصنيف، المهام لا تعتمد على بعضها البعض
- Variable-duration work.إذا استغرق بعض المهام 100 دقيقة وآخرون 10 دقائق، فإن السحابة توازن الحمل تلقائيًا أسرع العمال سحب الوظائف التالية. يجب على المشرف توقع المدة.
- Throughput over determinism.أنت تهتم بأكمله وقت الانتهاء، وليس الطلبات الصارمة.
عندما ينفذ الجماعة
- Ordered workflows.إذا كانت الخطوة الثالثة تحتاج إلى خروج الخطوة الثانية، فإن السحابة تخاطر بإطلاق الخطوة الثالثة قبل أن يتم الخطوة الثانية.
- Global-plan tasks.تُستفيد الأسئلة البحثية المعقدة من المخطط. مجموعة من الباحثين تنتج حقائق مستقلة، وليس تقرير متماسك.
- Debugging.بدون سجل مركزي وعمليات غير متزامنة، إن إعادة إنتاج حشرة مكلفة.
المصفوفة (arXiv:2511.21686)
المصفوفة هي ورقة 2025 التي تأخذ السحابة إلى استنتاجها الطبيعي: كل من تدفق التحكم وتدفق البيانات هي رسائل تسلسلية على صفوف موزعة. لا يوجد منسق مركزي. تعود تسامح الأخطاء من استمرارية الرسالة. القياسية هي مشكلة وسيط الرسالة ، وليس مشكلة النظام.
المساهمة: نموذج برمجة يتعلق بالتنسيق بين وكلاء متعددين "ما هو موضوع الرسالة التي يشترك بها هذا الوكيل؟" بدلاً من "ما هو الوكيل الذي يختار المشرف بعد ذلك؟" وهذا يجعل النظام يبدو مثل شبكة الحدث الإعلاني / الفرعي.
السحابة في إطار الرسم البياني
يصف وثائق لانغغغراف 2025 صراحة "هندسة معمارية السلالة" بأنها واحدة من أنماط الوكلاء المتعددة: العاملون عقدات ، ولكن الحواف تشكل الرسم البياني الموجب مع الدورات ويمكن تنشيط أي عقدة من المجمعات. يختار العامل من العمل المتاحة حسب الحالة ، وليس عن طريق مهمة المشرف.
وضع الفشل: الجوع والبقع الحارة
إذا قام جميع العمال بأسرع مهمة متاحة، فلن يتم اختيار المهام الطويلة حتى تكون الوحيدة المتبقية.
التخفيف:
- صفوف الأولوية مع تقدم السن الصريح (زيادة الأولوية مع وقت الانتظار).
- تخصص العمال: بعض العمال يتولون فقط مهام "طويلة".
- الضغط الخلفي: حدد عدد المهام السريعة التي تدخل الصف.
الرابط التوجيهي القائم على المحتوى
تعتبر المجموعة من الزوجات بشكل طبيعي مع التوجيه القائم على المحتوى (الدرس 22) بدلاً من صف عام ، يكون هناك صف واحد لكل نوع رسالة. يعمل العمال المتخصصون على إشتراك فقط في نوعهم. هذه هي الأساس لهياكل الباصات الرسائل التي تتحمل آلاف العملاء.
بناءها
code/main.pyيطبق حشرة من 4 خيوط عاملة تسحب من المشترك queue.Queue. المهام لها مدة متغيرة (بعضها سريع، بعضها بطيء).
- Sequential baseline:عامل واحد يقوم بمعالجة جميع المهام بشكل متسلسل.
- Fixed assignment:كل مهمة تم تعيينها مسبقاً لعامل معين (مثل المشرف).
- Swarm:العمال يخرجون من صف مشترك
تُحمل الميزانات الساحقة تلقائياً؛ تترك المهام الثابتة العمال السريعين عجلين عندما تكون مهمتهم بطيئة.
أركض
python3 code/main.pyيظهر الإنتاج عدد المهام لكل عامل (توزيع السحابة بشكل غير متساوٍ ولكن بشكل مثالي) وأوقات الساعة الحائطية.
استخدمها
outputs/skill-swarm-fit.mdيقيّم ما إذا كان يجب على المهمة استخدام السلالة مقابل المشرف. المدخلات: استقلالية المهمة، اختلاف المدة، متطلبات الطلبات، احتياجات إصلاح الأخطاء.
أرسله
قائمة التحقق:
- Priority queue with aging.منع المجاعة المكثفة
- Worker idempotency.قد يتم تنفيذ مهمة أكثر من مرة إذا سقط عامل في منتصف الجولة. يجب أن يكون العمال غير قادرين.
- Durable queue.استخدم كافكا، ريديس ستريمز، أو صف مدعوم من قاعدة البيانات للإنتاج.
queue.Queueهو فقط في الذاكرة. - Observability per task.كل مهمة لديها هوية تتبع؛ كل عامل يبدأ/ ينتهي بها.
- Back-pressure.إذا كان الصف ينمو أسرع من العمال يستنزفوه، تبطئ المنتج.
التمارين
- أركض
code/main.pyكم أسرع السحابة من التسلسل على عبء العمل المتغير؟ كم أسرع من المهام الثابتة؟ - إضافة متغير في صف الأولوية (استخدام
queue.PriorityQueue) تعيين الأولوية حسب المهام "الأهمية" الحقل. لاحظ ما إذا كانت المهام ذات الأولوية المنخفضة تجوع تحت الحمل المستمر. - تنفيذ كاشف نقاط الاحتراق: تسجيل عندما يقوم أي عامل بمعالجة 3x أكثر من المهام من أكثر عامل بطء. ما الذي يدل ذلك على توزيع مدة المهام؟
- اقرأ ورقة ماتريكس (arXiv:2511.21686) المجرد والقسم 3. حدد تعادل معين يقبله ماتريكس (مزيد من التوسع) و الذي يتخلى عنه (التتبعية، الدستيرنيزم).
- حول التجربة المثيرة للاستخدام
queue.Queueمن (مجموعة المهام، والحميل المفيد) ، مع العمال الذين يشتركون فقط في أنواع محددة. ما هي قواعد التوجيه التي لها معنى عندما تكون المهام متناثرة؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Swarm architecture | "Decentralized agents" | Workers pull from shared queue; no central orchestrator. |
| Event bus | "Agents subscribe to topics" | Message broker that routes tasks to workers by type or content. |
| Starvation | "Task never runs" | Low-priority task never gets picked because higher-priority work arrives continuously. |
| Hot-spotting | "One worker drowns" | Load imbalance where one worker gets most tasks. |
| Back-pressure | "Slow down the producer" | Mechanism that signals upstream to stop producing when the queue fills up. |
| Idempotent worker | "Safe to re-run" | A task processed twice produces the same result. Required because workers may crash mid-run. |
| Durable queue | "Survives crashes" | Queue backed by disk or replicated storage; tasks are not lost when a worker crashes. |
| Matrix framework | "Full message-passing swarm" | Both data and control flow are serialized messages on distributed queues. |
المزيد من القراءة
- LangGraph workflows and agents — Swarm Architecture دعم السحابة الصريحة
- Matrix — A Decentralized Framework for Multi-Agent Systems حشرة كاملة من الرسائل
- Anthropic engineering — why supervisor not swarm in Research لماذا نظام إنتاج معين اختار صراحة المشرف على السحابة
- AutoGen v0.4 actor-model docs أعادة كتابة الممثل القائم على الأحداث، أقرب إلى السحابة من v0.2's GroupChat
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.