游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: moon_in_sky

如何服务器在同一时间大量数据操作

[复制链接]

4

主题

1111

帖子

1498

积分

金牌会员

Rank: 6Rank: 6

积分
1498
发表于 2013-5-8 15:30:28 | 显示全部楼层
我认为问题的根源在把这个大量操作给错开
而不是想什么方法来优化这个操作

4

主题

1111

帖子

1498

积分

金牌会员

Rank: 6Rank: 6

积分
1498
发表于 2013-5-8 15:32:36 | 显示全部楼层
是否到了查询时间可以放在客户端,没服务器什么压力,到了时间客户端就查询,服务器返给补充后的数值不就完事,为何要在服务器上主动刷新

7

主题

69

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
发表于 2013-5-8 19:48:41 | 显示全部楼层
gantleman 发表于 2013-5-7 12:39
问题在于他每隔30分钟就有一次cpu的高峰期,
如果服务器设计封包都是异步的还好,
服务和客户端要是有必须 ...

我说的没加大延迟。  只是把玩家的操作给错开了。 就是不让他们同时做这件事。  而且延迟会不会体现到客户单还要看同步模式的。

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2013-5-8 20:18:04 | 显示全部楼层
本帖最后由 gantleman 于 2013-5-9 11:51 编辑
theperfact 发表于 2013-5-8 19:48
我说的没加大延迟。  只是把玩家的操作给错开了。 就是不让他们同时做这件事。  而且延迟会不会体现到客 ...

按你的需求条件分为两个动作,第一个获取全局当前在线玩家列表,
第二个为每个玩家分配道具,
分配道具的方式也有两种,一种是在线的内存分配,一种是数据库分配。
这里先假设是内存分配不考虑数据分配的方式。
因为全局在线列表是动态数据,涉及到数据锁定的问题,按照锁定的范围有3种实现方法,
第一种全部在锁定范围,整个分配过程中不处理玩家掉线离线等离开在线列表的操作,并假定玩家当时就获得物品。
第二种是获取列表在锁定范围,分配道具不住锁定范围,这种方式是通过邮件消息提醒等方法,把分配道具放到另一个操作流程中,发送邮件的过程中不允许有玩家离线,
第三种方法只获取列表,不锁定任何数据,获取某个时段的当前在线名单后,服务器根据名单用邮件或者直接分配物品。
通常用第一种方式,有邮件系统支持的可以优化成第二种,第三种会有不确定性。

6

主题

471

帖子

1047

积分

金牌会员

Rank: 6Rank: 6

积分
1047
发表于 2013-5-9 09:45:17 | 显示全部楼层
服务器上在线玩家肯定有个广播用的map或者list.
要送的道具预先创建,比如创建角色时,送道具时可以直接根据id检索到道具内存信息修改和发送,避免没有时需要插入数据库获得道具id(看你的道具存储如何设计,如果都记录在角色的某个字段中忽略)。如果数量比较多比如几千人,可以用tbb多核库分组更新,充分利用多核性能(至少能提升20%的性能,这个最好先模拟做下试验,是否需要分组,分几个组处理都要试试,加个计时器用速度最快的那个就行了,还要看你的CPU类型),至于数据库保存玩家反正看不到延迟,你可以延后或者分批更新.其实已现在的CPU和网络更新发送都是小意思,压力主要还是在数据库上.

1

主题

23

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2013-5-9 23:05:19 | 显示全部楼层
如果不是及时获取,可以在某个地方(如商店)系统定时产生一次,然后玩家自己去领取罢了,服务器自然没压力了;

如果要及时获取,就像半小时体力恢复5点一样,这个简单的操作比起广播行走、特效等数据小多了;如果单单是自动分发一下道具,在线几千玩家分发下也是几毫秒级别的,压根不是产生服务器压力的范围吗;除非每个在线玩家都要做一次非常非常复杂的计算。

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2013-5-10 17:44:37 | 显示全部楼层
灵游 发表于 2013-5-9 23:05
如果不是及时获取,可以在某个地方(如商店)系统定时产生一次,然后玩家自己去领取罢了,服务器自然没压力 ...

不晓得你的服务器什么样子,
给予物品的时候,不判断背包是否满么,不判断类型是否重复么,不判断物品上限么,
判断物品上限的时候起码要把背包所有物品循环一遍吧?
就更不说等级啊,阵营啊什么的。
在线几千人,这一套流程下来,真如你说的这么简单还是我多虑了?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-26 18:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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