‫حسنًا ، الآن بعد أن تعلمنا كل شيء عن تحجيم Swarm باستخدام شبكة متراكبة وشبكة توجيه ، أريدك أن
‫تمر فعليًا بعملية إنشاء الأصول ، أو الكائنات ، التي تحتاج إلى نشرها في سيناريو
‫Swarm.
‫لذلك لم نعد نستخدم أمر Docker run ، لكن الشبكات والأحجام متشابهة نوعًا
‫ما ولكنها مختلفة قليلاً.
‫أريد أن أقدم لك سيناريو واقعي لتطبيق متعدد المستويات ، وسنستخدم تطبيق Docker’s Distributed
‫Voting.
‫إنه يسمى في الواقع مثال تطبيق التصويت.
‫ربما تكون قد شاهدته في Docker Keynotes ، أو في مختبرات أو برامج تعليمية أخرى.
‫إنه تطبيق شائع جدًا ، وأعتقد أنه تطبيق رائع ، لأنه يحتوي على خمسة أدوار على الأقل ، أو حاويات
‫مختلفة تحتاج إلى نشرها.
‫وهم جميعًا يقومون بوظيفة خاصة ويقومون بالفعل بأشياء تعمل بالفعل ، في الواقع تقوم بما يفترض
‫القيام به.
‫ومن ثم يمكنك اللعب به وله مكونات معمارية نموذجية وموزعة مثل واجهة الويب
‫وخلفية العامل والقيمة الأساسية
‫في قاعدة البيانات. أعتقد أنه من المفيد حقًا القيام بذلك. في هذه الحالة ، ستستخدم الدليل
‫swarm-app-1. إنه في الواقع موجود في دورة إعادة الشراء الخاصة بنا. لا يوجد شيء سوى
‫التمهيدي والصورة. من هذا الملف التمهيدي ، ستحتاج إلى إنشاء وحدة التخزين وبضع
‫شبكات وخمس خدمات مطلوبة حتى يعمل هذا التطبيق بشكل كامل.
‫قد يساعدك في تجربة بعض هذه الأوامر محليًا ، أو كتابتها بالفعل في محرر النصوص الخاص بك ونوعًا من تأليفها ، لأنها
‫ستكون معقدة بعض الشيء ، صحيح. عندما تقوم بإنشاء خدمة عامل
‫الإرساء هذه ، فسيتعين عليك توصيلها بشبكة معينة ، وفتح المنافذ ، وتسميتها
‫باسم معين ، واستخدام صورة معينة. لذلك ، قد يكون من الأسهل تحريره محليًا ثم قصه
‫ولصقه في غلافك ، أينما كان Swarm الخاص بك.
‫لكن هذا أنا فقط.
‫كل شيء سيستخدم صور Docker Hub لأنه في Swarm لا تريد أن تبني.
‫هذه ليست عملية تريدها في إنتاج Swarm الخاص بك ، عادةً.
‫عادة ، تريد القيام بالبناء الخاص بك إما من خلال بعض الخدمات الآلية عبر الإنترنت مثل
‫Docker Hub أو Docker Cloud ، أو في مكان ما في خط أنابيب CI / CD الذي لا يستهلك الموارد في Swarm الإنتاج الخاص بك.
‫في هذا السيناريو ، يمكننا أن نتخيل أن صورنا يتم بناؤها في مكان آخر وتخزينها
‫على Docker Hub ونحتاج فقط إلى سحبها ، مهما كانت أحدث الإصدارات ، في Swarm الخاص بنا.
‫وسأقول هذا ، مثل أشياء كثيرة في علوم الكمبيوتر ، هذا نصف علم ، ونصف شكل فن.
‫يمكن أن تكون أوامرك بأوامر مختلفة تمامًا ، أو لها أوامر خيارات مختلفة تمامًا عن طلباتي.
‫يمكنك تسمية شبكاتك بأشياء مختلفة.
‫هذا جيّد.
‫والنتيجة النهائية هي أن التطبيق يعمل ، وأنهم قادرون على التحدث مع بعضهم البعض بالطريقة
‫الصحيحة ، وأنك قد نشرت جميع المنافذ وأنك حصلت على البيانات محمية في وحدة تخزين.
‫دعنا نلقي نظرة سريعة على ما تواجهه.
‫تخيل أنك مضطر لتصميم الأوامر والبنية الخاصة بذلك.
‫وهذا ما سيعطيه المطور لك من كتب هذا التطبيق.
‫حسنًا في هذه الحالة ، ربما يكون الكثير من المطورين هم من كتبوا هذا التطبيق ، أليس كذلك؟
‫نظرًا لأننا نمتلك بالفعل واجهة ويب في Python ، فلدينا واجهة ويب خلفية
‫تعمل في Node.
‫لدينا عملية عاملة قيد التنفيذ. NET ومن ثم لدينا مخزن قيمة مفتاح Redis
‫وقاعدة بيانات PostgreSQL.
‫هذا في الواقع شيء أراه أكثر فأكثر ، حيث تقوم فرق مختلفة بكتابة أجزاء مختلفة من الحل ،
‫ويكونون قادرين فقط على اختيار اللغة التي يعتقدون أنها الأفضل لهذا السيناريو.
‫وفي عالم الحاويات ، يتألق هذا النوع من التطبيقات حقًا. نظرًا لأن جميع تطبيقاتنا مجزأة ، فلا يزال
‫بإمكانهم العمل تقنيًا
‫على نفس الجهاز ولكنهم جميعًا محميون من بعضهم البعض حتى لا ينتهي بك الأمر
‫مع Node المتعارض مع التبعيات على Python أو أي شيء آخر.
‫ستلاحظ هنا أيضًا تدفق حركة المرور ، ولا يحتوي تطبيق التصويت عليها ، ولكن يجب أن يكون
‫هناك سهم صغير يأتي في هذا المكان حيث سيأتي المستخدمون في جزء تطبيق التصويت.
‫ويمكنك أن ترى أن تطبيق التصويت يجب أن يدفع أصواتك لهذا التطبيق ، بالمناسبة
‫، ستصوت للقطط والكلاب.
‫سيتم دفع ذلك إلى Redis ومن ثم سيقوم العامل بالفعل بفحص نظام Redis بحثًا عن أي شيء
‫في قائمة الانتظار ثم يقوم بدفع النتائج إلى Postgres والتي سيتم عرضها بعد ذلك على واجهة WebSockets
‫الخلفية التي يتم تحديثها فعليًا كما أنت التصويت.
‫إذا انتقلنا إلى الدليل سريعًا ، فقد وضعت بعض الملاحظات هنا لمساعدتك على طول الطريق لأن هناك
‫بعض الأشياء المختلفة والجديدة قليلاً.
‫ولكن ، ستكون منطقة الخدمات مكتوبة نوعًا ما كما لو كانت من شخص يعرف تطبيقه ولكنه لم يعرف في الواقع
‫كيفية تنفيذ ذلك في Docker. وهذا سيناريو شائع جدًا.
‫يمكنك أن ترى في الخدمات التي قمت بإدراجها الصورة التي تحتاج إلى نشرها ، الاسم
‫الفعلي الذي تحتاجه لمنحه ، لأن تلك الصور مهمة.
‫هذه صور ، للأسف ، مشفرة بشدة للأسماء التي سيبحثون عنها على الشبكة.
‫من الناحية المثالية ، قد ترغب في التطبيقات التي يمكنك تكوينها على الفور لما تحتاج إلى القيام به للأسماء
‫، ولكن في هذه الحالة ، سيبحث التصويت على وجه التحديد عن سجل DNS يسمى redis. يمكنك أن ترى أن هناك بالفعل
‫شبكتين هنا. لدينا واجهة أمامية وشبكة خلفية. هذا نموذجي أيضًا بالنسبة إلى
‫تطبيق أكبر حيث قد ترغب في حماية قاعدة البيانات الخاصة بك على شبكة خلفية بحيث لا يكون لتطبيق
‫مستخدم الواجهة الأمامية وصول مباشر إليها.
‫وهذا ما نعرضه هنا وستلاحظ أن العامل في الواقع متصل بشبكتين.
‫لذلك عند استخدام أمر الإنشاء ، تذكر أنك تستخدم خدمة عامل ميناء لا تنشئ تشغيل عامل ميناء.
‫لذلك عند استخدامك لخدمة docker ، عليك إنشاء الأمر ، ستحتاج إلى تحديد --network
‫مرتين ، مرة للواجهة الأمامية ، ومرة للواجهة الخلفية.
‫من الواضح أنك تعرف كيفية إنشاء شبكاتك أولاً.
‫لذلك تم تحديد بعض من ذلك هنا. وإذا كنت بحاجة إلى الصورة مرة أخرى ، فإن الرسم التخطيطي للهندسة
‫موجود هنا أيضًا ، فقط في حالة أن ذلك يساعد من الناحية المفاهيمية في كيفية نشر هذا.
‫وبالطبع ، سيكون لديك وثائق Docker. قد تحتاج إلى استخدام --help في أمر إنشاء
‫الخدمة الذي سيمنحك جميع الخيارات المختلفة التي قد تحتاجها.
‫ستحتاج فقط إلى ثلاثة أو أربعة من هؤلاء. إذا تعثرت مع الأوامر نفسها ، فقد ترغب
‫في مراجعة الوثائق الفعلية ، والتي سأضعها في موارد هذا القسم.
‫لكن هذا المستند المحدد ضمن Swarm يذهب في الواقع إلى إنشاء الخدمات وتكوين الخدمات.
‫لذا ، فهي مليئة بالكلمات قليلاً ، لكنها تحتوي على الكثير من المعلومات التي قد تساعدك إذا علقت
‫هنا.
‫في الفيديو التالي ، سأعرض هذا الشيء بالكامل بنفسي كما لو كنت أنت.
‫حظا سعيدا واستمتع ببعض المرح.