咱們經常對一個拼接的變量進行映射,讓一個變量經過必定的算法得出一個可控的結果真後在操做.好比淘寶的分佈式存儲,淘寶會根據註冊用戶ID對64取模,結果確定是小於64的數,就能夠根據此數來肯定用戶信息存儲在64臺服務器中的哪一臺.node
這裏一個前提是會員ID是數值型,若是是字符串怎麼辦?本文要解決的就是這個問題.git
思路:給字符串求哈希散列碼, 而後對固定數值求模,最後肯定該把數據存儲到那臺服務器上.github
node.js 下有不少求哈希散列值的模塊,本文用到的是 fnv-plusweb
github 地址: https://github.com/tjwebb/fnv-plus算法
npm 安裝模塊(這裏就省略不說了)npm
使用:服務器
var fnv = require('fnv-plus');分佈式
fnv.hash('xiaoxiao', 64) 這裏注意,對 字符串 'xiaoxiao' 求64位哈希散列值時,這裏返回一個對象.以下圖.ui
返回的這對象告訴你此散列值是64位,value 是什麼,同時還給暴露出3個方法,下面一一介紹這3個方法:對象
dec() 將散列值轉化成10進制
hex() 將散列值轉化成16進制
str() 將散列值轉化爲字符串
> console.log(fnv.hash('moke191000', 64).str()); 1rnie5xrf2iqe > console.log(fnv.hash('moke191000', 64).hex()); 74451624230fd656 > console.log(fnv.hash('moke191000', 64).dec()); 837812702625555003