การใช้หน่วยความจำที่แท้จริงของซ็อกเก็ตเดียวนั้นไม่มากนัก
สิ่งที่กินหน่วยความจำคือสถานะที่เกี่ยวข้องกับไคลเอ็นต์ที่สนใจในการอัปเดตใด และไคลเอนต์ใดได้รับการอัปเดตเฉพาะแล้ว
ในการใช้งานแบบดั้งเดิม (เช่น การใช้สแต็กเครือข่าย OS) สถานะหลังจะถูกเก็บไว้ในรูปแบบของบัฟเฟอร์ขาออก ดังนั้นหากมีการส่งการอัปเดตไปยังไคลเอ็นต์ 10,000 เครื่อง ข้อมูลจะถูกคัดลอก 10,000 ครั้ง แต่ละสำเนาจะต่อท้าย คิวขาออกซึ่งเสริมด้วยส่วนหัวที่จำเป็น (ซึ่งมีสถานะต่อการเชื่อมต่อ) จากนั้นตัวอธิบายจะถูกสร้างขึ้นสำหรับฮาร์ดแวร์ที่สั่งให้ส่งแพ็กเก็ตที่เชื่อมระหว่างส่วนหัวและเพย์โหลด
สำเนาเพย์โหลดต่อไคลเอ็นต์จะถูกเก็บไว้ในหน่วยความจำจนกว่าไคลเอ็นต์จะรับทราบ และนั่นคือที่มาของข้อกำหนดหน่วยความจำ หน่วยความจำนี้ไม่สามารถเพจเอาต์ได้ ดังนั้นจึงสร้างแรงกดดันต่อหน่วยความจำและแคชในแอปพลิเคชันอื่นๆ
มีการใช้งานที่ปรับใช้บางส่วนของสแต็กเครือข่ายภายในโปรแกรมเซิร์ฟเวอร์เอง และสิ่งเหล่านี้สามารถหลีกเลี่ยงการคัดลอกโดยการอ้างอิงการนับหรือสร้างเพย์โหลดใหม่ตามต้องการ ซึ่งช่วยให้คุณหลีกหนีจากการใช้หน่วยความจำน้อยลงมาก แต่เกี่ยวข้องกับจำนวนมาก การเข้ารหัสที่ยุ่งยากเพื่อให้สามารถปรับขนาดได้อย่างแท้จริง โดยเฉพาะอย่างยิ่งเซิร์ฟเวอร์แบบหลายซ็อกเก็ตก่อให้เกิดปัญหาที่น่าสนใจบางอย่างที่สแต็กเครือข่ายระบบปฏิบัติการรู้วิธีแก้ไขอยู่แล้ว
ตัวเลือกที่คุณมี
- เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เดียวกันกับแอป
- เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เฉพาะที่มีระบบปฏิบัติการเครือข่าย
- เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เฉพาะที่มีเครือข่ายแบบกำหนดเอง
- เรียกใช้บริการ pub/sub บนเซิร์ฟเวอร์เฉพาะหลายเครื่อง
เป็นกลยุทธ์การยกระดับของคุณเมื่อบริการเติบโตขึ้น การย้ายจากแชร์เป็นเฉพาะไม่จำเป็นต้องมีการวางแผนมากนัก และสามารถทำได้ตามต้องการ เมื่อเกิดขึ้นแล้วก็ถึงเวลาเตรียมการในขั้นต่อไป
การขยายขนาดเป็นเซิร์ฟเวอร์หลายเครื่องจะนำความไม่แน่นอนมาสู่ระบบของคุณ เนื่องจากไคลเอ็นต์อาจได้รับการอัปเดตในลำดับที่ต่างกัน ดังนั้น เพื่อให้ขั้นตอนการปรับขนาดนี้ประสบความสำเร็จ ลูกค้าของคุณจะต้องทราบเรื่องนี้และสามารถนำเสนอมุมมองที่สอดคล้องกัน -- ไม่ว่าจะเล็กน้อยหรือยากขึ้นอยู่กับการใช้งานจริงของคุณ
tl; ดร: ไม่จำเป็นต้องเพิ่มประสิทธิภาพก่อนเวลาอันควร แยกบริการออกเพื่อให้ขั้นตอนการปรับขนาดขั้นแรกคือการเปลี่ยนแปลงการกำหนดค่าอย่างง่าย และเริ่มการเพิ่มประสิทธิภาพทันทีที่เกิดขึ้น