Tôi có nên giữ máy chủ đăng nhập ngoài máy chủ trò chơi không?


15

Tôi đang nghĩ đến việc tạo một máy chủ MMO và tôi đã xem xét cách các trò chơi khác cấu trúc mạng của họ. Một trong những điều tôi nhận thấy là luôn có máy chủ Đăng nhập và sau đó là máy chủ trò chơi.

Tôi vẫn quyết định liệu tôi có nên làm điều này không, nhưng tôi muốn nghe một số ý kiến ​​trước. Ưu điểm của việc này là gì và làm thế nào để máy chủ đăng nhập giao tiếp với máy chủ trò chơi để xử lý thông tin đăng nhập?


1
Câu hỏi "Làm thế nào để cân bằng tải đạt được trong MMO?" có thể thú vị: gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann

Câu trả lời:


15

Tôi tin rằng điều này chủ yếu là do thực tế là việc đăng nhập và xử lý trò chơi độc lập ít nhiều về mặt logic, do đó chúng thường được tách riêng để tách riêng tốt hơn, bảo trì dễ dàng hơn và khả năng mở rộng. Họ không nhất thiết phải cư trú trên các máy chủ vật lý khác nhau, họ có thể chạy tốt như các dịch vụ độc lập trên cùng một máy. Nếu lưu lượng truy cập tăng quá lớn, máy chủ đăng nhập có thể dễ dàng được chuyển sang máy khác.

Ngoài ra, các máy chủ đăng nhập là một vectơ tấn công có khả năng vì vậy thật tốt khi tách chúng ra khỏi quan điểm bảo mật.

Trong nội bộ, các dịch vụ phía máy chủ khác nhau có thể sử dụng các ổ cắm thông thường để liên lạc với nhau, có thể trên cùng một máy hoặc trên một máy khác trong cụm. Ngoài ra, một máy chủ cơ sở dữ liệu có thể được sử dụng để duy trì cờ 'được đăng nhập' cho mỗi người dùng.


Hầu hết thời gian tôi thấy một cờ như vậy trong db máy chủ trò chơi và bên trong db máy chủ đăng nhập, vì vậy máy chủ đăng nhập có thể kiểm tra lẫn nhau và nếu logindb! = Gamerserverdb người dùng sẽ đăng xuất.
daemonfire300

10

Một khía cạnh rất quan trọng trong phát triển MMO là đạt được khả năng mở rộng và cho phép cân bằng tải.

Người dùng xác thực bằng cách kiểm tra thông tin đăng nhập, trạng thái cấm, đếm các lần đăng nhập thất bại gần đây, v.v. là một nhiệm vụ có thể được thực hiện mà không cần biết bất kỳ điều gì về logic trò chơi hoặc dữ liệu trò chơi. Vì vậy, rất dễ dàng để di chuyển nó đến cụm máy chủ của riêng mình.

Hơn nữa, các máy chủ đăng nhập là một "lối vào" nổi tiếng để khách hàng liên hệ. Sau khi xác thực thành công, họ có thể gửi máy khách đến máy chủ phù hợp trong cụm máy chủ trò chơi. Việc gửi này có thể được thực hiện bằng cách chuyển tiếp kết nối mạng đến đúng máy chủ trò chơi hoặc yêu cầu khách hàng mở một kết nối mới đến một máy chủ trò chơi phù hợp.

Bạn nên suy nghĩ về việc cắt giảm hệ thống của bạn để phân phối sớm. Nó rất dễ dàng để chạy một số phần trên một máy chủ. Nhưng thật khó để phân chia những thứ đã được phát triển thành một đơn vị.


2

Là một người chơi WoW trước đây, kinh nghiệm của tôi là máy chủ đăng nhập luôn là liên kết yếu nhất trong chuỗi.

Các máy chủ thế giới thường ổn định một cách ấn tượng, thậm chí xử lý tải đặc biệt (ví dụ: phát hành gói mở rộng mới) khá tốt.

Nhưng (các) máy chủ đăng nhập dường như chưa bao giờ đối phó tốt như vậy và sẽ thường xuyên bị ngừng hoạt động trong khi các máy chủ thế giới vẫn ổn. (có nghĩa là nếu bạn mất kết nối trong một cuộc đột kích / ngục tối, bạn không thể quay lại, nhưng những người chơi khác đang đợi bạn!)

Và bây giờ khi hệ thống đăng nhập WoW được sáp nhập vào Battle.Net, Starcraft 2 có thể trở nên không khả dụng khi WoW đang tải nặng (như đã xảy ra trong vài giờ khi Cataclysm ra mắt)

Vì vậy, nếu bạn đang xây dựng một trò chơi sẽ có số lượng người dùng rất lớn, thì khả năng mở rộng và hiệu suất của hệ thống đăng nhập cũng rất quan trọng.


1
Tôi đoán các máy chủ đăng nhập là mục tiêu chính cho các cuộc tấn công vũ phu vào mật khẩu, vì vậy chúng phải có khả năng xử lý khá nhiều tải. Đặc biệt là nếu trò chơi phổ biến đến mức những kẻ tấn công bắt đầu sử dụng botnet (để ngăn chặn giới hạn tốc độ trên mỗi địa chỉ IP) ngoài việc đoán ngẫu nhiên thông thường tên người dùng.
Hendrik Brummermann

Không đăng nhập và đưa người chơi vào thế giới có thể có nhiều lý do. Nó có thể là máy chủ đăng nhập / cơ sở dữ liệu tài khoản. Nhưng nó có thể được gây ra bởi lỗi không tải được thông tin người chơi từ cơ sở dữ liệu. Hoặc do lỗi hệ thống gửi người chơi đến các máy chủ thế giới, máy chủ trò chuyện, ... Một tường lửa nội bộ vẫn có thể xử lý các kết nối đã biết nhưng có thể không thể áp dụng quy tắc để quyết định về các kết nối mới. Chơi một người chơi vào thế giới phức tạp hơn nhiều so với việc tương tác một khi bạn ở trong đó.
Hendrik Brummermann
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.