Caching(二)|学习笔记

简介: 快速学习 Caching(二)

开发者学堂课程【高校精品课-上海交通大学-企业级应用体系架构:Caching】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/75/detail/15833


Caching (二)

 

内容介绍

Memcached

MemCached - Storage Commands

、MemCached - Memory Management

Redis

、Clusterina

 

三、MemCached - Memory Management

image.png

memcached 里面放的是 vlume就是对象对象有大有小,如何充分高效的利用内存在内存里面把所有的对象分成不同的 chunks再分成小的放对象的块有的放88个字节,有分成112字节有分成114的以此类推有比较大的柜分成一堆小抽屉一堆中等抽屉,一堆大抽屉,一堆更大的抽屉排列在柜子里戒指或者耳环小东西找最小的柜给塞进当要放一本书或者是一手机一个相机的时候就找比较大的柜子塞进去比如放枕头,放被,找个更大的地方塞进总是在找能放得下东西的最小的柜找最贴近的放最节约内存memcached 就是这个道理person 类对象的时候要看一个 person 要多少个字节比如有100个字节会找到比100个大的最小的 chunks比如112个字节在 chunks 里找空位把东西扔进从处理规则可以看到使用内存的方式非常节约

image.png

memcached 在部署时可以有多个节点可以起三个节点端口号不一样或者在三台机器上跑有一个数据设置tokyo塞进节点里面的哪个一个才能把它读出来这件事情不需要 memcached 自己进行处理,memcached 三个节点彼此之间不需要做任何的通信三个彼此可以独立的存在找到 tokyo 存放的地址取决于客户端的程序memcached 可以提供算法只要用算法就可以memcached 要求客户端在启动的时候要配当前有多少台服务器所以可以看到只配了一个11211端口上,提供算法库里面选算法比如在三个节点之间做 hash把存到哪个节点,服务器三个之间不需要通信选中一种算法告诉有多少个节点拿着键做 hash 就得到应该在哪个上面存所以在获取 tokyo 对象的时候只要算法没变仍然是在列表上做 hash 就能在节点上找到数据所以在集群里面可以看到memcached 采用一种比较简单的方式但是效率比较高,节点之间不需要通信一个数据一定会存在节点当中的某一个上服务器端自己通过 hash 确定位置在哪里,不需要控制节点所有的请求必须转发给控制节点控制节点再决定后台到哪里拿把位置变得透明,让客户端直接清楚服务器有哪一些方法可以看到 memcached 的实现比较简单,比较灵活效率比较高,但是有致命缺陷如果在运行过程中,节点崩了算法正好在 node1,拿不到就要自己维护,而且需要把列表重新更新,再完全靠客户端的程序,看将数据应该往哪里更合适如果有管理节点在屏蔽事情到底有多少个节点以及用什么算法完全靠管理点屏蔽客户端只把 P 交给管理节点让它决定到哪里存储避免节点直接被客户端给看到直接对客户端产生影响问题但是一旦这样做 memcached 管理节点就会变得非常重有可能成为系统的瓶颈本来大量的客户端直接就算出在哪里直接访问三点节点现在要把大量的客户端的请求全部发到管理节点管理节点再处理就有可能成为瓶颈而且还可能成为单一故障节点所以基于考虑memcached 不要这也是设计的原则需要节是屏蔽后台的差异还是消除系统当中单一故障节点,即使是崩的节点另外两个节点上的数据也用,哪方式好需要做权衡

image.png

如果数据在进行存储中内存不够需要增加节点在 hash 有三个节点除以三得到余数余数零一二三个当中的一个三个节点存储节点的标志零一二把的键拿出累加以后除以三得到结果就知道在三个节点里哪一个但是如果内存不够,增加一个如果除以四类之前已经存储的节点就找不到避免这样的情况memcached 用一致性 hash 算法算法也被称为 chord节点不光是数据节点本身也参与到 hash 算法里所有的数据以及节点都给不同的 idhash 算完之后零,比如用四个字节的数值表示数据的 id算完之后就会有零到二的32次方减一空位取值范围在范围内针对每一个节点,大于零小于第一个节点的 hash 值对应的数据存到节点上把所有的节点所有的数据的 hash 值排序大于节点的 hash 值小于节点的 hash 的时候把两个数据存到节点上所有的数据都存在大于最小的节点的上面hash 值大于自身的 hash 所有的节点里面最小的节点大的有三个节点但是存储存离最近的大的节点存储节点和数据一起在参与 hash整个四个字节存储所有的数据所以最多零到32次减一,再往外就溢出,所以最后可以看到像环一样溢出回到零

image.png

当增加节点的时候放到第五个节点只要把 node5的数据存在 node4节点上当插入一个节点,计算hashhash 值比新插入的节点小的一部数据,从原节点上删除,存到新的节点上就可以只移动几个数据的数据都不动,保证原存储的位置不动,发现增加一个节点不会带太大的麻烦原来的节点上面存储的那些数据不受任何影响在哪找,还是在哪找只有一部分数据发生变化做修改的时候查找的时候,大部分的数据是不动的也不会受影响,小部分的数据要挪动一下,但是查找的算法不动还是在找比节点最小的比数据 hash 值大的最小的节点可以看到使用 hash 可以任意的添加新节点节点数量增加有一部分数据会发生变化,后续新加的数据也不受影响可以随意的增加节点数量移出节点,节点浪费,所有的内存都没有被利用把原的数据挪到的下一个存储节点上就可以删掉,增加和删除都变得非常简单于是两个东西和前面客户端通过 hash 的方式确定数据存储的位置一起组合使用会发现 memcached 实践方式非常的灵活就是想要的的东西一致性 hash算法里面有很多地方都会利用存储节点和所有的单个的数据全部参与 hash 计算得到固定长度可以是四个字节,也可以是16个字节,看数据的量固定长度的hash值,因为 hash 是固定长度,所以02的32次方在节点上就是02的32次方,溢出了,所以在环里于是有数据存储分布的协议。

相关文章
|
21小时前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
10天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
4天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
429 191
|
2天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。
|
8天前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
|
4天前
|
消息中间件 安全 NoSQL
阿里云通过中国信通院首批安全可信中间件评估
近日,由中国信通院主办的 2025(第五届)数字化转型发展大会在京举行。会上,“阿里云应用服务器软件 AliEE”、“消息队列软件 RocketMQ”、“云数据库 Tair”三款产品成功通过中国信通院“安全可信中间件”系列评估,成为首批获此认证的中间件产品。此次评估覆盖安全可信要求、功能完备性、安全防护能力、性能表现、可靠性与可维护性等核心指标,标志着阿里云中间件产品在多架构适配与安全能力上达到行业领先水平。
313 196