游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5866|回复: 2

角色名字所有大区唯一的实现策略

[复制链接]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2011-9-8 13:41:00 | 显示全部楼层 |阅读模式
作者:herm_lib
博客:O1高地

  有的公司可能有一个专门角色名字唯一性判断的服务器,名字服务器。这个服务器的目标保证一个大区或者所有大区的名字唯一。所有大区名字唯一有一个好处是,合服的时候不会出现角色名冲突。一个大区唯一的实现策略很直接很容易。这边文章我们尝试讨论所有大区名字唯一的实现策略。

  先说一个直接的策略。

  不同大区的所有的游戏服务器都和一个名字服务器进行数据交互,客户端把创建角色请求交给游戏服务器,游戏服务器去名字服务器上判断一下这个名字是否已存在。

  这个策略的缺点很多,比如服务器直接耦合增加;如果大区的游戏服务器和名字服务器在不同的IDC而且之间没有专线,效率上一般也不能满足运营要求。

  所以大部分的项目如果用这类策略的话,一般是一个大区配一个名字服务器,或者把这个这个名字服务器的功能作为一个模块放到一个大区的全局服务器中。


  上面那个策略其实没什么实际意义,下面我们说说我们的重点策略。

  这个策略和Kerberos有关,而且Kerberos是重点。Kerberos是一种认证鉴权机制,不了解的去搜搜,这里就不说了。

流程大体是这样:

前提条件:名字服务器&游戏服务器之间先约定一个Key。


1. 客户端通过认证鉴权服务器拿到一个名字服务器的票据(ticket)&游戏服务器的票据,这两个票据是客户端和名字服务器,游戏服务器交互的凭证;

2. 客户端发要创建的角色名(有加密的)给名字服务器,角色名合法,名字服务器用某种加密算法用上面的Key生成一个角色名加密串,返回给客户端;

3. 客户端把上面的一堆内容+其他安全相关的内容发给游戏服务器,游戏服务器就知道角色名是否合法了。

6

主题

74

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2011-9-8 13:54:00 | 显示全部楼层

Re:角色名字所有大区唯一的实现策略

一般来说,一个分区,服务器处于同一个机房。

每个分区使用单独的数据库服务器。存储角色信息。

所有分区使用同一个账号数据库。验证登陆。

游戏服务器连接的是2个数据库,一个用来验证账号,一个用来加载角色信息。

合服的话,都是在统一个机房服务器间和。一般不会跨机房(分区)

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-9-20 19:57:00 | 显示全部楼层

Re:角色名字所有大区唯一的实现策略

单独弄出一个服务器没什么意义,你要是真想名字唯一的话,用名字做一个Hash值,用这个值做GUID不就完了。虽然有重复的几率,那也比单独拉一个服务器和数据库的强
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-3 14:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表