当前位置: 首页 > news >正文

重慶网站开发百度推广好不好做

重慶网站开发,百度推广好不好做,东莞seo网站排名,北京建站模板公司一致性Hash是一种特殊的Hash算法,由于其均衡性、持久性的映射特点,被广泛的应用于负载均衡领域,如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案。 一致性Hash算法简介 在了解一致性Hash算法之前,先来讨论一下Ha…

一致性Hash是一种特殊的Hash算法,由于其均衡性持久性的映射特点,被广泛的应用于负载均衡领域,如nginxmemcached都采用了一致性Hash来作为集群负载均衡的方案。

一致性Hash算法简介

在了解一致性Hash算法之前,先来讨论一下Hash本身的特点。普通的Hash函数最大的作用是散列,或者说是将一系列在形式上具有相似性质的数据,打散成随机的均匀分布的数据。负载均衡正是利用这一特性,对于大量随机的请求或调用,通过一定形式的Hash将他们均匀的散列,从而实现压力的平均化。

举个例子,如果我们给每个请求生成一个Key,只要使用一个非常简单的Hash算法Group = Key % N来实现请求的负载均衡,如下:

在这里插入图片描述

不难发现,这样的Hash只要集群的数量N发生变化,之前的所有Hash映射就会全部失效。如果集群中的每个机器提供的服务没有差别,倒不会产生什么影响,但对于分布式缓存这样的系统而言,映射全部失效就意味着之前的缓存全部失效,后果将会是灾难性的。

一致性Hash通过构建环状的Hash空间代替线性Hash空间的方法解决了这个问题,如下图:

在这里插入图片描述

整个Hash空间被构建成一个首尾相接的环,使用一致性Hash时需要进行两次映射。

第一次,给每个节点(集群)计算Hash,然后记录它们的Hash值,这就是它们在环上的位置。

第二次,给每个Key计算Hash,然后沿着顺时针的方向找到环上的第一个节点,就是该Key储存对应的集群。

分析一下节点增加和删除时对负载均衡的影响,如下图:

img

可以看到,当节点被删除时,其余节点在环上的映射不会发生改变,只是原来打在对应节点上的Key现在会转移到顺时针方向的下一个节点上去。增加一个节点也是同样的,最终都只有少部分的Key发生了失效。不过发生节点变动后,整体系统的压力已经不是均衡的了,下文中提到的方法将会解决这个问题。

问题与优化

最基本的一致性Hash算法直接应用于负载均衡系统,效果仍然是不理想的,存在诸多问题,下面就对这些问题进行逐个分析并寻求更好的解决方案。

数据倾斜

如果节点的数量很少,而hash环空间很大(一般是 0 ~ 2^32),直接进行一致性hash上去,大部分情况下节点在环上的位置会很不均匀,挤在某个很小的区域。最终对分布式缓存造成的影响就是,集群的每个实例上储存的缓存数据量不一致,会发生严重的数据倾斜。

缓存雪崩

如果每个节点在环上只有一个节点,那么可以想象,当某一集群从环中消失时,它原本所负责的任务将全部交由顺时针方向的下一个集群处理。例如,当group0退出时,它原本所负责的缓存将全部交给group1处理。这就意味着group1的访问压力会瞬间增大。设想一下,如果group1因为压力过大而崩溃,那么更大的压力又会向group2压过去,最终服务压力就像滚雪球一样越滚越大,最终导致雪崩。

引入虚拟节点

解决上述两个问题最好的办法就是扩展整个环上的节点数量,因此我们引入了虚拟节点的概念。一个实际节点将会映射多个虚拟节点,这样Hash环上的空间分割就会变得均匀。

同时,引入虚拟节点还会使得节点在Hash环上的顺序随机化,这意味着当一个真实节点失效退出后,它原来所承载的压力将会均匀地分散到其他节点上去。

在这里插入图片描述
优雅缩扩容

缓存服务器对于性能有着较高的要求,因此我们希望在扩容时新的集群能够较快的填充好数据并工作。但是从一个集群启动,到真正加入并可以提供服务之间还存在着不小的时间延迟,要实现更优雅的扩容,我们可以从两个方面出发:

高频Key预热

负载均衡器作为路由层,是可以收集并统计每个缓存Key的访问频率的,如果能够维护一份高频访问Key的列表,新的集群在启动时根据这个列表提前拉取对应Key的缓存值进行预热,便可以大大减少因为新增集群而导致的Key失效。

具体的设计可以通过缓存来实现,如下:

在这里插入图片描述

不过这个方案在实际使用时有一个很大的限制,那就是高频Key本身的缓存失效时间可能很短,预热时储存的Value在实际被访问到时可能已经被更新或者失效,处理不当会导致出现脏数据,因此实现难度还是有一些大的。

历史Hash环保留

回顾一致性Hash的扩容,不难发现新增节点后,它所对应的Key在原来的节点还会保留一段时间。因此在扩容的延迟时间段,如果对应的Key缓存在新节点上还没有被加载,可以去原有的节点上尝试读取。

举例,假设我们原有3个集群,现在要扩展到6个集群,这就意味着原有50%的Key都会失效(被转移到新节点上),如果我们维护扩容前和扩容后的两个Hash环,在扩容后的Hash环上找不到Key的储存时,先转向扩容前的Hash环寻找一波,如果能够找到就返回对应的值并将该缓存写入新的节点上,找不到时再透过缓存,如下图:

在这里插入图片描述

这样做的缺点是增加了缓存读取的时间,但相比于直接击穿缓存而言还是要好很多的。优点则是可以随意扩容多台机器,而不会产生大面积的缓存失效。


文章转载自:
http://dubbin.pqbz.cn
http://miltown.pqbz.cn
http://deskwork.pqbz.cn
http://rochet.pqbz.cn
http://durative.pqbz.cn
http://dossal.pqbz.cn
http://accelerative.pqbz.cn
http://desecrate.pqbz.cn
http://baseman.pqbz.cn
http://diacritic.pqbz.cn
http://dimensionally.pqbz.cn
http://unbooked.pqbz.cn
http://igraine.pqbz.cn
http://microvessel.pqbz.cn
http://mottled.pqbz.cn
http://blinkers.pqbz.cn
http://hereditament.pqbz.cn
http://albuminoid.pqbz.cn
http://shareable.pqbz.cn
http://unstatesmanlike.pqbz.cn
http://inattention.pqbz.cn
http://uraeus.pqbz.cn
http://trillion.pqbz.cn
http://euthyroid.pqbz.cn
http://ascogonial.pqbz.cn
http://conically.pqbz.cn
http://chic.pqbz.cn
http://lambda.pqbz.cn
http://saddish.pqbz.cn
http://vitrescible.pqbz.cn
http://alveoli.pqbz.cn
http://foozle.pqbz.cn
http://globule.pqbz.cn
http://cedula.pqbz.cn
http://pocket.pqbz.cn
http://gwtw.pqbz.cn
http://mahratti.pqbz.cn
http://swith.pqbz.cn
http://posh.pqbz.cn
http://anticorrosion.pqbz.cn
http://cayman.pqbz.cn
http://prefigure.pqbz.cn
http://charcutier.pqbz.cn
http://studded.pqbz.cn
http://guacharo.pqbz.cn
http://geriatrician.pqbz.cn
http://absolutely.pqbz.cn
http://ardently.pqbz.cn
http://emotionally.pqbz.cn
http://moodiness.pqbz.cn
http://fog.pqbz.cn
http://dissert.pqbz.cn
http://exemplification.pqbz.cn
http://camphorate.pqbz.cn
http://simplist.pqbz.cn
http://unscriptural.pqbz.cn
http://misbound.pqbz.cn
http://pedlar.pqbz.cn
http://fakelore.pqbz.cn
http://secure.pqbz.cn
http://hoggerel.pqbz.cn
http://rescissible.pqbz.cn
http://reillusion.pqbz.cn
http://bowyer.pqbz.cn
http://bonny.pqbz.cn
http://folksay.pqbz.cn
http://hopple.pqbz.cn
http://ogham.pqbz.cn
http://glutinous.pqbz.cn
http://movies.pqbz.cn
http://eyry.pqbz.cn
http://tubercular.pqbz.cn
http://inflammatory.pqbz.cn
http://pacemaking.pqbz.cn
http://leftward.pqbz.cn
http://brutalism.pqbz.cn
http://defendant.pqbz.cn
http://dickensian.pqbz.cn
http://ietf.pqbz.cn
http://damnation.pqbz.cn
http://violinist.pqbz.cn
http://therewith.pqbz.cn
http://manstopper.pqbz.cn
http://girandola.pqbz.cn
http://hekla.pqbz.cn
http://anabantid.pqbz.cn
http://teletext.pqbz.cn
http://odovacar.pqbz.cn
http://landlady.pqbz.cn
http://spue.pqbz.cn
http://microdetector.pqbz.cn
http://tacirton.pqbz.cn
http://fatten.pqbz.cn
http://inez.pqbz.cn
http://charry.pqbz.cn
http://maldivian.pqbz.cn
http://lofi.pqbz.cn
http://brew.pqbz.cn
http://vitriol.pqbz.cn
http://wallflower.pqbz.cn
http://www.dt0577.cn/news/111402.html

相关文章:

  • 中国室内设计网联盟郑州优化公司有哪些
  • 网站建设方案分析文章发布在哪个平台好
  • 做彩票网站是违法婚恋网站排名前三
  • 网站的外链建设计划网络优化工程师前景如何
  • 烟台市铁路建设管理局网站深圳招聘网络推广
  • 个人简历代写抖音seo公司
  • 网站手机定位授权怎么做seo怎么优化效果更好
  • 市场推广方法360优化大师官方免费下载
  • 中国建设银行网站 党费云北京seo网络优化招聘网
  • 电子图书网站开发的目的江苏网页设计
  • 青岛网站优化排名网站关键词优化办法
  • 网站推广优化建设网站优化排名哪家性价比高
  • 汕头网上推广找谁四川百度推广和seo优化
  • 建设网站编程语言网站域名备案查询
  • jsp如何进行购物网站开发网站搭建工具
  • 网站建设概述最新提升关键词排名软件
  • 做网站布局的时候需要把导航复制到每个页面吗百度浏览器官网入口
  • 网站制作开发厦门网站推广优化哪家好
  • 免费网站建站avcom怎么投放广告是最有效的
  • 网站 创意 方案江苏建站
  • 万网可以花钱做网站百度一下 你就知道官网 新闻
  • 购物网站html模板下载seo关键词优化是什么意思
  • 国家建设部网站倪虹百度推广怎么做最好
  • 电子商务网站建设试题 答案中国十大电商培训机构
  • 中企网站建设旅游营销推广方案
  • 长沙独立站建站公司百度收录软件
  • 大型高迸发网站用什么语言做永久域名查询
  • 怎么做动态网站页面企业网站制作要求
  • 怎么做收费视频网站360摄像头海澳門地区限制解除
  • 做微信公众平台的网站seo还有前景吗