av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語(yǔ)言

一致性hash算法在內(nèi)存數(shù)據(jù)庫(kù)中的應(yīng)用

時(shí)間:2025-05-02 16:33:17 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

一致性hash算法在內(nèi)存數(shù)據(jù)庫(kù)中的應(yīng)用

  業(yè)精于勤,荒于嬉;行成于思,毀于隨。學(xué)習(xí)編程的時(shí)候不僅要專心,更有用心。下面是小編整理的一致性hash算法在內(nèi)存數(shù)據(jù)庫(kù)中的應(yīng)用,希望對(duì)大家有用,更多消息請(qǐng)關(guān)注應(yīng)屆畢業(yè)生網(wǎng)。

  由于redis是單點(diǎn),但是項(xiàng)目中不可避免的會(huì)使用多臺(tái)Redis緩存服務(wù)器,那么怎么把緩存的Key均勻的映射到多臺(tái)Redis服務(wù)器上,且隨著緩存服務(wù)器的增加或減少時(shí)做到最小化的減少緩存Key的命中率呢?這樣就需要我們自己實(shí)現(xiàn)分布式。

  Memcached對(duì)大家應(yīng)該不陌生,通過(guò)把Key映射到Memcached Server上,實(shí)現(xiàn)快速讀取。我們可以動(dòng)態(tài)對(duì)其節(jié)點(diǎn)增加,并未影響之前已經(jīng)映射到內(nèi)存的Key與memcached Server之間的關(guān)系,這就是因?yàn)槭褂昧艘恢滦怨!R驗(yàn)镸emcached的哈希策略是在其客戶端實(shí)現(xiàn)的,因此不同的客戶端實(shí)現(xiàn)也有區(qū)別,以Spymemcache、Xmemcache為例,都是使用了KETAMA作為其實(shí)現(xiàn)。

  一致性hash算法:

  由于hash算法結(jié)果一般為unsigned int型,因此對(duì)于hash函數(shù)的結(jié)果應(yīng)該均勻分布在[0,2^32-1]區(qū)間,如果我們把一個(gè)圓環(huán)用2^32 個(gè)點(diǎn)來(lái)進(jìn)行均勻切割,首先按照hash(key)函數(shù)算出服務(wù)器(節(jié)點(diǎn))的哈希值, 并將其分布到0~2^32的圓環(huán)上。

  用同樣的hash(key)函數(shù)求出需要存儲(chǔ)數(shù)據(jù)的鍵的哈希值,并映射到圓環(huán)上。然后從數(shù)據(jù)映射到的位置開(kāi)始順時(shí)針查找,將數(shù)據(jù)保存到找到的第一個(gè)服務(wù)器(節(jié)點(diǎn))上。key1、key2、key3和server1、server2通過(guò)hash都能在這個(gè)圓環(huán)上找到自己的位置,并且通過(guò)順時(shí)針的方式來(lái)將key定位到server。按上圖來(lái)說(shuō),key1和key2存儲(chǔ)到server1,而key3存儲(chǔ)到server2。如果新增一臺(tái)server,hash后在key1和key2之間,則只會(huì)影響key1(key1將會(huì)存儲(chǔ)在新增的server上),其它不變。

  【拓展閱讀】

PHP語(yǔ)言最令人“抓狂”的特性

  糟糕的type安全

  這個(gè)問(wèn)題簡(jiǎn)直可怕,首先舉個(gè)PHP程序員們喜聞樂(lè)見(jiàn)的例子:

  (string)"false"

  (int)0

  請(qǐng)注意,這并不屬于那種某些PHP支持者所爭(zhēng)論的“函數(shù)副作用”的典型情況。畢竟t當(dāng)中也包含著大量由于type轉(zhuǎn)換所引發(fā)的同類情況。事實(shí)上,這一行 想表達(dá)的是:左側(cè)為字符串,右側(cè)為一個(gè)整數(shù)。只不過(guò)左側(cè)與右側(cè)內(nèi)容完全相等。照這樣說(shuō)來(lái),如果讓PHP的設(shè)計(jì)者負(fù)責(zé)管理、世界上的每個(gè)人都能彼此和睦相處。

  選擇太多,冗余太多

  PHP語(yǔ)言的一大特色就是可做的事太多,做事的途徑同樣太多。每一行命令的結(jié)尾都可以通過(guò)數(shù)字符號(hào)或者雙斜線來(lái)進(jìn)行注釋。無(wú)論是浮點(diǎn)數(shù)字還是雙精度數(shù)字都代表著同樣的含義。簡(jiǎn)單的設(shè)計(jì)往往會(huì)被人們所忽略,因?yàn)榇蠹以诖a貢獻(xiàn)過(guò)程中喜歡添加自己的小特性。這有點(diǎn)像依靠委員會(huì)體系進(jìn)行設(shè)計(jì),只不過(guò)該委員會(huì)從來(lái)沒(méi)考慮到過(guò)把其中的差異性剔除掉。

  詭異的變量命名規(guī)則

  把美元符號(hào)作為前綴實(shí)在不是個(gè)好主意。也許強(qiáng)制性地在所有變量前添加這個(gè)符號(hào)是為了更輕松地將其插入到模板當(dāng)中,但這樣說(shuō)來(lái)常數(shù)內(nèi)容也同樣需要這么個(gè)符號(hào)啊—為什么實(shí)際上卻用不著呢?

  CPU資源爭(zhēng)奪戰(zhàn)

  對(duì)于32位計(jì)算設(shè)備來(lái)說(shuō),整數(shù)數(shù)值過(guò)大始終是個(gè)無(wú)法回避的難題。不過(guò)在另一方面,64位設(shè)備卻不會(huì)受此影響,也就是說(shuō)代碼在不同設(shè)備上的運(yùn)行狀態(tài)是不同的。大家可以在自己的筆記本上測(cè)試一下,我可以保證事實(shí)絕對(duì)是如此。但一旦把運(yùn)行平臺(tái)轉(zhuǎn)換成服務(wù)器,情況則會(huì)再度變化。這時(shí)如果大家希望重現(xiàn)自己臺(tái)式機(jī)上的錯(cuò)誤,結(jié)果恐怕要令各位失望。惟一的好消息是,32位設(shè)備將很可能最終消失。

  SQL注入

  將SQL注入這一安全漏洞的主要形式之一歸咎于PHP確實(shí)有失公允。人們?cè)谄渌Z(yǔ)言當(dāng)中同樣會(huì)不慎輸入奇怪的SQL字符串。之所以將其納入文章,主要是考慮到PHP語(yǔ)言更容易讓該漏洞攫取數(shù)據(jù)并發(fā)送至MySQL—簡(jiǎn)單是輕而易舉。雖然新手在使用任何一種語(yǔ)言時(shí)都可能犯下同樣的錯(cuò)誤,但這類情況在PHP中出現(xiàn)的機(jī)率明顯要高得多得多。

  不兼容式的變更太多太多

  不同版本之間存在巨大差異,兼容性問(wèn)題也絕不是小事。以Java或者t為代表的編程語(yǔ)言在快速發(fā)展的同時(shí)也犧牲了向下兼容的特性。事實(shí)上,老代碼在新設(shè)備上無(wú)法運(yùn)行的問(wèn)題并不少見(jiàn)。但這一切與PHP的情況其實(shí)不盡相同。在PHP方面,不同版本之間往往差別巨大,因此大家只能祈禱自己的服務(wù)器已經(jīng)安裝了正確的版本,否則只有在出現(xiàn)嚴(yán)重問(wèn)題時(shí)才能意識(shí)到大事不妙?偠灾诓榭捶⻊(wù)器上是否有項(xiàng)目需要升級(jí)時(shí),請(qǐng)優(yōu)先把目光對(duì)準(zhǔn)PHP。


更多PHP相關(guān)文章推薦:

1.php語(yǔ)言基礎(chǔ)知識(shí)

2.phpStorm 2016特色

3.最實(shí)用的PHP實(shí)例代碼21個(gè)

4.php中防止SQL注入的方法

5.PHP中的條件結(jié)構(gòu)語(yǔ)句

6.PHP 的`錯(cuò)誤機(jī)制總結(jié)

7.phpmyadmin導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)文件最大限制的解決方法

8.php安全:全面解析跨站腳本攻擊

9.PHP學(xué)習(xí):PHP拼音類

10.PHP中實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)

【一致性hash算法在內(nèi)存數(shù)據(jù)庫(kù)中的應(yīng)用】相關(guān)文章:

三級(jí)數(shù)據(jù)庫(kù):在SQLSERVER中實(shí)現(xiàn)RSA加密算法05-18

Java中shuffle算法的使用03-05

如何識(shí)別Java中的內(nèi)存泄漏05-22

Java數(shù)組在內(nèi)存中是如何存放的05-03

java的hash Code的使用方法04-04

C/C++變量在內(nèi)存中的分布05-03

Java中4大基本加密算法07-29

java中全排列是如何生成算法05-18

C/C++變量在內(nèi)存中的分布介紹06-18