国产精品久久9a久美女性色,日韩综合中文字幕,天天射天天色天天干,亚洲天堂中文在线,成年人午夜视频,国产精品伦理久久久久久,亚洲欧美视频一区二区

php語言

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

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

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

  業(yè)精于勤,荒于嬉;行成于思,毀于隨。學(xué)習(xí)編程的時(shí)候不僅要專心,更有用心。下面是小編整理的一致性hash算法在內(nèi)存數(shù)據(jù)庫中的應(yī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對大家應(yīng)該不陌生,通過把Key映射到Memcached Server上,實(shí)現(xiàn)快速讀取。我們可以動(dòng)態(tài)對其節(jié)點(diǎn)增加,并未影響之前已經(jīng)映射到內(nèi)存的Key與memcached Server之間的關(guān)系,這就是因?yàn)槭褂昧艘恢滦怨。因(yàn)镸emcached的哈希策略是在其客戶端實(shí)現(xiàn)的,因此不同的客戶端實(shí)現(xiàn)也有區(qū)別,以Spymemcache、Xmemcache為例,都是使用了KETAMA作為其實(shí)現(xiàn)。

  一致性hash算法:

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

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

  【拓展閱讀】

PHP語言最令人“抓狂”的特性

  糟糕的type安全

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

  (string)"false"

  (int)0

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

  選擇太多,冗余太多

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

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

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

  CPU資源爭奪戰(zhàn)

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

  SQL注入

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

  不兼容式的變更太多太多

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


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

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

2.phpStorm 2016特色

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

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

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

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

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

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

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

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

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

三級數(shù)據(jù)庫:在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