方案1:数据服和逻辑服都缓存相同的vo对象,每当逻辑服中vo的属性发生改变,则将Map<属性名,新值>发送给数据服,数据服修改对应的vo的值,然后进行持久化,这样的方案,两个服务器交互会太频繁了。
方案2:逻辑服只管进行逻辑操作(修改vo属性),然后把这些修改了属性的vo放入一个缓存,定时的(如:5分钟)将这些缓存发送到数据服,数据服进行持久化操作。
给位能不能给些建议呢?非常感谢!
5 个解决方案
#1
自己顶!!!!别沉了!
#2
感觉如果是按照功能分服的话,方案2稍微好一点,减少数据库写的压力,读取的话,最好在数据库持久层再加一个二级缓存,ehcached或者memcached。但是感觉现在主流的手游页游服务器,都不是按照业务来分服的,一个服务器就有所有的功能,然后再做负载均衡。不知道说的对不对,仅供参考
#3
你应该没有仔细分析过游戏服务器。
分服以后,每个服能撑的人数是有限的,所以写操作只存在于当前活跃用户。
方案2的想法很好,但是你要做容灾的话是非常复杂的。比如你写缓存,如果缓存挂了,你的数据就丢了,你怎么和你的用户解释?如果刚好游戏在做活动,或者他刚好打出一个好装备,你把他数据弄丢了,他会每天打投诉电话骚扰你的客服的(这种用户真的很多,相信我)
这种要求保证数据安全的场景,你想都不要多想,先用最简单的方案1,数据库撑不住了再想办法。
一般都是限制服务器人数上限、换个更好的硬件来解决。
#4
非常感谢!!
#5
感觉如果是按照功能分服的话,方案2稍微好一点,减少数据库写的压力,读取的话,最好在数据库持久层再加一个二级缓存,ehcached或者memcached。但是感觉现在主流的手游页游服务器,都不是按照业务来分服的,一个服务器就有所有的功能,然后再做负载均衡。不知道说的对不对,仅供参考
二级缓存是必须得有的!呵呵,上一个游戏是所有功能都揉在一个服务器里面的。非常感谢!
#1
自己顶!!!!别沉了!
#2
感觉如果是按照功能分服的话,方案2稍微好一点,减少数据库写的压力,读取的话,最好在数据库持久层再加一个二级缓存,ehcached或者memcached。但是感觉现在主流的手游页游服务器,都不是按照业务来分服的,一个服务器就有所有的功能,然后再做负载均衡。不知道说的对不对,仅供参考
#3
我所遇到的问题是这样的:逻辑服务器主要是是对vo对象进行逻辑操作,数据服对vo对象进行存储操作,两个服务器之间该怎样交互呢?我想到的方法有:
方案1:数据服和逻辑服都缓存相同的vo对象,每当逻辑服中vo的属性发生改变,则将Map<属性名,新值>发送给数据服,数据服修改对应的vo的值,然后进行持久化,这样的方案,两个服务器交互会太频繁了。
方案2:逻辑服只管进行逻辑操作(修改vo属性),然后把这些修改了属性的vo放入一个缓存,定时的(如:5分钟)将这些缓存发送到数据服,数据服进行持久化操作。
给位能不能给些建议呢?非常感谢!
你应该没有仔细分析过游戏服务器。
分服以后,每个服能撑的人数是有限的,所以写操作只存在于当前活跃用户。
方案2的想法很好,但是你要做容灾的话是非常复杂的。比如你写缓存,如果缓存挂了,你的数据就丢了,你怎么和你的用户解释?如果刚好游戏在做活动,或者他刚好打出一个好装备,你把他数据弄丢了,他会每天打投诉电话骚扰你的客服的(这种用户真的很多,相信我)
这种要求保证数据安全的场景,你想都不要多想,先用最简单的方案1,数据库撑不住了再想办法。
一般都是限制服务器人数上限、换个更好的硬件来解决。
#4
我所遇到的问题是这样的:逻辑服务器主要是是对vo对象进行逻辑操作,数据服对vo对象进行存储操作,两个服务器之间该怎样交互呢?我想到的方法有:
方案1:数据服和逻辑服都缓存相同的vo对象,每当逻辑服中vo的属性发生改变,则将Map<属性名,新值>发送给数据服,数据服修改对应的vo的值,然后进行持久化,这样的方案,两个服务器交互会太频繁了。
方案2:逻辑服只管进行逻辑操作(修改vo属性),然后把这些修改了属性的vo放入一个缓存,定时的(如:5分钟)将这些缓存发送到数据服,数据服进行持久化操作。
给位能不能给些建议呢?非常感谢!
你应该没有仔细分析过游戏服务器。
分服以后,每个服能撑的人数是有限的,所以写操作只存在于当前活跃用户。
方案2的想法很好,但是你要做容灾的话是非常复杂的。比如你写缓存,如果缓存挂了,你的数据就丢了,你怎么和你的用户解释?如果刚好游戏在做活动,或者他刚好打出一个好装备,你把他数据弄丢了,他会每天打投诉电话骚扰你的客服的(这种用户真的很多,相信我)
这种要求保证数据安全的场景,你想都不要多想,先用最简单的方案1,数据库撑不住了再想办法。
一般都是限制服务器人数上限、换个更好的硬件来解决。
非常感谢!!
#5
感觉如果是按照功能分服的话,方案2稍微好一点,减少数据库写的压力,读取的话,最好在数据库持久层再加一个二级缓存,ehcached或者memcached。但是感觉现在主流的手游页游服务器,都不是按照业务来分服的,一个服务器就有所有的功能,然后再做负载均衡。不知道说的对不对,仅供参考
二级缓存是必须得有的!呵呵,上一个游戏是所有功能都揉在一个服务器里面的。非常感谢!