Score:0

อะไรคือข้อกังวลเกี่ยวกับความสามารถในการปรับขนาดของเซิร์ฟเวอร์ผับ/เซิร์ฟเวอร์ย่อย

ธง cn

ฉันกำลังมองหาการตั้งค่าบริการ pub/sub ด้วย websockets จากสิ่งที่ฉันสามารถบอกได้ว่าคอขวดของความสามารถในการปรับขนาดส่วนใหญ่จะอยู่ที่หน่วยความจำ ซึ่งส่งผลต่อจำนวนซ็อกเก็ตที่สามารถเปิดได้ในแต่ละครั้ง ดังนั้นฉันจึงคิดว่าควรแยกส่วนนี้ออกจากเซิร์ฟเวอร์อื่นๆ ที่ใช้บริการเช่น API ถูกต้องหรือไม่ ฉันนึกภาพออกว่าหน่วยความจำมีราคาแพงกว่าพลังการประมวลผลเมื่อพูดถึงการโฮสต์ ดังนั้นมีแนวทางปฏิบัติที่ดีที่สุดใดบ้างเมื่อพูดถึงการปรับเซิร์ฟเวอร์ประเภทนี้ให้เหมาะสมสำหรับความสามารถในการปรับขนาดและค่าใช้จ่าย

เป้าหมายคือเพื่อให้ผู้ใช้เว็บแอปพลิเคชันนี้มีการอัปเดตตามเวลาจริงในขณะที่ระบบเช็คอินด้วยข้อมูลใหม่โดยไม่ต้องสำรวจแบ็คเอนด์เป็นระยะ แต่เราไม่ต้องการเพิ่มต้นทุนเซิร์ฟเวอร์เป็นสองเท่า มิฉะนั้นอาจไม่คุ้มค่า เรากำลังใช้ AWS EC2 กับการทำโหลดบาลานซ์และการปรับขนาดอัตโนมัติสำหรับเซิร์ฟเวอร์ API ปัจจุบันของเรา

Score:1
ธง br

การใช้หน่วยความจำที่แท้จริงของซ็อกเก็ตเดียวนั้นไม่มากนัก

สิ่งที่กินหน่วยความจำคือสถานะที่เกี่ยวข้องกับไคลเอ็นต์ที่สนใจในการอัปเดตใด และไคลเอนต์ใดได้รับการอัปเดตเฉพาะแล้ว

ในการใช้งานแบบดั้งเดิม (เช่น การใช้สแต็กเครือข่าย OS) สถานะหลังจะถูกเก็บไว้ในรูปแบบของบัฟเฟอร์ขาออก ดังนั้นหากมีการส่งการอัปเดตไปยังไคลเอ็นต์ 10,000 เครื่อง ข้อมูลจะถูกคัดลอก 10,000 ครั้ง แต่ละสำเนาจะต่อท้าย คิวขาออกซึ่งเสริมด้วยส่วนหัวที่จำเป็น (ซึ่งมีสถานะต่อการเชื่อมต่อ) จากนั้นตัวอธิบายจะถูกสร้างขึ้นสำหรับฮาร์ดแวร์ที่สั่งให้ส่งแพ็กเก็ตที่เชื่อมระหว่างส่วนหัวและเพย์โหลด

สำเนาเพย์โหลดต่อไคลเอ็นต์จะถูกเก็บไว้ในหน่วยความจำจนกว่าไคลเอ็นต์จะรับทราบ และนั่นคือที่มาของข้อกำหนดหน่วยความจำ หน่วยความจำนี้ไม่สามารถเพจเอาต์ได้ ดังนั้นจึงสร้างแรงกดดันต่อหน่วยความจำและแคชในแอปพลิเคชันอื่นๆ

มีการใช้งานที่ปรับใช้บางส่วนของสแต็กเครือข่ายภายในโปรแกรมเซิร์ฟเวอร์เอง และสิ่งเหล่านี้สามารถหลีกเลี่ยงการคัดลอกโดยการอ้างอิงการนับหรือสร้างเพย์โหลดใหม่ตามต้องการ ซึ่งช่วยให้คุณหลีกหนีจากการใช้หน่วยความจำน้อยลงมาก แต่เกี่ยวข้องกับจำนวนมาก การเข้ารหัสที่ยุ่งยากเพื่อให้สามารถปรับขนาดได้อย่างแท้จริง โดยเฉพาะอย่างยิ่งเซิร์ฟเวอร์แบบหลายซ็อกเก็ตก่อให้เกิดปัญหาที่น่าสนใจบางอย่างที่สแต็กเครือข่ายระบบปฏิบัติการรู้วิธีแก้ไขอยู่แล้ว

ตัวเลือกที่คุณมี

  1. เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เดียวกันกับแอป
  2. เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เฉพาะที่มีระบบปฏิบัติการเครือข่าย
  3. เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เฉพาะที่มีเครือข่ายแบบกำหนดเอง
  4. เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เฉพาะหลายเครื่อง

เป็นกลยุทธ์การยกระดับของคุณเมื่อบริการเติบโตขึ้น การย้ายจากแชร์เป็นเฉพาะไม่จำเป็นต้องมีการวางแผนมากนัก และสามารถทำได้ตามต้องการ เมื่อเกิดขึ้นแล้วก็ถึงเวลาเตรียมการในขั้นต่อไป

การขยายขนาดเป็นเซิร์ฟเวอร์หลายเครื่องจะนำความไม่แน่นอนมาสู่ระบบของคุณ เนื่องจากไคลเอ็นต์อาจได้รับการอัปเดตในลำดับที่ต่างกัน ดังนั้น เพื่อให้ขั้นตอนการปรับขนาดนี้ประสบความสำเร็จ ลูกค้าของคุณจะต้องทราบเรื่องนี้และสามารถนำเสนอมุมมองที่สอดคล้องกัน -- ไม่ว่าจะเล็กน้อยหรือยากขึ้นอยู่กับการใช้งานจริงของคุณ

tl; ดร: ไม่จำเป็นต้องเพิ่มประสิทธิภาพก่อนเวลาอันควร แยกบริการออกเพื่อให้ขั้นตอนการปรับขนาดขั้นแรกคือการเปลี่ยนแปลงการกำหนดค่าอย่างง่าย และเริ่มการเพิ่มประสิทธิภาพทันทีที่เกิดขึ้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา