大型网站架构之分布式缓存

news/2024/5/19 13:57:05/文章来源:https://blog.csdn.net/weixin_33692284/article/details/85849727

缓存是优化网站性能的第一手段。在大型网站中,缓存通常用来保存热点数据,或者保存应用上下文相关信息。比如之前提到的session服务器集群就可以用分布式缓存来搭建。当然,分布式缓存还可用于缓存数据库中的热点数据以减轻数据库的压力。 

分布式缓存的架构方式通常有两种:一种是以JBoss为代表的需要同步的分布式缓存,一种是一MemCached为代表的不互相通信的分布式缓存。 

JBoss在所有服务器中保存相同的缓存数据,当一台服务器的数据有更新时,会同步到其他的服务器。这种所有服务器都保存相同数据的方式导致JBoss的缓存容量有限,而且同步的代价会随着服务器数量的增加而增大。因此这种方案很少在大型网站中使用。JBoss通常将应用服务器和缓存部署在同一台服务器上,如下图: 


MemCached采用一种互不通信的分布式架构,每个服务器中缓存的数据不相同。应用服务器通过一致性hash等路由算法确定数据所在位置后进行访问,缓存服务器之间互不通信,具有很好的扩展性。如下图: 
 

下面重点说下在MemCached中使用的路由算法,由于MemCached集群中不同服务器缓存的数据不同,因此应用服务器访问数据之前需要先通过路由算法确定数据所在的缓存服务器。最容易想到的路由算法是余数hash,但是在缓存系统需要扩容时,余数hash是不可用的。 

比如例子:原来有3台节点,对应的hash值为0,1,2,现在增加一台节点后变为4台节点,对应的hash值为0,1,2,3。那么0-11这12个原来已经缓存的数据,在加入新节点后的可用率为25%。就是说,向缓存系统中新加入一个节点之后,原来缓存的大部分数据变得无不可用了。这个现象在大型网站架构中是可怕的,因为新加入节点后造成的缓存低可用将导致数据库压力增大甚至有可能造成网站事故。 
因此,我们把向缓存系统中添加节点之后,能够保证已经缓存的数据仍然有效作为分布式缓存中路由算法的主要设计目标。为此,有一致性hash算法。 

一致性hash算法: 
先构造一个长度为2^32的整数环,根据节点名称的hash值(其分布范围为0~2^32-1)将缓存服务器的节点放置在这个hash环上。计算需要缓存的数据的hash值(其分布范围为0~2^32-1),然后在hash环上顺时针找距离这个hash值最近的缓存服务器节点,就是数据要缓存的目标节点。如图: 
 

一致性hash算法,有一个小小的问题。当向缓存中添加一个新的节点之后,根据一致性hash算法的规则,新添加的节点仅仅能够减轻一台原有服务器的压力,如下图:新添加的节点Node3只能缓解Node1的压力,而无法缓解Node0和Node2的压力。 
 

上面提到的添加新节点后负载不均衡的问题可以通过虚拟的手段来解决:将每台物理服务器虚拟为一组虚拟服务器,之后将这组虚拟服务器放到hash环上。采用一致性hash算法找到虚拟服务器,该虚拟服务器对应的物理服务器就是目标节点。如图: 
 
在实践中,一台物理服务器一般虚拟为一组150个虚拟服务器,具体情况再改动。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_760367.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

屏蔽网站广告插件:广告终结者

1. 上网站: http://www.adtchrome.com/ Chorme下载地址: http://www.adtchrome.com/%E5%B9%BF%E5%91%8A%E7%BB%88%E7%BB%93%E8%80%853.1.4.rar 2. 进入chrome扩展程序设置界面: 3. 将解压后的插件文件拖入此界面即可。 4. 后面再打开网页&a…

解读大型网站系统架构的演化

前言一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计…

【转】高扩展性网站的50条原则

《高扩展性网站的50条原则》,利用一天半的时间快速浏览总结的电子书,对网站的建设有一个原则性的把握,书中提到的大部分原则现在已成为互联网行业的共识,但并不妨碍我们重新整理分类,从全局层面把控高扩展性网站的建设…

秒杀网站系统设计详解

2019独角兽企业重金招聘Python工程师标准>>> 最近总有一些朋友问高并发问题,后来就想自己把一个秒杀系统作为例子详细分解一下,也是一个学习过程。 首先假设场景,预计该活动可能有1万人参加,那最大并发数为1万。 主要面…

办公资源:你曾错过的PPT视频教程网站

身边有好多小哥哥,姐说不会制作PPT模板,怎么办呀?我想说不会就学嘛!可有人问了想学又不知道从哪里开始着手。诶呀!真是令人脑壳疼的问题。其实现在网络发展这么快了,网上随便搜索就会有很多PPT制作教学的课…

在 Windows 的 IIS 上部署 .net core 网站

参考: .net core 2.0学习笔记(二):部署到Windows和Liunx系统 - ZuQing - 博客园 使用 IIS 在 Windows 上托管 ASP.NET Core | Microsoft Learn 在 Visual Studio 2017 远程 IIS 计算机上的远程调试 ASP.NET Core 一、安装 SDK…

第一个在 Linux 下的 .net core 2.1 网站 ( Jexus )

制作最简单的 .net core Web应用程序 本文的主要目标是部署, 所以就不多在 Web 应用程序上赘述了, 如下图: 1. 用 VS 2017 创建 ASP.NET Core Web 应用程序项目 HelloCore: 2. 项目上右键生成, 再右键发布&#xff1a…

.net core 网站如何附加到进程 ?

.net core也用了一段时间了, 总觉得网站调试不方便, 直接 F5 运行不稳定,有时在网站输入验证码VS就直接退出了调试。于是改为附加进程,发布到 IIS 再来附加 dotnet 进程, 应用池名称都对上了, 打的断点还是…

.net core 网站 Linux 下部署 ( Docker )

参考:ASP.NET Core Docker部署 有改动。 一、docker 安装 见: https://blog.csdn.net/yenange/article/details/81703221 二、查找 dotnet 的镜像,拉取 https://hub.docker.com/ 下搜索 dotnet , 可以看到: 复制拉取…

大型网站HTTPS部署实践点拨

一、HTTPS简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP协议传输的数据是未加密的明文,因此使用HTTP协议传输隐私信息非常不安全。为了保证隐私数据能加密传…

IIS10(WinServer2019自带)如何限制网站的流量带宽

网站多了,某个网站极大的下载带宽会挤压其它网站,导致其它网站访问困难。 所以,限制某个网站的带宽还是非常有必要的。 一、选中网站,点击右侧栏的“限制” 二、 弹出框中打上勾,并输入合适的数值。 实测&#xff…

大型网站架构之分布式消息队列(转)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐&am…

在线更新dede程序后 网站出现错误 DedeCMS Error:Tag disabled:php more...!

dedecms出现DedeCMS Error:Tag disabled:php原因解决 ------------------------------------------------------- dede做了一个小网站,近两个月连续被 别人 非法侵入 90sec.php \mybak.php ; 于是想着更新下dede程序到最新的版本 ,谁知道在…

转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程

使用vue全家桶制作博客网站 前面的话 笔者在做一个完整的博客上线项目,包括前台、后台、后端接口和服务器配置。本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue、vue-router、vuex、vue SSR)开发的一套博客前台页…

关于网站恶意注册会员

2019独角兽企业重金招聘Python工程师标准>>> 网站发生恶意注册会员,有图形验证码 ,和短信验证码 但是还是有大量恶意注册: session 和 cookie都是可以随便伪造的。 验证码有打码平台。 短信验证有短信验证平台。 IP限制有虚拟拨号…

好的学习网站,设计类、网站类、编程类

http://t.cn/zHBCVrj好的学习网站,包括信息化办公、平面设计、室内设计、机械设计、影视动画、网页设计、会计课程 一步步教你利用Discuz X2.5建设论坛视频教程(174集)_第1页_51CTO下载专题_IT技术资料免费下载 http://down.51cto.com/zt/4187/1 主要教授图像与交…

熊猫学猿--第三竹建站发财

熊猫想有个自己的房子,熊猫好想发财,熊猫认认真真写学习笔记,让更多的熊猫跟着发财。那我们开始建站吧 首先我们需要下载一个开源的框架Thinkcmf,然后安装,成功运行之后今天的课程也就结束了。 下载地址:ht…

Win7怎么用IIS发布网站系统 部署项目

项目程序怎么发布到IIS上呢,如何用Win7上IIS部署网站呢。网站系统做好后,需要在服务器上发布部署。今天和朋友们说说怎样将网站项目在Win7的IIS上发布部署 ^_^ 工具: Windows 7 IIS 7 或以上版本 Visual Studio 2010 (或其他VS开发…

大型网站 技术架构演进与性能优化

2019独角兽企业重金招聘Python工程师标准>>> 分布式改造 无线时代下的架构演进 平台化演进:大中台小前台 应用程序优化:代码级优化 链路优化: 大秒系统 高可用-稳定性建设思路 高可用 -高可用体系化建设 转载于:https://my.oschina.net/swearyd7/blog/3017196

Beyond Compare文件对比工具中文网站来啦

Beyond Compare是一款专业级文件对比工具,使用它可以很方便地对比出两个文件夹或者文件的不同之处,相差的每一个字节用颜色加以表示,查看方便。软件内置文件浏览器,方便您对文件、文件夹、表格、注册表、FTP网站等之间的差异进行对…