范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

大厂高频面试题Redis集群数据没法拆分时的搭建策略

  解决思路:
  一致性Hash
  哈希槽一致性Hash
  说到一致性Hash,就得先搞明白为什么要有一致性Hash,介绍一致性Hash算法之前,先简单回顾一下分布式以及Hash算法,便于理解为什么要有一致性Hash算法。分布式
  当我们也无需求很复杂时,单台机器IO以及带宽等都会成为瓶颈,所以对业务进行拆分,部署在不同的机器上,当有请求访问时,根据某些特点将这些请求分散到各个服务器上,这所有的服务器组成的网络,我们称之为集群,这能提高服务器的性能以及利用率。
  如果有一个请求过来存数据,调度器将数据存在了A服务器上,下次客户端再来请求这份数据,该如何迅速判断数据存在哪台服务器呢?这时候引出了哈希的概念。哈希函数
  对于一个函数:
  y=f(x)y=f(x)
  如果两个哈希值是不相同的,那么这两个哈希值的原始输入也是不相同的。这个特性是哈希函数具有确定性的结果,具有这种性质的哈希函数称为单向哈希函数。
  但另一方面,哈希函数的输入和输出不是唯一对应关系的,如果两个哈希值相同,两个输入值很可能是相同的,但也可能不同,如果值相同称为"哈希碰撞(collision)",这通常是两个不同长度的输入值,刻意计算出相同的输出值。输入一些数据计算出哈希值,然后部分改变输入值,一个具有强混淆特性的哈希函数会产生一个完全不同的哈希值。哈希函数是不可逆的,也就是没法根据哈希值来反推输入值。
  那么对于集群而言,每一个请求都有一个标识ID,如果构造标识到服务器的哈希函数,就可以让同一请求固定的达到服务器,因为ID是不变的:
  Serverid=hash(Requestid,N)Serverid=hash(Requestid,N)
  为了均匀分布在不同的服务器上,这是一个跟服务器数量N有关的哈希函数,常见的有取模运算,即:
  Serverid=hash(Requestid)%NServerid=hash(Requestid)%N
  但是这时候有个问题,由于是集群,那么服务器数量可能会有变化,例如今天请求量非常大要增加服务器数量,N变大之后,原有的Hash值就失效了,需要重新对存储的请求值做哈希,由于请求值是一个庞大的数据集.这样造成了巨大的不便,需要改进我们的Hash算法。这时候引出了一致性Hash的思路。一致性Hash
  一致性哈希的思路是,将哈希函数与服务器数量解绑,如果我们用16个二进制标识哈希值,那么哈希值有一个范围区间[0,65536][0,65536],我们将这个区间65536平均分成N份,N是服务器数量,然后将这些服务器节点等距离安排在一个圆环上
  假设服务器数量是4,那么对于所有请求,哈希值必定是介于[0,65536][0,65536]之间,当节点计算哈希后对应环上某一个点,这时候顺时针寻找离自己最近的服务节点作为存储节点,例如:当请求哈希值介于[0,16384][0,16384]之间时,将请求分配到Server 1,如果请求哈希值介于(16384,32768](16384,32768]之间时,将请求分配到Server 2,后面同理,这样做有一个什么好处呢,如果这时候需要新增加一个服务器,假设是Server 5:
  那么需要重新计算Hash值的仅仅为[0,8192][0,8192]这部分请求,将其分配到Server 5上。
  这地方有两点要注意,很多博客都没有提到:
  一是原有节点信息本应该归server 2 存储,新增加了Server 5 之后根据新的规则会映射到Server 5上,那么之前存储在Server 1 上的数据需要重新取出来放在Server 5 上吗?
  答案是否定的,只需要查找数据,在最近的点没找到,往下(顺时针)再查找一个点就行了,也可以再查找两个点(防止插入了两台新的服务节点)
  二是,删除某个服务器节点
  如图,删除服务器Server 4 之后,会将原有分布在Server4 上的请求全都压在Server1上,如果Server1 hold不住,那么可能挂掉,挂掉之后数据又转移给Server2,如此循环会造成所有节点崩溃,也就是雪崩的情况。这种雪崩可以靠下面的虚拟节点引入解决虚拟节点的引入
  我们已经知道,添加和删除节点都会影响缓存数据的分布。尽管hash算法具有分布均匀的特性,但是当集群中server数量很少时,他们可能在环中的分布并不是特别均匀,进而导致缓存数据不能均匀分布到所有的server上,例如都分配在某一个或几个哈希区间,那么有很多服务器可能就没在这个分布式系统中提供作用。
  为解决这个问题,需要使用虚拟节点, 虚拟节点的思想:为每个物理节点(server)在环上分配100~200个点,这样环上的节点较多,就能抑制分布不均匀。当为cache定位目标server时,如果定位到虚拟节点上,就表示cache真正的存储位置是在该虚拟节点代表的实际物理server上。另外,如果每个实际server节点的负载能力不同,可以赋予不同的权重,根据权重分配不同数量的虚拟节点。定位算法不变,只是多了一步虚拟节点到真实节点映射的过程
  为什么说这样能解决雪崩的发生呢,因为即使一台服务器挂了,他应对的虚拟节点也会消失,那也就是新来的数据依旧可在原区间内随机或者根据某种规律分配到其他节点上。
  注意:真实节点不放置到哈希环上,只有虚拟节点才会放上去。
  另外没法做数据库用(待补充)哈希槽
  了解哈希槽前景知识还是普通哈希,前面讲了哈希存在的问题是,当服务节点变化时,假如是增加到N+1,要对所有数据重新对服务器数量N+1取模,这在分布式中是难以接受的,太浪费时间。
  那么,可不可以先假设我将来会有很多机器,例如一万台,对一万台取模,然后构建映射将取模值(哈希值)分区呢?Redis 集群的哈希槽就是这种思路:
  用我们的Key值,对12取模,那么范围是在[0,11][0,11]之间,这儿的[0,11][0,11]就是我们所说的槽值,然后将这个范围区间切割成N份,N为服务器数量,如图:
  之后如果新增了Redis服务器,只需要将映射的槽值对应的数据移动去新服务器就行了:
  基于哈希槽的cluster集群
  当客户端来获取数据时,随便连接到哪一个服务器上,服务器内置上面说的Hash算法,对请求Id进行Hash得到哈希值,每一个服务器内置一个表,这个表将哈希值对应的哈希槽与数据存储服务节点做一个映射,也就是请求压到任一台服务器,有数据的话会返回数据,没有的话会返回存储所需数据的服务器节点位置:
  哈希槽与一致性哈希区别
  它并不是闭合的,key的定位规则是根据CRC-16(key)%16384的值来判断属于哪个槽区,从而判断该key属于哪个节点,而一致性哈希是根据hash(key)的值来顺时针找第一个hash(ip)的节点,从而确定key存储在哪个节点。
  一致性哈希是创建虚拟节点来实现节点宕机后的数据转移并保证数据的安全性和集群的可用性的。redis cluster是采用master节点有多个slave节点机制来保证数据的完整性的,master节点写入数据,slave节点同步数据。当master节点挂机后,slave节点会通过选举机制选举出一个节点变成master节点,实现高可用。但是这里有一点需要考虑,如果master节点存在热点缓存,某一个时刻某个key的访问急剧增高,这时该mater节点可能操劳过度而死,随后从节点选举为主节点后,同样宕机,一次类推,造成缓存雪崩。

vivos15系列正式官宣5月19日正式发布,将有两个版本在5月13日,vivo官方官方宣布了要在5月19日公布vivo新品vivoS15,在手机市场上有着特别的好的市场热度,由于在手机市场上这一款产品的配备主要表现的确非常好,并且依据市天玑9000定制镜头百瓦超充,荣耀70超大杯重塑华为之光?荣耀在今年上半年推出了Magic4系列旗舰手机,该系列机器不仅搭载骁龙8Gen1芯片,同时在相机屏幕方面都有不小的创新从市场反馈来看,荣耀Magic4系列在国内受到了消费者的喜爱,电脑桌面改造,一个ORICOTypeC15合1多功能拓展坞就够了如何打造一个让自己满意的电脑桌面?作为一名数码博主摄影爱好者音乐(响)发烧友,电脑桌面上需要放置使用的设备实在太多了,并且数量品类每隔一段时间都会增加,即使把一些不常用的设备收纳到六大企业落户黑龙江昨天的最火的头条新闻除了盼65号公告的就是六大企业落户黑龙江了现在的黑龙江正是百废待兴的时候,那么华为,百度,京东,腾讯,中科,中兴同时落户黑龙江,发出了什么信号,又将给我们这些普真我realme5G新机曝光搭载天玑810处理器,支持90hz刷新率根据微博知名博主ZEALER5月15日的消息,Realme将于5月18日推出新款5G手机RealmeNarzo50。并称,网上似乎已经透露了该新机的一些海报,从海报可以看出,Rea关于Linux性能调优中网络IO的一些笔记写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合Linux性能优化读书笔记整理涉及内容包括常用的优化工具(miitool,ethtool,ifc索尼的目标是今年销售1800万台PS5游戏机路透社在日本成田成田国际机场的一家电子商店,可以看到索尼公司的标志索尼集团公司周二表示,计划在本财年销售1800万台PlayStation5游戏机,因为强劲的游戏销售帮助其第四季度鸿蒙系统推出全新版本多项功能全面更新近日,HarmonyOS2推出全新版本,本次带来了AI隐私保护图库服务中心等众多特性新升级,欢迎大家体验。鸿蒙系统现在越来越完善,适配的机型也越来越多,大家赶快看看自己的机型是否有每经16点中纪委知网涉嫌垄断被查,给所有平台敲响警钟大理苍山最后一批失联人员已安全下山A股下周超1100亿市值解禁每经编辑张杨运1丨中纪委知网涉嫌垄断被查,给所有平台敲响警钟近日,市场监管总局根据前期核查,依法对知网涉嫌实施垄断行为立案调查。5月13日16时许,国家市场监管总局网站公布的这则短OPPOReno8Pro消息,使用天玑8100,屏幕边框是四边等宽的思路OPPOReno8Pro的设计和参数曝光,应该是一款不太有性价比的线下机。OPPOReno8Pro手机会预算8256和12256两种内存搭配,也就是没有512g内存的版本,使用6。中国股市无人驾驶风口已开启!这五家龙头公司具有黑马潜质无人驾驶行业现状及发展趋势目前,全球的无人驾驶汽车行业发展态势较好,但还量产投入使用的地区较少。无人驾驶技术与5G通讯技术新能源汽车的相关技术共同发展。国际领先机构嫌疑完成无人驾驶
山东省2021年科学技术奖公示,19项农业科技成果榜上有名近日,山东省公示了2021年度科学技术奖拟授奖成果,作为农业大省,山东省十分重视农业科技,此次共有20项涉农科技成果入榜,包括自然科学奖1项,科技进步一二三等奖6项9项和3项。名单花3300买了块苹果表,用了一年时间说下心里话,很多方面不如华为对于大多数人来说,我劝你们还是别买AppleWatch了。这不,AppleWatchS7马上就要发售了,这次的外观也进行了大升级,屏占比更高了,估计很多人都开始骚动了,放心,这款产Facebook全球6小时宕机原因查明一条指令所致,内部工程师所为博雯发自凹非寺量子位报道公众号QbitAIFacebook全球宕机6小时的原因,是公司内部工程师的一条错误指令。最近,Facebook官方针对这次大规模宕机的原因做了回应。这一新闻一台VIVO手机正常情况下能用多久?VIVO手机能用多久,这个问题没有一个标准的答案。VIVO手机总体来说质量还是不错的,若非人为原因,不出意外的话基本用个两三年没有问题。本人从04年购入第一台手机开始,用的手机品牌大一资金充足的情况下该不该买ipad?感谢您的阅读!我必须非常清楚的告诉大家,现在的iPad没有你想象的那么昂贵。如果是老款的iPad,它的价格可能会更为便宜,甚至于只有千元左右,所以只要你的资金相对状况比较不允许的话35岁成职场荣枯线,不是做百年企业该有样子近日,脉脉数据研究院发布了一份调查,对目前中国大型互联网企业员工的平均年龄进行了统计排序,数据显示,大型互联网企业员工平均年龄均不超过35岁。其中,字节跳动美团滴滴为代表的新生代互消息称苹果公司将因其NFC芯片面临欧盟反垄断指控知情人士称,苹果公司将因其NFC芯片技术而受到欧盟反垄断指控的打击,此举可能使该公司面临巨额罚款的风险,并可能迫使其对竞争对手开放移动支付系统。自欧盟去年6月对ApplePay展开乌克兰25岁黑客攻击了100多家外国公司,非法获利超过150万美元乌克兰网络警察网站报道,网络警察拘留了一名25岁的黑客,该黑客利用加密恶意软件攻击外国公司,造成价值超过1。5亿美元的损失。刑事案件详情这名黑客是在一次国际警察行动中被确认的。黑客IBM(IBM。US)预计未来几年收入将实现中个位数增长,自由现金流将达到350亿美元智通财经APP获悉,IBM(IBM。US)董事长兼首席执行官ArvindKrishna在其2021年IBM投资者简报会上表示,从2022年开始,该公司预计通过收购和有机增长,未来几小嘟无线隔空充电全国招商中主流技术1Qi标准Qi是全球首个推动无线充电技术的标准化组织无线充电联盟(WirelessPowerConsortium,简称WPC)推出的无线充电标准,具备便捷性和通用性两大特征锐捷星耀再推新品WiFi6入门级价格,享受旗舰体验近年来,随着宽带提速降费以及WiFi6设备的慢慢普及,路由器犹如换发了新生一般变得越来越重要!除了日常我们使用的手机电视电脑外,智能家居设备也是走入了我们的生活,所以需要连接网络的