网站首页 > 资源文章 正文
缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。
上面的这种说法是一种通俗的说法。在具体的项目架构中,缓存服务,往往指的把一些用户频繁访问的资源放入到内存里面。收到数据快速返还给用户。举一个简单的例子
通过上面的模型我们看出,当用户量少,这个访问速度还是可以接受。但是当用户量上来以后,可能对服务器造成致命性的打击。大家都知道查询数据库或者读取文件 这是非常耗时的操作。当用户量少的时候,你或许感觉不出来速度的快慢。但是仔细想想当用户是成千上万的时候就会导致数据库的拥堵从而导致这个服务的宕机。
在上面的模型中我们很容易想到的解决方案是,1.增加数据库的配置,来满足更多用户的同时访问,2. 想办法在登录服务器和数据库 之间增加一层缓存层,把用户的热点数据放到内存里面不需要每次都请求数据库。
第一种方案仔细想一想是行不通的,因为硬件资源是有限。不能无限制的增加数据库的配置来满足我们的需求。
第二种方案使我们目前想到的最优解决方案了。我们可以通过软件层面的问题来解决一些硬件层面的问题。所以这个请求就会变成下面的这个图
上面的这个图目前可以说是我能想到的最优解决方案了,当用户访问缓存服务没有数据的时候就会从数据库服务拉去数据,同时在缓存服务里面留下缓存,下次用户再访问的时候就会从缓存服务直接返回给用户,因为数据都在内存里面所以速度会很快。
不过这个时候有人会可能看出问题来,那就是数据的一致性问题,因为同一份数据在 缓存和数据库都有。所以我说这方面目前的方案是最优的但不是最好的。多一个地方存储数据,肯定会增加数据不一直的风险,这或许就是鱼和熊掌不可兼得。不过我们目前用它肯定是利大于弊。因为可以服务更多的用户。数据的一致性我们可以想很多的方案尽量来减少数据的不一致性。
不过缓存服务对于那些很久都不变一次的数据,绝对是一个利器,比如我们在游戏里面的排行榜,根本不需要做到实时变化。而这个数据又是一个热点数据,查询量居多。这个时候就体验到了 缓存服务带来的快感。
现在比较成熟的数据服务器 有redis 和 Memcache ,这两种服务各有优缺点,大家可以根据自己的项目选择。还有一种就是自己实现的。不过这些需要注意在使用的时候不能乱用,例如大家都知道 现在这种做法其实是拿空间换的时间,这里的空间大多指的是内存,内存也是硬件,所以肯定不能无线扩展。所以一定要定好淘汰策略,来释放内存。很多情况下需要根据自己的业务来定制这个淘汰策略,例如我们的用户信息在内存里面是缓存6个小时,这个是通过分析我们的用户行为之后得到的数据。所以这个度大家一定要把握好。
写了这么多,其实就是告诉大家项目架构的演化,都是在需求中进化出来。当你在实现一个业务功能的时候可以想的更多。上面的模型其实是很简单的项目模型了在实际项目中,我们还会出现二级缓存,三级缓存 等等。在开发游戏服务器断时 能让用户多块拿到数据就多块,要不整个游戏体验就感觉特别的卡。
如果有疑问,大家可以私信或者在评论区留言。
猜你喜欢
- 2024-09-08 Raid卡和磁盘设置(raid磁盘阵列卡)
- 2024-09-08 服务器托管单线、双线、多线主机有什么区别?
- 2024-09-08 Nginx 反向代理 + 缓存 + 静态资源服务器 + 负载均衡
- 2024-09-08 开源服务器被曝7漏洞!可引起DNS缓存中毒并远程执行恶意代码
- 2024-09-08 搭建家用、商用免费云盘、云存储,云桌面系统TrueNAS-安装篇三
- 2024-09-08 一篇文章快速理解微服务架构(微服务架构体系是什么)
- 2024-09-08 服务器的中间件之分布式缓存(分布式常用中间件)
- 2024-09-08 Linux服务器如何查看CPU使用率、内存占用情况
- 2024-09-08 手把手教你写一个静态资源中间件,加深服务器对文件缓存的理解
- 2024-09-08 浅谈C/S和B/S架构的工作原理及优缺点
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)