游戏服务架构-缓存服务器 缓存服务器

缓存(游戏服务架构-缓存服务器)
缓存是指将需要频繁访问的网络内容存储在离用户更近、访问速度更快的系统中,从而提高内容访问速度的技术 。缓存服务器是存储经常访问的内容的服务器 。
以上说法是通俗的说法 。在具体的项目架构中,缓存服务通常是指将用户经常访问的一些资源放入内存中 。接收到数据被迅速返回给用户 。举个简单的例子 。

从上面的模型可以看出,当用户数量较少时,访问速度还是可以接受的 。但是当用户数量上来的时候,可能会对服务器造成致命的打击 。每个人都知道查询数据库或读取文件是一项非常耗时的操作 。当用户数量少的时候,你可能感觉不到速度 。但仔细想想,当用户数以千计时,就会导致数据库的拥堵,进而导致这项服务的宕机 。
在上面的模型中,我们可以很容易地想到如下解决方案:1 。增加数据库的配置,满足更多用户的同时访问;2.尽量在登录服务器和数据库之间增加一个缓存层,将用户的热数据放在内存中,而不需要每次都请求数据库 。
第一种方案经过仔细考虑是不可行的,因为硬件资源有限 。我们不能无限地增加数据库的配置来满足我们的需求 。
第二个方案让我们想到了目前最好的解决方案 。我们可以通过软件问题解决一些硬件问题 。所以这个请求会变成下面的资源网络图 。

目前上图可以说是我能想到的最好的方案 。当用户在没有数据的情况下访问缓存服务时,数据将从数据库服务中提取,缓存将保留在缓存服务中 。下次用户访问它时,它将直接从缓存服务返回给使用资源的用户 。因为数据在内存中,所以速度会很快 。
但是,在这个时候,有些人可能会看到问题,那就是数据的一致性,因为缓存和数据库中都是相同的数据 。所以,我说现在的方案是最好的,但不是最好的 。多一个存储数据的地方肯定会增加数据不总是可用的风险,这可能是你不能既有蛋糕又吃它 。然而,目前使用它时,我们必须利大于弊 。因为它可以在更多的资源网络中服务更多的用户 。我们可以想出许多方案来尽量减少数据的不一致性 。
但是,缓存服务对于长期没有变化的数据来说,绝对是一个利器 。例如,我们在游戏中的排名根本不需要实时改变 。而且这个数据是热点,有大量的查询 。这时,我体验到了缓存服务带来的乐趣 。
目前比较成熟的数据服务器是redis和Memcache,它们各有优缺点,大家可以根据自己的项目进行选择 。还有一种自我实现 。但是,应该注意的是,在使用它们时,不应该不加区别地使用它们 。例如,我们都知道,目前的做法是在空之间更改时间 。这里,空多指内存,也是硬件,所以一定不能无线扩展 。因此,我们必须决定消除策略来释放记忆 。在许多情况下,这种淘汰策略需要根据我们自己的业务进行定制 。比如我们的用户信息在内存中缓存6个小时,这是分析我们的用户行为后得到的数据 。所以一定要把握好这个度 。
写这么多就是告诉大家,项目架构的演进都是在需求中演进的 。当你实现一个业务功能时,你可以想得更多 。上述模型实际上是一个非常简单的项目模型 。在实际项目中,我们还会有L2缓存、L3缓存等 。当开发游戏服务器坏了,用户可以获得尽可能多的数据,否则整个游戏体验会觉得特别 。
【游戏服务架构-缓存服务器 缓存服务器】


    推荐阅读