ฉันควรแยกเซิร์ฟเวอร์ล็อกอินออกจากเซิร์ฟเวอร์เกมหรือไม่?


15

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

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


1
คำถาม "การทำโหลดบาลานซ์ทำได้อย่างไรใน MMOs" อาจน่าสนใจ: gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann

คำตอบ:


15

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

นอกจากนี้เซิร์ฟเวอร์ล็อกอินเป็นเวคเตอร์การโจมตีที่น่าจะดีที่จะให้พวกมันแยกจากมุมมองความปลอดภัย

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


เวลาส่วนใหญ่ที่ฉันเห็นธงดังกล่าวใน gameserver db และภายใน loginserver db ดังนั้นเซิร์ฟเวอร์เข้าสู่ระบบสามารถตรวจสอบซึ่งกันและกันและถ้า logindb! = gamerserverdb ผู้ใช้ออกจากระบบ
daemonfire300

10

สิ่งสำคัญอย่างหนึ่งในการพัฒนา MMOs คือการบรรลุความสามารถในการปรับขนาดและอนุญาตให้มีการทำโหลดบาลานซ์

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

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

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


2

ในฐานะผู้เล่น WoW คนก่อนประสบการณ์ของฉันคือเซิร์ฟเวอร์การเข้าสู่ระบบนั้นเป็นจุดอ่อนที่สุดในห่วงโซ่เสมอ

เซิร์ฟเวอร์ทั่วโลกมักจะมีความเสถียรอย่างน่าประทับใจแม้จะรองรับการโหลดที่ยอดเยี่ยม (เช่นการขยายแพ็คใหม่) ค่อนข้างดี

แต่เซิร์ฟเวอร์การเข้าสู่ระบบดูเหมือนจะไม่สามารถรับมือได้ดีและมักจะหยุดทำงานในขณะที่เซิร์ฟเวอร์ทั่วโลกใช้ได้ (หมายความว่าหากคุณขาดการเชื่อมต่อในการโจมตี / ดันเจี้ยนคุณจะไม่สามารถกลับมาได้ แต่ผู้เล่นคนอื่นกำลังรอคุณอยู่!)

และตอนนี้ระบบการเข้าสู่ระบบของ WoW ได้ถูกรวมเข้าใน Battle.Net แล้ว Starcraft 2 จะไม่สามารถใช้งานได้เมื่อ WoW อยู่ภายใต้ภาระงานหนัก

ดังนั้นหากคุณกำลังสร้างเกมที่จะมีผู้ใช้จำนวนมากความยืดหยุ่นและประสิทธิภาพของระบบการเข้าสู่ระบบก็มีความสำคัญเช่นกัน


1
ฉันเดาว่าเซิร์ฟเวอร์การเข้าสู่ระบบเป็นเป้าหมายหลักสำหรับการโจมตีด้วยรหัสผ่านที่ดุร้ายดังนั้นพวกเขาจึงต้องสามารถจัดการโหลดได้ค่อนข้างน้อย โดยเฉพาะอย่างยิ่งหากเกมดังกล่าวได้รับความนิยมจนผู้โจมตีเริ่มใช้ botnets (เพื่อป้องกันการ จำกัด อัตราต่อที่อยู่ IP) นอกเหนือจากการคาดเดาชื่อผู้ใช้แบบสุ่ม
Hendrik Brummermann

ความล้มเหลวในการเข้าสู่ระบบและการวางผู้เล่นเข้าสู่โลกสามารถมีหลายเหตุผล อาจเป็นเซิร์ฟเวอร์เข้าสู่ระบบ / ฐานข้อมูลบัญชี แต่อาจเกิดจากความล้มเหลวในการโหลดข้อมูลผู้เล่นจากฐานข้อมูล หรือจากความล้มเหลวของระบบที่ส่งผู้เล่นไปยังเซิร์ฟเวอร์โลก, เซิร์ฟเวอร์การแชท, ... ไฟร์วอลล์ภายในอาจยังสามารถจัดการการเชื่อมต่อที่รู้จัก แต่อาจไม่สามารถใช้กฎเพื่อตัดสินใจเกี่ยวกับการเชื่อมต่อใหม่ การเล่นผู้เล่นเข้าสู่โลกนั้นมีความซับซ้อนมากกว่าการโต้ตอบเมื่อคุณอยู่ข้างใน
Hendrik Brummermann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.