玩家有选服务器的操作,玩家全世界只有一份游戏资料。
玩家的id全世界唯一。名字唯一。
无法支持合服。出现村服,鬼服务是没有好的办法的。
玩家的数据统一放到一个数据库集群中,dbserver根据玩家id直接散列写入到不同的数据库中。
后期考虑加入redis集群。加入redis的好处是服务器意外崩溃,玩家的关键数据不会丢失。缓解数据库的查询的压力。写入的速度会变慢。
redis只是单独的缓存。不进行序列化。
关于单点问题:某一个数据库有一问题时,与之关联的玩家数据会写不上去。服务器注意清理对应的玩家。
bool User::addMoney(int val)
{
int money = GetCach(this,"money");
money = money + val;
WriteCache(this,"money",money);
}
bool User::save()
{
bool ret = WriteCache(this, "all");
ret = WriteDB(this,)
}
User::update()
{
if(now_time - last_time > 300)
{
if(modify_)
{
save();
}
}
}