Xây Dựng Multi-player Game Với Google Cloud Spanner
Fantasy Sport Game là live service game được xây dựng dựa trên dữ liệu thế giới thực. Các trò chơi này đòi hỏi một database mạnh mẽ, độ tin cậy cao, khả dụng trên toàn cầu và phản ứng nhanh với các workload khác nhau. Hãy cùng Cloud Ace tìm hiểu về cách Niveus sử dụng Google Cloud Spanner để xây dựng demo Fantasy Sport Game và cách Cloud Spanner xử lý workload.
Tại sao doanh nghiệp chọn Cloud Spanner cho multi-player game ?
Database có thể mở rộng, phân phối toàn cầu
Spanner là cơ sở dữ liệu được phân phối toàn cầu, có thể trải rộng. Spanner Architecture tách riêng tính toán khỏi bộ lưu trữ. Giúp tăng tính linh hoạt, giảm chi phí, cải thiện hiệu suất và tăng độ tin cậy. Bản chất phân tán trở thành một giải pháp lý tưởng cho game online.
Giao dịch nhất quán
Hỗ trợ các giao dịch ACID để hàng triệu hành động của player được bảo mật và nhất quán. Theo mặc định, Spanner đảm bảo quan sát tác động của tất cả các giao dịch trước khi bắt đầu hoạt động, bất kể phân phối hoặc lỗi node. Điều này rất quan trọng để lưu trữ trạng thái và các giao dịch trong game.
Tính khả dụng cao
Thời gian hoạt động của Cloud Spanner lên đến 99,999% kết hợp với thời gian bảo trì bằng 0 là điều kiện tuyệt với cho trải nghiệm của các player.
Triển Khai Fantasy Sports League Game (FSL)
Multi-player game yêu cầu thao tác đọc/ghi đối với từng hoạt động mà player thực hiện cùng với dữ liệu đã được lưu trữ (id, tên người dùng, mật khẩu, số liệu thống kê của họ, etc.) Ngoài thông tin cơ bản về player, hệ thống cũng phải lưu trữ trạng thái backend của game và derived data.
Multi-player game có lượng người dùng lớn sẽ yêu cầu về khả năng compute và storage. MySQL database sẽ yêu cầu developer tạo, triển khai và duy trì môi trường phân mảnh. Điều này khiến doanh nghiệp gặp nhiều khó khăn và tốn kém. Ngược lại, Spanner database tự động phân tách dữ liệu và phân phối dựa trên compute load, đồng thời quản lý sao chép để cung cấp trải nghiệm tuyệt vời cho người chơi.
Với bản demo game của Niveus, sử dụng Node JS cho lớp ứng dụng, Spanner làm backend game database, và Cloud Memorystore làm lớp bộ nhớ đệm để lưu trữ leaderboard data.
Doanh nghiệp có thể mở rộng kiến trúc cho các hoạt động phân tích như sử dụng Dataflow, BigQuery và Looker. BigQuery là cloud-based data warehouse có thể mở rộng, có độ tin cậy cao và bảo mật, để lưu trữ và phân tích các bộ dữ liệu lớn và Looker là một nền tảng kinh doanh thông minh mạnh mẽ giúp doanh nghiệp khám phá, chia sẻ và trực quan hóa dữ liệu của mình.
Cách Google Cloud Spanner Xử Lý Workload Trong Niveus Demo Game
Niveus đã triển khai game mà họ đã phát triển trên Spanner với các microservice như:
FSL-Backend-Common - Chứa một số phương thức và tiện ích được sử dụng bởi microservices khác.
FSL-MS-Quản lý tài nguyên - Xử lý endpoint hoạt động CRUD cho các bảng như: Chi tiết đội, Chi tiết trận đấu, Chi tiết người chơi, Chi tiết đội ảo , v.v.
FSL-MS-Simulator - Mô phỏng trận đấu.
FSL-MS-Cập nhật-Bảng xếp hạng - Để tính điểm và cập nhật bảng xếp hạng trong Memorystore.
FSL-MS-Display-Leaderboard - Hiển thị dữ liệu bảng xếp hạng cho một cuộc thi.
Mô phỏng trận đấu
FSL-MS-Simulator microservices bao gồm các API để mô phỏng các quả bóng và trận đấu riêng lẻ. /simulateBall: API được sử dụng để mô phỏng một quả bóng. Tương tự, toàn bộ trận đấu được mô phỏng bằng cách sử dụng API trận đấu mô phỏng bằng cách gọi /simulateMatch .
SimulateBall đẩy thông báo đến Pub/Sub topic simulatorListener and updateScore. UpdateScoreListener nhận gói dữ liệu từ Pub/Sub và gọi API /updateScore , API này tạo ra batches có độ dài cố định và chuyển sang updateRedis Pub/Sub topic để thực thi một lượng dữ liệu khổng lồ song song.
Updating Scores
Việc tính điểm dựa trên số điểm tăng dần của mỗi đội trong Memorystore khi trò chơi diễn ra. Sau khi điểm số được cập nhật trong Memorystore, nó sẽ được cập nhật trong Spanner.
Để mở rộng quy mô ghi, dữ liệu được đẩy tới Pub/Sub nơi tất cả người đăng ký lắng nghe các sự kiện xuất bản và bắt đầu ghi vào Spanner.
Lưu trữ dữ liệu Leaderboard trong Cloud Spanner
Niveus lưu trữ bảng xếp hạng trong Spanner, cho phép bất kỳ ai truy cập trang web sau khi kết thúc game đều có thể xem được. Các mô hình Machine Learning có thể được xây dựng trên dữ liệu được lưu trữ trong tương lai để dự đoán điểm số của player và những người chiến thắng tiềm năng.
Leaderboard
Fantasy team được liệt kê trên bảng xếp hạng và được xếp hạng dựa trên điểm số. Điểm số được tính toán trong Memorystore cho mỗi đội. Trong live match, tất cả quá trình được ghi vào bộ đệm và bảng xếp hạng trực tiếp được truy xuất từ Memorystore.
Post Simulation Results
Post Simulation, Niveuse lưu trữ top 10 fantasy team trong bảng contestDetails and MatchResults trong Spanner.
Spannervới tính khả dụng cao, tính nhất quán mạnh mẽ và tính chất phân tán đã trở thành goto database để phát triển multi-player game. Nhiều gaming studio và developer tin tưởng Cloud Spanner sẽ cung cấp một chương trình backend vững chắc, cho phép họ tập trung vào việc xây dựng game.