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.