พยายามทำให้สิ่งนี้เรียบง่ายที่สุดเท่าที่จะเป็นไปได้และอินเทอร์เฟซที่กำหนดไว้อย่างดีและจัดทำเป็นเอกสาร การบำรุงรักษาและแก้ไขข้อบกพร่องของระบบที่ซับซ้อนในการผลิตกลายเป็นนรกได้ง่าย ดังนั้นหากมีวิธีการที่ง่ายและซับซ้อนให้คิดสองครั้งก่อนที่คุณจะไปกับวิธีที่ซับซ้อน
การกำหนดบริการ
ฉันคิดว่าขั้นตอนแรกคือการระบุบริการและการอ้างอิงของพวกเขา : เนื้อหาคงที่, การรับรองความถูกต้อง, แชทท้องถิ่น, แชททั่วโลก, แชทระดับภูมิภาค, แชทภูมิภาค, รายชื่อเพื่อน, กิลด์, กระเป๋า / สินค้าคงคลัง, ประมูลบ้าน, แผนที่โลก, ...
จากนั้นสำหรับแต่ละบริการเหล่านี้ตัดสินใจว่าลูกค้าอาจพูดคุยกับพวกเขาโดยตรง ตัวอย่างเช่นมันค่อนข้างง่ายที่จะให้ลูกค้าพูดคุยโดยตรงกับเซิร์ฟเวอร์ที่รับผิดชอบช่องทางการแชททั่วโลก เซิร์ฟเวอร์โลกไม่จำเป็นต้องมีส่วนร่วมในข้อความแชทเลย การแชทระดับภูมิภาคสามารถใช้งานได้ในลักษณะเดียวกัน แต่เซิร์ฟเวอร์ทั่วโลกต้องแจ้งเซิร์ฟเวอร์แชทเมื่อผู้เล่นเปลี่ยนภูมิภาค อีกครั้งพวกเขาไม่ต้องสนใจข้อความ
ขั้นตอนที่สามคือการคิดเกี่ยวกับสมดุลภาระภายในบริการ ตัวอย่างเช่นแชทระดับโลกและระดับภูมิภาคสามารถแบ่งออกเป็นหลาย ๆ เซิร์ฟเวอร์ตามชื่อของพวกเขา มันอาจเป็นความคิดที่ดีที่จะไม่ใช้รหัสที่ยากแยกนี้ในไคลเอนต์ แต่ให้บริการค้นหา
เซิร์ฟเวอร์โลก
ส่วนที่ยากที่สุดมักจะเป็นเซิร์ฟเวอร์ของโลกดังนั้นฉันจึงเริ่มด้วยวิธีการง่ายๆ มันอาจเป็นความคิดที่ดีที่จะให้ลูกค้าพูดคุยโดยตรงกับเซิร์ฟเวอร์ที่รับผิดชอบพื้นที่ที่เขาอยู่ดังนั้นในการเข้าสู่ระบบหรือภูมิภาคข้ามไคลเอนต์จะต้องมีการบอกกับเซิร์ฟเวอร์ที่จะเชื่อมต่อกับ
วิธีง่ายๆคือการแบ่งโลกออกเป็นภูมิภาคที่เป็นอิสระ ด้วยภูมิภาคที่เป็นอิสระฉันหมายความว่าผู้เล่นไม่สามารถมองจากส่วนหนึ่งไปยังอีกส่วนหนึ่งและมอนสเตอร์ไม่สามารถข้ามส่วนได้ ภูมิภาคเหล่านั้นแตกต่างจากภูมิภาคที่ผู้เล่นเห็นตามภูมิทัศน์และเรื่องราวของโลกภายนอก โดยปกติแล้วสัตว์ประหลาดส่วนใหญ่จะอยู่ในคุกใต้ดินและผู้เล่นมักจะยอมรับว่าพวกเขาต้องเดินผ่านประตูเพื่อเข้าสู่ดันเจี้ยน โดยเฉพาะอย่างยิ่งถ้าดันเจี้ยนเหล่านั้นมีการยกตัวอย่างในแต่ละกลุ่มผู้เล่น ตัวอย่างอื่น ๆ ในโลกภายนอกเป็นทวีปและหุบเขาที่ล้อมรอบด้วยภูเขาสูง
โลกอย่างต่อเนื่องวิธีการได้รับความซับซ้อนได้อย่างรวดเร็วจริงๆดังนั้นจึงทำให้ความรู้สึกในการวางแผนได้ดี: สิ่งที่ข้อมูลไม่จำเป็นต้องมีลูกค้าได้อย่างไร เซิร์ฟเวอร์ต้องแชร์ข้อมูลใด ผู้เล่นส่วนใหญ่จะโต้ตอบกับวัตถุเท่านั้น (รวมถึงสัตว์ประหลาดและ NPCs) ในภูมิภาคเดียวกัน คุณสามารถโกงได้โดยวางวัตถุให้อยู่นอกขอบเขตการคลิกจากเส้นขอบของโซน ซึ่งหมายความว่าลูกค้าส่วนใหญ่ให้ความสนใจในการอ่านข้อมูลเท่านั้นสำหรับโซนเพื่อนบ้าน ในกรณีเหล่านี้เซิร์ฟเวอร์โซนไม่จำเป็นต้องประสานงานใด ๆ ยกเว้นการตรวจสอบสิทธิ์ว่าผู้เล่นอยู่ใกล้พอที่จะเชื่อมต่อกับโซนใกล้เคียง
สิ่งนี้ทำให้เหลือเพียงกรณีเล็ก ๆ น้อย ๆเท่านั้นที่วัตถุหรือการกระทำต้องข้ามชายแดนเซิร์ฟเวอร์ ซึ่งเป็นสิ่งที่ดีเพราะกรณีเหล่านี้เช่นลูกศรและคาถามีประสิทธิภาพที่สำคัญ มันอาจเป็นความคิดที่ดีที่จะแยกการต่อสู้เป็นการโจมตีและการป้องกัน ดังนั้นเซิร์ฟเวอร์ของนักเวทย์จะกำหนดพารามิเตอร์การโจมตีรวมถึงตำแหน่งของล้อ เซิร์ฟเวอร์ของผู้พิทักษ์จะได้รับข้อความเกี่ยวกับการโจมตีและคำนวณผลกระทบ เซิร์ฟเวอร์ของผู้โจมตีไม่จำเป็นต้องรู้เกี่ยวกับผลกระทบ ลูกค้าจะเรียนรู้เกี่ยวกับมันโดยใช้การเชื่อมต่อแบบอ่านอย่างเดียวของเขา
ขึ้นอยู่กับความซับซ้อนของรุ่นเครื่องเล่นของคุณอาจใช้เวลาสองสามวินาทีในการถ่ายโอนไปยังเซิร์ฟเวอร์อื่น (Second Life มีปัญหาใหญ่ในเรื่องนี้) ปัญหานี้สามารถบรรเทาได้ด้วยการเตรียมการโอนล่วงหน้าเมื่อผู้เล่นเข้าใกล้ชายแดนเสมือนจริง เพื่อให้ข้อมูลเครื่องเล่นส่วนใหญ่ถูกแคชไว้แล้วบนเซิร์ฟเวอร์ปลายทางเมื่อมีการส่งมอบจริง
สรุป
แบ่งปัญหาด้วยการกำหนดบริการต่าง ๆ ที่สามารถแบ่งข้ามเซิร์ฟเวอร์ด้วยการพึ่งพาเพียงเล็กน้อย ในขั้นตอนต่อไปให้ดูที่วิธีการทำโหลดบาลานซ์ภายในบริการที่สำคัญ มอบหมายงานให้สมดุลกับลูกค้าโดยสั่งให้เชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ที่เกี่ยวข้อง (เห็นได้ชัดว่าเซิร์ฟเวอร์ต้องตรวจสอบสิทธิ์) ทำให้ง่ายที่สุดเท่าที่จะเป็นไปได้จัดทำเอกสารความรับผิดชอบของการบริการและเซิร์ฟเวอร์ต่าง ๆ อย่างดีจัดเตรียมตัวเลือกเพื่อเปิดใช้งานการดีบัก
PS: เทคนิคเหล่านี้บางอย่างสามารถนำมาใช้เพื่อปรับปรุงความน่าเชื่อถือ และคุณควรระลึกไว้เสมอว่าการใช้เซิร์ฟเวอร์หลายเครื่องมีความเสี่ยงต่อการแตกหักที่สูงกว่ามาก ไม่เพียง แต่ในซอฟต์แวร์ แต่ยังอยู่ในระดับฮาร์ดแวร์