‫เอาล่ะตอนนี้เราได้เรียนรู้ทั้งหมดเกี่ยวกับ Swarm scaling ด้วยเครือข่ายแบบ overlayed และ
‫routing routing ฉันต้องการให้คุณผ่านกระบวนการสร้างสินทรัพย์หรือวัตถุที่คุณต้องการปรับใช้ในสถานการณ์ Swarm
‫ดังนั้นเราจึงไม่ใช้คำสั่งนักเทียบท่าเรียกใช้อีกต่อไป แต่ระบบเครือข่ายและไดรฟ์จะเหมือนกัน แต่แตกต่างกันเล็กน้อย
‫ฉันต้องการให้สถานการณ์จริงแก่คุณในแอพหลายชั้นและเราจะใช้แอพ Voting แบบกระจายของนักเทียบท่า
‫จริง ๆ แล้วเรียกว่าแอปลงคะแนนตัวอย่าง
‫คุณอาจเคยเห็นมันมาก่อนใน Docker keynotes หรือในแล็บหรือแบบฝึกหัดอื่น ๆ
‫เป็นเรื่องที่ค่อนข้างธรรมดาและฉันคิดว่าเป็นแอพที่ยอดเยี่ยมเพราะมันมีบทบาทอย่างน้อยห้าบทบาทหรือมีคอนเทนเนอร์ต่าง ๆ ที่คุณต้องการปรับใช้
‫และพวกเขาทั้งหมดทำหน้าที่พิเศษและพวกเขากำลังทำสิ่งที่ใช้งานได้จริงทำในสิ่งที่ควรทำ
‫และเพื่อให้คุณสามารถเล่นกับมันและมีส่วนประกอบสถาปัตยกรรมกระจายทั่วไปเช่นส่วนหน้าเว็บและส่วนหลังของผู้ปฏิบัติงานและค่าคีย์ในฐานข้อมูล
‫ฉันคิดว่ามันมีประโยชน์จริงๆที่จะทำ
‫ในกรณีนี้คุณจะใช้ไดเรกทอรี swarm-app-1 มันเป็นจริงใน repo หลักสูตรของเรา ในนั้นไม่มีอะไรนอกจาก
‫readme และรูปภาพ จาก readme
‫นั้นคุณจะต้องสร้างวอลลุ่มและเครือข่ายสองสามแห่งและบริการห้าอย่างที่แอพนี้จำเป็นต้องใช้
‫อาจช่วยให้คุณลองใช้คำสั่งเหล่านี้แบบโลคัลหรือเขียนลงในเท็กซ์เอดิเตอร์ของคุณและเรียงลำดับมันเพราะมันจะซับซ้อนเล็กน้อย
‫เมื่อคุณสร้างบริการนักเทียบท่านั้นคุณจะต้องเชื่อมต่อกับเครือข่ายเฉพาะและเปิดพอร์ตและเรียกมันว่าชื่อเฉพาะและใช้รูปภาพที่เฉพาะเจาะจง
‫ดังนั้นมันอาจจะง่ายกว่าที่จะแก้ไขในเครื่องจากนั้นก็ตัดและวางลงในเปลือกของคุณไม่ว่า Swarm ของคุณจะอยู่ที่ใด
‫แต่นั่นเป็นเพียงฉัน
‫ทุกอย่างจะใช้ภาพ Docker Hub เพราะใน Swarm ที่ใช้งานจริงคุณไม่ต้องการสร้าง
‫นั่นไม่ใช่กระบวนการที่คุณต้องการในการผลิต Swarm ของคุณโดยทั่วไป
‫โดยปกติแล้วคุณต้องการทำสิ่งปลูกสร้างของคุณผ่านบริการออนไลน์อัตโนมัติบางอย่างเช่น Docker Hub หรือ Docker
‫Cloud หรือที่อื่น ๆ ใน CI / CD ไปป์ไลน์ที่ไม่กินทรัพยากรในการผลิต Swarm
‫ในสถานการณ์สมมตินี้เราสามารถจินตนาการได้ว่าภาพของเรากำลังถูกสร้างขึ้นที่อื่นและเก็บไว้ใน
‫Docker Hub และเราแค่ต้องดึงมันลงมา
‫และฉันจะพูดอย่างนี้เหมือนกับหลาย ๆ อย่างในวิทยาการคอมพิวเตอร์นี่คือวิทยาศาสตร์ครึ่งหนึ่งรูปแบบศิลปะครึ่งหนึ่ง
‫คำสั่งของคุณอาจอยู่ในคำสั่งซื้อที่แตกต่างกันโดยสิ้นเชิงหรือมีออปชั่นออปชั่นที่แตกต่างกันโดยสิ้นเชิง
‫คุณอาจเรียกเครือข่ายของคุณในสิ่งที่แตกต่างกัน
‫ไม่เป็นไร.
‫ในที่สุดผลลัพธ์ก็คือแอปพลิเคชันทำงานได้ซึ่งพวกเขาสามารถพูดคุยกันได้อย่างถูกต้องว่าคุณมีพอร์ตทั้งหมดที่เผยแพร่และคุณได้รับการปกป้องข้อมูลในโวลุ่ม
‫เรามาดูกันอย่างรวดเร็วว่าคุณกำลังทำอะไรอยู่
‫ลองนึกภาพคุณต้องออกแบบคำสั่งและสถาปัตยกรรมสำหรับสิ่งนี้
‫และนี่คือสิ่งที่นักพัฒนาจะมอบให้คุณที่เขียนแอพนี้
‫ในกรณีนี้อาจเป็นนักพัฒนาที่เขียนแอพนี้ใช่มั้ย
‫เพราะเรามีส่วนหน้าเว็บที่อยู่ใน Python เราจึงมีส่วนแบ็คเอนด์ของเว็บที่ทำงานในโหนด
‫เรามีกระบวนการของผู้ปฏิบัติงานที่ทำงานอยู่ NET จากนั้นเราก็มีที่เก็บค่าคีย์ Redis
‫และฐานข้อมูล PostgreSQL
‫นี่คือสิ่งที่ฉันเห็นบ่อยขึ้นเรื่อย ๆ ที่ทีมต่าง ๆ
‫เขียนส่วนต่าง ๆ ของโซลูชันและพวกเขาสามารถเลือกภาษาที่พวกเขาคิดว่าดีที่สุดสำหรับสถานการณ์นั้น
‫และในโลกของบรรจุภัณฑ์แอพพลิเคชั่นชนิดนี้ส่องแสงจริงๆ
‫เนื่องจากแอปพลิเคชันของเรามีการแบ่งกลุ่มทั้งหมดพวกเขายังคงสามารถทำงานทางเทคนิคบนเครื่องเดียวกัน แต่ทั้งหมดได้รับการปกป้องจากกันเพื่อให้คุณไม่ได้จบลงด้วยโหนดที่ขัดแย้งกับการพึ่งพา
‫Python หรืออะไรก็ตาม
‫คุณจะสังเกตเห็นกระแสการไหลของข้อมูลและแอพการลงคะแนนไม่ได้มี แต่ควรมีลูกศรเล็ก ๆ
‫เข้ามาซึ่งนี่คือที่ที่ผู้ใช้จะเข้ามาในส่วนแอปลงคะแนน
‫และคุณจะเห็นว่าแอปลงคะแนนต้องผลักดันการลงคะแนนของคุณสำหรับแอปพลิเคชันนี้ซึ่งคุณจะต้องลงคะแนนให้กับแมวและสุนัข
‫มันจะผลักดันให้เป็น Redis จากนั้นผู้ปฏิบัติงานจะตรวจสอบระบบ Redis
‫เพื่อหาอะไรในคิวจากนั้นจะผลักดันผลลัพธ์ลงใน Postgres ซึ่งจะแสดงบนแบ็กเอนด์ WebSockets
‫ที่อัปเดตจริงตามที่คุณ การออกเสียง
‫ถ้าเรากระโดดเข้าสู่สารบบอย่างรวดเร็วจริง ๆ
‫ฉันได้ใส่โน้ตไว้ที่นี่เพื่อช่วยคุณไปตลอดทางเพราะมีบางสิ่งที่แตกต่างและแปลกใหม่
‫แต่พื้นที่บริการจะเป็นแบบที่เขียนเหมือนมาจากคนที่รู้จักแอปพลิเคชันของพวกเขา แต่ไม่รู้จริง ๆ ว่าจะใช้งานสิ่งนี้ได้อย่างไรใน
‫Docker และนั่นเป็นสถานการณ์ที่ค่อนข้างธรรมดา
‫คุณสามารถเห็นได้ว่าในบริการที่ฉันระบุไว้รูปภาพใดที่คุณจำเป็นต้องนำไปใช้งานชื่อจริงที่คุณต้องให้เพราะเป็นสิ่งสำคัญ
‫เหล่านี้เป็นรูปภาพที่น่าเสียดายที่ฮาร์ดโค้ดสำหรับชื่อที่พวกเขากำลังมองหาในเครือข่าย
‫ในอุดมคติแล้วคุณต้องการให้แอปพลิเคชันที่คุณสามารถกำหนดค่าได้อย่างรวดเร็วสำหรับสิ่งที่พวกเขาต้องการทำชื่อ แต่ในกรณีนี้การลงคะแนนจะค้นหาระเบียน DNS ที่เรียกว่า
‫redis โดยเฉพาะ คุณจะเห็นว่ามีสองเครือข่ายจริงที่นี่
‫เรามีเครือข่ายส่วนหน้าและส่วนหลัง
‫นั่นเป็นเรื่องปกติของแอพพลิเคชั่นขนาดใหญ่ที่คุณอาจต้องการปกป้องฐานข้อมูลของคุณบนเครือข่ายแบ็กเอนด์เพื่อให้แอพผู้ใช้ส่วนหน้าไม่สามารถเข้าถึงได้โดยตรง
‫และนี่คือสิ่งที่เราแสดงที่นี่และคุณจะสังเกตเห็นว่าคนงานกำลังเชื่อมต่อกับเครือข่ายสองแห่ง
‫ดังนั้นเมื่อคุณใช้คำสั่งสร้างโปรดจำไว้ว่าคุณกำลังใช้บริการนักเทียบท่าสร้างไม่ได้เรียกใช้นักเทียบท่า
‫ดังนั้นเมื่อคุณใช้บริการนักเทียบท่าของคุณสร้างคำสั่งคุณจะต้องระบุ --network สองครั้งหนึ่งครั้งสำหรับ frontend
‫และอีกครั้งสำหรับ backend
‫เห็นได้ชัดว่าคุณรู้ที่จะสร้างเครือข่ายของคุณก่อน
‫ดังนั้นบางส่วนของที่ระบุไว้ที่นี่
‫และถ้าคุณต้องการภาพอีกครั้งแผนภาพสถาปัตยกรรมก็อยู่ที่นี่เช่นกันในกรณีที่ช่วยให้คุณมีแนวคิดในการปรับใช้สิ่งนี้
‫และแน่นอนคุณจะต้องมีเอกสารนักเทียบท่า คุณอาจจำเป็นต้องใช้คำสั่ง
‫- ช่วยในการบริการสร้างคำสั่งที่จะให้ตัวเลือกต่างๆที่คุณอาจต้องการ
‫คุณแค่ต้องการสามหรือสี่ในนั้น
‫หากคุณติดอยู่กับคำสั่งด้วยตนเองคุณอาจต้องการตรวจสอบเอกสารจริงซึ่งฉันจะใส่เข้าไปในแหล่งข้อมูลของส่วนนี้
‫แต่เอกสารเฉพาะภายใต้ Swarm นี้จริง ๆ แล้วเป็นการสร้างบริการและกำหนดค่าบริการ
‫ดังนั้นมันเป็นคำที่พูดน้อย แต่ก็มีข้อมูลมากมายที่อาจช่วยคุณได้หากคุณติดอยู่ที่นี่
‫วิดีโอต่อไปที่ฉันจะวิ่งผ่านสิ่งทั้งหมดนี้เองราวกับว่าฉันเป็นคุณ
‫ขอให้โชคดีและสนุก