国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

談?wù)勔恢滦怨K惴?/h1>

這篇具有很好參考價值的文章主要介紹了談?wù)勔恢滦怨K惴?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一致性哈希算法是1997年由麻省理工的幾位學者提出的用于解決分布式緩存中的熱點問題。大家有沒有發(fā)現(xiàn),我們之前介紹的例如快排之類的算法是更早的六七十年代,此時分布式還沒有發(fā)展起來,
大家往往還在提高單機性能。但是九十年代開始,逐漸需要用分布式集群來解決大型問題,相應(yīng)的算法研究也就應(yīng)運而生。
在說到一致性哈希算法,我們還是得先從緩存的發(fā)展談起:
緩存,我們一般是用來提速的,當規(guī)模或者說數(shù)據(jù)量小時,我們往往用單機來部署一套緩存系統(tǒng)即可,如下圖:

談?wù)勔恢滦怨K惴? referrerpolicy=

多臺客戶端在查詢數(shù)據(jù)時,只要根據(jù)key進入緩存服務(wù)器查詢到自己想要的內(nèi)容即可。
但是隨著業(yè)務(wù)的發(fā)展,單一的緩存服務(wù)器往往無法支撐住我們的業(yè)務(wù)需要。比如緩存數(shù)據(jù)太大,多城多活的網(wǎng)絡(luò)部署等,
我們就需要多臺緩存服務(wù)器來支撐,如下圖:

談?wù)勔恢滦怨K惴? referrerpolicy=

客戶端需要查詢緩存時,先根據(jù)哈希算法,講key進行計算,得到哈希值。然后通過哈希值對機器數(shù)取模(%n)來判定落在哪臺機器上。
這個架構(gòu)很簡單,也很易實現(xiàn),我們就不多說了。(防盜連接:本文首發(fā)自http://www.cnblogs.com/jilodream/ )
但是這里會存在一個緩存服務(wù)器伸縮的問題:什么意思呢?比如目前是三臺,我們由于業(yè)務(wù)的需要,需要變?yōu)樗呐_,或者變?yōu)閮膳_。那么我們需要調(diào)整一遍所有數(shù)據(jù)所處的服務(wù)器位置,因為他們存在的位置都有可能改變。

談?wù)勔恢滦怨K惴? referrerpolicy=

分布式緩存本來就是為了解決大數(shù)據(jù)量問題的,此時重新調(diào)整,勢必會極度影響可用性。那么如何解決呢?
來看看一致性哈希算法的思路:
我們假設(shè)存在一個虛擬環(huán),這個環(huán)足夠大,上邊存在2^32個節(jié)點,三臺器機器呢,我們根據(jù)id計算出他們在環(huán)中所處的位置,如圖所示:

談?wù)勔恢滦怨K惴? referrerpolicy=

?文章來源地址http://www.zghlxwxcb.cn/news/detail-468555.html

當我們計算數(shù)據(jù)所處的緩存位置,不再是根據(jù)n來取模,而是根據(jù)2^32來取模,此時會有相當多的數(shù)據(jù)并沒有落在緩存服務(wù)器所處的節(jié)點上。
那怎么辦呢?我們按照順時針方向計算,將數(shù)據(jù)落在下一個最近的順時針節(jié)點上。
如下圖所示:

談?wù)勔恢滦怨K惴? referrerpolicy=

這樣當我們新增或者刪除節(jié)點時,只會影響有限的節(jié)點上的數(shù)據(jù),極大的縮小了受影響的節(jié)點和數(shù)據(jù)。我們只需要重新計算受影響的數(shù)據(jù)即可,但是這樣還會存在新的問題:
1、緩存服務(wù)器計算出的位置不均勻,導致覆蓋的節(jié)點數(shù)差異明顯;(防盜連接:本文首發(fā)自http://www.cnblogs.com/jilodream/ )
2、數(shù)據(jù)并不均衡:數(shù)據(jù)經(jīng)過哈希和取模運算后,可能落在集中的一片區(qū)域中,造成對應(yīng)的緩存服務(wù)器的數(shù)據(jù)特別大。
以上問題我們稱之為數(shù)據(jù)傾斜。數(shù)據(jù)傾斜的程度明顯后,可能會導致所解決的問題再次出現(xiàn)(前文中的紅字部分)。
那如何解決這種問題呢?很簡單,加節(jié)點,只要節(jié)點足夠多,那么就會越來越趨于平均,數(shù)據(jù)傾斜的情況就會越不突出。但是緩存服務(wù)器是有限的,并不是想加多少都可以的。
那怎么辦呢?

我們可以采用虛擬緩存節(jié)點的形式解決問題。什么是虛擬緩存節(jié)點,就是并不實際存在的緩存節(jié)點。只是一個虛擬的點。
每個真實的緩存服務(wù)器對應(yīng)多個虛擬緩存節(jié)點,兩者是一對多的關(guān)系,如下圖所示:

談?wù)勔恢滦怨K惴? referrerpolicy=

虛擬節(jié)點--圖中連接在環(huán)上的就是虛擬緩存節(jié)點。
真實緩存節(jié)點--Cache
每個Cache對應(yīng)若干的虛擬節(jié)點。當增減Cache時,我們只要調(diào)整對應(yīng)的虛擬節(jié)點所對應(yīng)的數(shù)據(jù)即可。

?

到了這里,關(guān)于談?wù)勔恢滦怨K惴ǖ奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 一致性哈希算法優(yōu)勢在哪?如何實現(xiàn)?

    1.1 簡介Hash 哈希算法即散列算法,是一種從任意文件中創(chuàng)造小的數(shù)字「指紋」的方法。與指紋一樣,散列算法就是一種以較短的信息來保證文件唯一性的標志,這種標志與文件的每一個字節(jié)都相關(guān),而且難以找到逆向規(guī)律。因此,當原有文件發(fā)生改變時,其標志值也會發(fā)生改

    2024年02月03日
    瀏覽(34)
  • Redis擴容機制與一致性哈希算法解析

    在分布式系統(tǒng)設(shè)計中,Redis是一個備受歡迎的內(nèi)存數(shù)據(jù)庫,而一致性哈希算法則是分布式系統(tǒng)中常用的數(shù)據(jù)分片和負載均衡技術(shù)。本文將深入探討Redis的擴容機制以及一致性哈希算法的原理,同時提供示例代碼以幫助讀者更好地理解這兩個重要概念。 Redis是一種高性能的內(nèi)存數(shù)

    2024年02月11日
    瀏覽(42)
  • 什么是一致性哈希?一致性哈希是如何工作的?如何設(shè)計一致性哈希?

    如果你有 n 個緩存服務(wù)器,一個常見的負載均衡方式是使用以下的哈希方法: 服務(wù)器索引 = 哈希(鍵) % N ,其中 N 是服務(wù)器池的大小。 讓我們通過一個例子來說明這是如何工作的。如表5-1所示,我們有4臺服務(wù)器和8個字符串鍵及其哈希值。 為了獲取存儲某個鍵的服務(wù)器,我們

    2024年02月06日
    瀏覽(32)
  • Sharding-JDBC 自定義一致性哈希算法 + 虛擬節(jié)點 實現(xiàn)數(shù)據(jù)庫分片策略

    分片操作是分片鍵 + 分片算法,也就是分片策略。目前Sharding-JDBC 支持多種分片策略: 標準分片策略 對應(yīng)StandardShardingStrategy。提供對SQL語句中的=, IN和BETWEEN AND的分片操作支持。 復(fù)合分片策略 對應(yīng)ComplexShardingStrategy。復(fù)合分片策略。提供對SQL語句中的=, IN和BETWEEN AND的分片操作

    2024年02月02日
    瀏覽(93)
  • 【分布式】一致性哈希和哈希槽

    【分布式】一致性哈希和哈希槽

    當我們擁有了多臺存儲服務(wù)器之后,現(xiàn)在有多個key,希望可以將這些個key均勻的緩存到這些服務(wù)器上,可以使用哪些方案呢? 1.1 直接哈希取模 這是一種最容易想到的方法,使用取模算法hash(key)% N,對key進行hash運算后取模,N是機器的數(shù)量。key進行hash后的結(jié)果對3取模,得

    2024年02月03日
    瀏覽(28)
  • 一致性哈希(哈希環(huán))解決數(shù)據(jù)分布問題

    哈希算法是程序開發(fā)過程中最廣泛接觸到的的算法之一,典型的應(yīng)用有安全加密、數(shù)據(jù)校驗、唯一標識、散列函數(shù)、負載均衡、數(shù)據(jù)分片、分布式存儲。前些天遇到用一致性哈希(哈希環(huán))的場景,不過我細想一下,對這個知識點好像了解過,但是又沒太深印象,說不出具體

    2024年02月04日
    瀏覽(27)
  • Dubbo負載均衡策略之 一致性哈希

    Dubbo負載均衡策略之 一致性哈希

    本文主要講解了一致性哈希算法的原理以及其存在的數(shù)據(jù)傾斜的問題,然后引出解決數(shù)據(jù)傾斜問題的方法,最后分析一致性哈希算法在Dubbo中的使用。通過這篇文章,可以了解到一致性哈希算法的原理以及這種算法存在的問題和解決方案。 在這里引用dubbo官網(wǎng)的一段話——

    2024年02月08日
    瀏覽(23)
  • 得物面試:Redis用哈希槽,而不是一致性哈希,為什么?

    得物面試:Redis用哈希槽,而不是一致性哈希,為什么?

    在40歲老架構(gòu)師 尼恩的 讀者交流群 (50+)中,最近有小伙伴拿到了一線互聯(lián)網(wǎng)企業(yè)如得物、阿里、滴滴、極兔、有贊、希音、百度、網(wǎng)易、美團的面試資格,遇到很多很重要的面試題: Redis為何用哈希槽而不用一致性哈希? 最近有小伙伴在面試網(wǎng)易,又遇到了相關(guān)的面試題。

    2024年02月21日
    瀏覽(24)
  • Dubbo負載均衡策略之 一致性哈希 | 京東云技術(shù)團隊

    Dubbo負載均衡策略之 一致性哈希 | 京東云技術(shù)團隊

    本文主要講解了一致性哈希算法的原理以及其存在的數(shù)據(jù)傾斜的問題,然后引出解決數(shù)據(jù)傾斜問題的方法,最后分析一致性哈希算法在Dubbo中的使用。通過這篇文章,可以了解到一致性哈希算法的原理以及這種算法存在的問題和解決方案。 在這里引用dubbo官網(wǎng)的一段話——

    2024年02月08日
    瀏覽(27)
  • JAVA面試題分享五百六十五:為啥Redis用哈希槽,不用一致性哈希?

    JAVA面試題分享五百六十五:為啥Redis用哈希槽,不用一致性哈希?

    無論是哈希槽,還是一致性hash,都屬于hash取模數(shù)據(jù)分片。 先從經(jīng)典的hash取模數(shù)據(jù)分片說起 假如 Redis集群的節(jié)點數(shù)為3個,使用經(jīng)典的hash取模算法進行數(shù)據(jù)分片,實際上就是一個節(jié)點一個數(shù)據(jù)分片,分為3片而已。 每次請求使用 hash(key) % 3 的方式計算對應(yīng)的節(jié)點,或者進行

    2024年04月16日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包