游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2747|回复: 8

我是新来的,问一个服务器端设计的问题。

[复制链接]

3

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2006-6-4 14:05:00 | 显示全部楼层 |阅读模式
玩家登陆游戏以后的移动坐标,物品丢弃,物品买入,玩家游戏中的金钱增减等等操作是否直接与数据库连接的?还是储存在内存中定时写入数据库?比如一登陆就先从数据库取一份玩家的信息在内存里,在游戏的时候直接操作内存的值,玩退出才更新入数据库。。

我想如果玩家在游戏中的每次操作,比如买入什么,卖出什么,金钱增加,装备更换时玩家的属性更新,查讯好友资料等,这些如果即时跟数据库连接的话是否会影响速度。能不能说说大家在这方面是如何做的吗?

[em1]

0

主题

108

帖子

153

积分

注册会员

Rank: 2

积分
153
QQ
发表于 2006-6-5 13:45:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

我现在也刚刚开始写服务器端的程序。
我是在玩家登录时,一次性从数据库中把相应的数据取出,在玩家退出服务器时,一次写入。
尽量减少数据库的读写。
不知道其他人有什么实现,也根据具体情况。

25

主题

304

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
发表于 2006-6-5 22:50:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

以前用过一种方法,在数据库上层建立数据cache,每次更新cache,cache分层次,依次向高层次的cache更新,最后一个层次才是数据库,这样控制层次和层次间更新频率就可以在安全性和时间性上做出很好的平衡。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-6-6 12:09:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

呵呵,说白了就是得知道什么时候存数据库比较合适。
这里要注意两点:
1,如果你的数据库有多个连接在访问同一张表的话,那么数据库操作就必然是在数据库没有LOCK的时候,那么你就需要有一个线程来告诉你数据库什么时候是可操作的。
2,写数据库的时候最好在你的服务器比较空闲的时候。

OK,这时候就明了了,做个线程来监视以上两个条件,都符合条件的时候就存呗~:)
玩家退出的时候存数据库并不是个很好的决策,毕竟这个时间数据库和服务器的状况都是未知的。

3

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2006-6-8 21:03:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

如果服务器突然死机或停电什么的导致服务器停掉了,那内存里面的数据怎么办呢?

25

主题

304

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
发表于 2006-6-8 21:24:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

除非服务器被导弹击中,否则机房的辅助供电系统会撑到服务器备份完毕。
如果真的被导弹击中,就算内存的数据写到硬盘,恐怕也不能幸免了。

0

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2006-6-9 06:27:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

以上都是正解

还有一个方法,可以把存盘操作push到一个低优先级的存盘线程,由存盘线程收集存盘信息并整理,尽量用batch方式一次性操作数据库(例如修改同一条记录的3个字段,应该用一条SQL语句而不应该分开3次操作保存;信息整理也可以过滤掉对同一记录字段的重复修改),同时还要动态的平衡线程优先级,确保操作队列没有增益效应;调试时只需要查看线程优先级就可以知道存盘过程是否存在压力

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-6-9 08:52:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

不过由于存盘有时间间隔,所以有时候会出现“回档”的局面。

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2006-6-11 01:56:00 | 显示全部楼层

Re:我是新来的,问一个服务器端设计的问题。

这样弄内存多大都不够使了...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 16:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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