Giải Pháp Mạng Ngang Hàng P2P Cho Cập Nhật Client Game Online - nói dối e blog

Giải Pháp Mạng Ngang Hàng P2P Cho Cập Nhật Client Game Online

Gần đây tôi đang nghiên cứu một kế hoạch triển khai mạng ngang hàng P2P để đồng bộ hóa dữ liệu, phục vụ cho việc cập nhật client game online trong tương lai. Mặc dù các phần mềm như BitTorrent đã rất trưởng thành, nhưng do đặc thù riêng của game online, tôi tin rằng có thể xây dựng một hệ thống tối ưu hơn.

Trong game online, chúng ta có sẵn một hệ thống mạng P2P tự nhiên và ổn định. Lấy ví dụ từ tựa game “Đại Mộng Tây Du” của công ty, số người chơi cùng lúc đã vượt mốc 800.000 người. Toàn bộ người chơi đều cần cập nhật cùng một phiên bản client, điều này hoàn toàn khác biệt so với mô hình chia sẻ file ngẫu nhiên trên mạng BitTorrent.

Mạng game có thể tận dụng hệ thống máy chủ game làm trung tâm điều phối, tương tự như máy chủ seed trong BitTorrent. Phiên bản BitTorrent mới thậm chí sẽ tích hợp danh sách người dùng phân tán. Tuy nhiên, khi hàng chục vạn game thủ cùng lúc cần tải một file duy nhất, việc mỗi người đều biết vị trí của hàng chục vạn người khác là điều không thực tế. Giải pháp phân tán là cần thiết, đặc biệt khi hệ thống máy chủ game của chúng ta được thiết kế chuyên dụng với băng thông và hiệu năng vượt trội, hoàn toàn có thể khai thác tối đa lợi thế này.

Về vấn đề danh sách người dùng phân tán, tôi xin phép chưa bàn sâu ở đây. Gần đây tôi tập trung nhiều hơn vào tối ưu hóa mạng LAN cục bộ.

Hiện nay, đa số game thủ tại các quán net ở Việt Nam gặp khó khăn trong việc cập nhật client. Trước đây, chủ quán thường tự đồng bộ dữ liệu nội bộ. Ngày nay, nhiều game tích hợp BitTorrent, nhưng khi số lượng người dùng quá lớn, các máy chủ seed lại trở thành điểm nghẽn (đây là thực trạng đang xảy ra với “Đại Mộng Tây Du” và “Đại Thoại Tây Du” của công ty).

Giải pháp tối ưu cho môi trường LAN là: Khi một game thủ phát hiện file client đã tồn tại trong mạng LAN, họ sẽ không kết nối ra ngoài mà trao đổi nội bộ. Toàn bộ LAN hoạt động như một nút mạng P2P bên ngoài, phân công nhiệm vụ kết nối ra ngoài một cách hợp lý, tránh trùng lặp và phân tán tải trọng để không gây quá tải cho bất kỳ máy tính nào.

Trong mạng LAN, mọi client đều ngang bằng nhau, không có máy chủ trung tâm, nên việc điều phối rất phức tạp. Do đó, cần bầu chọn một “người lãnh đạo” tạm thời. Tuy nhiên, vì người lãnh đạo này có thể không ổn định về hiệu năng, chúng ta cần:

  1. Hạn chế nhiệm vụ giao cho lãnh đạo
  2. Bầu chọn sẵn người thay thế được cộng đồng công nhận

Phương pháp bầu chọn đơn giản nhất:

  • Quy tắc mặc định: Người có địa chỉ IP nhỏ nhất sẽ là ứng viên lãnh đạo
  • Khi một client khởi động, nó sẽ phát tín hiệu quảng bá trên LAN để tranh cử
  • Nếu đã có lãnh đạo hiện tại, mọi người sẽ thông báo danh tính lãnh đạo cho ứng viên mới
  • Nếu ứng viên mới phát hiện lãnh đạo cũ không phản hồi, nó sẽ phát động bầu chọn lại

Mọi giao dịch truyền tải dữ liệu P2P trong LAN đều phải được lãnh đạo phê duyệt. Khi một client mới gia nhập, nó phải tìm lãnh đạo để được phân công ít nhất một “đối tác” trong mạng LAN để đồng bộ dữ liệu. Lưu ý: Bất kỳ ai trong LAN yêu cầu file đều được đáp ứng ngay mà không cần sự cho phép của lãnh đạo.

Khi LAN cần kết nối ra ngoài:

  • Lãnh đạo sẽ phân công nhiệm vụ kết nối cho các thành viên
  • Khi một thành viên hoàn thành nhiệm vụ, họ sẽ gửi dữ liệu thu được về cho lãnh đạo
  • Sau khi LAN có đầy đủ dữ liệu, lãnh đạo sẽ điều phối các thành viên chia sẻ dữ liệu ra ngoài mạng P2P

Tất cả thành viên phải định kỳ kiểm tra sự tồn tại của lãnh đạo để đề phòng trường hợp lãnh đạo “mất tích”.

Giải pháp này không chỉ giảm tải cho máy chủ trung tâm mà còn tối ưu hóa tốc độ cập nhật trong môi trường LAN, đặc biệt phù hợp với các quán net tại Việt Nam.

0%