Friday, July 4, 2014

GREE's "Lost in Stars" Game Server Postmortem

Stateless Information:
Stateless data is handled through the web.

User State Management:
User state is managed using Redis. There were internal discussions around using MySQL and Memcached, but Redis was chosen.

Service Profiling:
Profiling the service is considered crucial to identify performance bottlenecks and optimize the system.

Server and Client Language:
Both the server and client are unified using C#.

Service Bus:
RabbitMQ is used as the service bus to implement an overlay network. The team found RabbitMQ to be highly reliable and performant, without causing any issues.

Web Server:
The web server is implemented with only the essential functionalities, again using C#.

Game Resource Management:
Game resources are stored in various formats such as Excel, JSON, DB, and SQLite. The system supports both import and export of these resources and allows for web-based management. Both the planning and development teams have access to these resources and communicate through the management interface.

Coordinator with Zookeeper:
Zookeeper is used as the coordinator for managing game servers and API servers. This includes server registration, listing, crash monitoring, and leader election.

Data Sharding:
Data is fundamentally partitioned using sharding. The sharding algorithm is shared among the teams for better distribution and management of data.