【业务知识】Super-Smack和迅雷休闲游戏架构



【业务知识】Super-Smack和迅雷休闲游戏架构_第1张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第2张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第3张图片



【业务知识】Super-Smack和迅雷休闲游戏架构_第4张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第5张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第6张图片





【业务知识】Super-Smack和迅雷休闲游戏架构_第7张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第8张图片



【业务知识】Super-Smack和迅雷休闲游戏架构_第9张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第10张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第11张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第12张图片

【业务知识】Super-Smack和迅雷休闲游戏架构_第13张图片

 

 

目录

super-smack(DB)压测软件背景介绍

super-smack安装讲解

中间件和没有中间件下压测效果对比

迅雷休闲游戏大厅目前架构讲解(监控、集群、层次结构)

super-smack(DB)压测软件背景介绍

          super-smack是一款流行的开源基准测试,用来测试不同操作系统平台即其上数据库的性能,目前支持mysql、PostgreSQL两款开源数据库,这个工具程序现在由 Tony Bourke 维护。

   使测试获得好得数据效果,两个标准的性能指标:

         1 最大化CPU利用率

         2 减少由于IO造成的延迟、提高命中率

 

super-smack安装讲解

一、下载

super-smack

下载地址:http://vegan.net/tony/supersmack/

源码:http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz

注:需要本地装一个mysql客户端,用与测试远端DB的连接。

二、使用

将程序提供的 smack 样本文件重新拷贝一份,然后编辑此文件,

填入相应的连接信息,比如用户名、密码、端口和测试所用的数据库名。

cp -r /src/smacks /home/user

三、编译及安装

配置编译选项:

./configure --prefix=/usr/local/super-smack-1.3 --with-mysql --with-smacks-dir=/usr/local/super-smack-1.3

 

请根据测试的数据库来选择 --with-pgsql --with-oracle 或 --with-mysql

 

super-smack安装讲解

三、重点说明一下--with-mysql的编译配置:

      编译的时候要把/usr/lib64目录下的libmysqlclient.so.16放到/usr/lib目录下,否则会出现下面的错误:

      configure: error: Could not find libmysqlclient  in ' /usr/lib /usr/lib/mysql /usr/local/lib /usr/local/lib/mysql  /usr/local/mysql/lib

configure: error: Could not find mysql.h in ' /usr/include /usr/include/mysql /usr/local/include /usr/local/include/mysql  /usr/local/mysql/include'

 

四、编译及安装:

make;make install

 

super-smack安装讲解

五、我们在数据库里建一个表:

     CREATE TABLE `http_auth` ( `username` char(255) NOT NULL, `pass` char(25) DEFAULT NULL, `uid` int(11) DEFAULT NULL,   `gid` int(11) DEFAULT NULL,  PRIMARY KEY (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

六、导入数据

导入数据:

1.mysqlimport -L -usmack -psmack -h192.168.0.26 smack /var/smack-data/http_auth.dat

 

2.在mysql命令行,执行 Loading data from file '/var/smack-data/http_auth.dat' into table 'http_auth' terminated by ','

 

五、开始运行

默认是测试MYISAM表的性能:

例:super-smack —d mysql select-key-mysql.smack 10 1000 //(10 是连接客户的数目,每个客户有1000次轮询)

super-smack安装讲解

结果

Query Barrel Report for client smacker1

connect: max=66ms min=0ms avg= 62ms from 10 clients

Querytype numqueries maxtime mintime qpers

select_index 20000     0     0       4360.61

 

      这表示 super-smack 运行了10个客户,客户连接最长时间为66毫秒,最短的则没有延迟,平均时间为62毫秒。Super-smack 总共执行了20000此查询,每个查询所花时间都小于1毫秒。整个测试期间,服务端平均每秒执行了4360.61次 select_index 型查询。

 

Cluster环境中中间件和没有中间件下压测效果对比,(请见压测文档数据)

压测结果请见附件:

 

迅雷休闲游戏大厅目前架构讲解

各服务详细说明

目录Server

    目录Server对用户而言,相当于是一个接入服务器,用户从这里获取游戏列表(以及游戏的房间列表);用户获取到相关信息后,就关闭tcp连接。

 

用户信息Server

  (1) 客户端通过此Server获取到用户的积分等游戏相关信息 

(2) 其它server对用户信息的访问(更新)都通过此server进行;

由于其它的逻辑Server可能分布在不同地区的机房,因此对用户信息的访问要通过此server进行,不能直接访问DB。

 

逻辑Server

     逻辑Server是用户进入了具体的某一个游戏后,需要保持session长连接的server;用户的每个动作都发到这个服务器,同时也会收到服务器转发的其它玩家的信息。目前采用每个游戏分区独立运行一个逻辑Server的形式进行管理。

 

各服务详细说明

     逻辑Server采取两层结构:接入端(前端)和逻辑端(后端)。接入端只负责网络I/O的处理,把接收到的完整命令包存放到共享内存区域的队列中;逻辑端负责业务逻辑的处理,它从共享内存的队列中取出用户请求信息,进行处理(具体处理逻辑通过加载不同游戏动态库实现),处理完成后将响应包存放到共享内存的另一个队列,再由接入端将响应包发送给游戏客户端。由于请求包/响应包存放在共享内存中,这样当逻辑端Server重启后,用户请求信息并没有丢失(客户端与server的session连接也仍然保持),重启后可以继续处理。而接入端由于逻辑比较单一,一般不需要重启。

 

各服务详细说明

用户(位置)状态Server

 

用户(位置)状态Server用户记录用户在各个游戏房间中的登陆情况,防止用户多点登陆。如果发现用户在一个游戏中同时登陆多个房间,会通知逻辑server将用户踢出房间,只保留最近一个登陆的房间。

 

     升级gameserver进程/更新so

     目前gameserver采用主备机的方式,即一台机器(或一个server进程)正式运营,另外一台机器(或server进程)备用,其中备用机所拥有的游戏分区在dirsvr中被屏蔽。当升级/更新的时候,先在备用机器上部署程序和so,等进程重启动后,在管理后台修改所属分区的屏蔽标志为“不屏蔽”,同时将运营机所属分区屏蔽标志位改为“屏蔽”,(等待一段时间让dirsvr刷新目录信息后)即可完成server切换。在旧的运营机上用户都结束游戏后,可以对改机器进行升级维护,成为新的备用机。

监控端

1、监控端本地和多机房部署

 

2、端口监控

 

3、URL监控

 

4、日志特征码监控

集群

1、DNS调度集群

 

2、数据库热备、NAS集群方式

 

3、中间件HA架构,两台互为热备

 

接入层

1、游戏分区服务冗余部署。

 

2、逻辑端、IDC网络、负载故障实现自动感应切换。

 

3、各应用服区过载保护

 

业务逻辑层

1、逻辑处理服务多机房部署

 

2、到DB端cache处理

数据层

1、数据存储实现NAS结构

 

2、中间件(amoeba)连接池缓存处理及HA的实现。

 

3、数据库读写分离

 

4、排名、汇总操作热备上进行。

 

THE END!

 

共享式学习  项链式法则 !

 

 

本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:[email protected]

你可能感兴趣的:(游戏,数据库,server,中间件,测试,休闲游戏)