关于游戏服务器中缓存的设计方案的讨论

(只针对游戏服务器中的热数据)游戏服务器的缓存设计总体大概有三种类型:进程内缓存--如java的ehcahe、

进程内缓存--使用会话session Cache,通过语言的基础类型和基础的集合框架来定制 、分布式缓存-- 如redis ,memcahced。

这三种类型各有个的好处,根据不同的应用场景,可以单独使用,也可以相互结合处理。

通过三方框架来做进程内缓存,和定制session cache,在一定程度上有着快而且高效的显著效果,但是不利于做分布式,使用分布式缓存

在一定程度上会造成IO上的瓶颈。有人试着结合这两者的优势来做这样的缓存,如开源的J2cache。

在游戏框架结构设计上,根据应用场景来定制是最靠谱理想的。

一般设计上会考虑进程内缓存 + 分布式缓存。这样就分清楚那些数据直接缓存在进程内的缓存,那些数据放在分布式的缓存中?!

是不是一定要用到分布式缓存才显得高大尚!? 。或则 最近坛子里说神马redis(memcache)很火,于是乎就跟风直接用上?!!!

笔者的观点还是那样 进程内缓存 + 分布式缓存作为一个基本的设计理念,但是 具体还是把应用场景分清楚了在下决定。

欢迎讨论

时间: 2024-11-05 23:39:24

关于游戏服务器中缓存的设计方案的讨论的相关文章

游戏服务器中的日志处理方式之一

在游戏开发的过程中,我们需要记录一些日志,以便以后了解游戏运行的情况,以及根据日志发现并处理游戏中的突发情况. 一,游戏日志可以分为以下几种:1)系统日志2)用户操作日志3)异常日志,即错误日志 系统日志 系统日志一般描述的是服务器日常运行的状态.比如启动是否成功,每天统计一下内存的占用量,CPU的使用量等信息.用于查检服务器运行的健康状况.这对于技术分析来说是非常重要的.如果没有这些信息,一但服务器宕机,我们就两眼一抺黑,不知从何下手了.这部分日志一般产生的文件不大,内容不是太多,可以记录成文

关于游戏服务器是多线程还是单线程的讨论

最近做有关于游戏服务器用单线程的好还是多线程的好的讨论 有同学问:服务端逻辑全单线程的模型,为了避免查询离线玩家数据造成阻塞,除了启动服务器全部加载以外还有更好的办法吗? 同学B: 单线程逻辑模型也属于很常用.逻辑本身不容易出问题. IO得全部分出去. 同学B: 用异步加载事件.数据加载完成后.再重新把任务排入单线程任务队列. 同学C: 各种活动NPC打完就要从场景消失  战斗线程和场景线程分不开 同学C: 场景线程依赖战斗的结果 同学C: 战斗的结果会影响NPC在场景的动态显示 同学C: 然后

什么是域名的TTL值? ——一条域名解析记录在DNS缓存服务器中的存留时间

什么是域名的TTL值? 转自:http://hizip.net/index.php/archives/20/TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录:在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得

Redis在游戏开发中的应用

Redis是一个新兴的NoSql数据缓存组件,与memcache类似,但是功能却比memcache多一些.首先,Redis和memcache都是基于内存的,所以读取和写入速度都非常快.但是memcache只支持简单的key-value数据的存储方式,而Redis对key-value ,hash,list,set,SortSet等数据结构有很好的支持.下面就Redis在游戏的开发应用中做一些简单的介绍. IT图书网:http://www.myitbook.cn 一,数据的缓存 在这一点上,redi

游戏服务器生成全局唯一ID的几种方法

在服务器系统开发时,为了适应数据大并发的请求,我们往往需要对数据进行异步存储,特别是在做分布式系统时,这个时候就不能等待插入数据库返回了取自动id了,而是需要在插入数据库之前生成一个全局的唯一id,使用全局的唯一id,在游戏服务器中,全局唯一的id可以用于将来合服方便,不会出现键冲突.也可以将来在业务增长的情况下,实现分库分表,比如某一个用户的物品要放在同一个分片内,而这个分片段可能是根据用户id的范围值来确定的,比如用户id大于1000小于100000的用户在一个分片内.目前常用的有以下几种:

同一世界服务器架构--Erlang游戏服务器

Erlang最大的优点是方便,很多基础功能都已经集成到Erlang语言中.之前用C++写服务器的时候,管理TCP连接很繁琐,需要写一大堆代码来实现.底层的框架需要写很多代码实现,这样既浪费时间,又会有很多BUG.但是用Erlang就方便多了,底层的一切你都不需要考虑,你只需要考虑,服务器的架构以及业务逻辑.从此让你彻底从底层的泥潭中解脱.我从去年年底开始了解学习Erlang,到现在我已经彻底爱上了Erlang.好了,废话不多说,开始详细介绍下我设计的这个服务器架构吧. 首先看下整个架构的布局,如

当我设计游戏服务器时,我在想些什么?(1)

机缘巧合的机会,我有幸能够从头开始设计一个游戏的服务器.中间遇到很多欢声笑语和悲伤泪水,这里分享一下. 我之前所在项目组的游戏服务器架构如下图: 这款游戏是一款MMO的端游,GateWay网关的任务是接受客户端的连接,然后通过分发策略,把玩家丢进GameSvr上去,之后玩家的所有请求都直接发给GameSvr,由GameSvr处理了.当然这里的分发策略跟一般的web服务器是不同的,web服务器一般会做成无状态的服务器,也就是对于客户端来说请求到达哪一个服务器都没有关系,都能够被处理,但是游戏服务器

普通服务器和游戏服务器工作原理有什么不同?

一般的网站应用程序采用的模式是Request-Response,然后通过tcp和服务器建立一次链接,请求的数据是通过http协议进行重新组装,服务器端和客户端完成一次交互之后,就会释放tcp链接,新的客户端就可以使用服务器端的socket资源.web程序的扩展相对来说比价容易,在行业中,比较常用的方法是硬件负载均衡和添加web服务器. 网络游戏就不一样了,它比较突出的一点是客户端和服务器端要进行比较长时间的连接,几乎是不间断的.游戏服务器的原理是Client主动给Server发送数据,Serve

缓存系统在游戏业务中的特异性

版权声明:本文由韩伟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/243 来源:腾云阁 https://www.qcloud.com/community 作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理.产品总监.2007年后创业4年,开发过视频直播社区,及多款页游产品.2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发. 在中国