What is acore Server#
An acore Server is an EC2 and RDS#
Acore Server (AS) 指的是一个能让人 Log in 的魔兽世界游戏服务器. 它包含一台 EC2 来运行游戏服务器, 和一台 RDS 数据库.
One RDS Instance can Have multiple Databases#
一个 RDS Instance 是一个安装了 MySQL 数据库的虚拟机. 一个 MySQL 数据库中是可以创建很多个 database 的. 根据魔兽世界服务器的设计, 一般会有 auth, world, player 三个数据库. 这三个数据库既可以放在同一个 DB Instance 上, 也可以放在不同的 DB Instance 上.
Server and Realm in Retail#
在官方服务器上, 一个大区 (比如美服) 会有很多组服务器. 这些服务器在数据库中会被注册为不同的 Realm. 所以实际上我们这个项目中的 AS 对应的是一个 Realm 的概念.
Environment Name and Server Name#
我们参照软件工程中的环境的概念, 我们也有多个开发环境, 包括 sbx, tst, prd. 在一个环境中, 每个 AS 都有一个唯一的名字, 例如 blue, green, white, black, yellow, orange 等.
Important
所以在全局看来, 一个 AS 的全局唯一 ID 是由 ${env_name}-${as_name} 组成的. 例如 sbx-blue, sbx-green, prd-white, prd-black.
这个全局的 ID 也叫做 Server Name (server_name)
Blue Green Deployment#
在我们升级游戏服务器核心的版本, 升级数据库, 或者更新功能时, 我们不会在正在运行着的 AS 上进行修改. 我们会创建一个新的 AS 作为开发, 开发完成后关闭旧的 AS, 并对旧的 AS 进行备份. 如果新的 AS 出现问题, 我们可以快速切换回旧的 AS.
Caution
如果你的升级包括了大量数据库改动, 那么这种回滚就会造成数据回档. 因为新的数据库已经被写入了新的数据, 而你无法将新的数据库同步到旧的数据库上 (因为不兼容).
我们一般把 blue/green 分为一组, white/black 分为一组, yellow/orange 分为一组. 而 red 作为一个单独的, 用于测试的 sandbox.