日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java實現一致性hash算法實例代碼

瀏覽:21日期:2022-08-19 14:06:34

一致性hash算法java版本簡單實現

package com.java4all.grouth.consistent;import java.util.LinkedList;import java.util.List;import java.util.SortedMap;import java.util.TreeMap;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 一致性hash算法java簡易實現 * @author IT云清 * 參考:https://blog.csdn.net/zhanglu0223/article/details/100579254 */public class ConsistentHash { private static final Logger LOGGER = LoggerFactory.getLogger(ConsistentHash.class); /** * 虛擬節點個數 * 每個真實節點對應的虛擬節點個數 */ private static final int VIRTUAL_NUM = 5; /** * 虛擬節點 * eg:<656715414,192.168.1.1&&VN3> * 真實節點數量一般偏少,引入虛擬節點來平衡 * 每個真實節點對應多個虛擬節點,這樣每個節點盡可能在hash環上均勻分布,可以根據虛擬節點找到真實節點 */ private static SortedMap<Integer,String> shards = new TreeMap<>(); /** * 真實節點 */ private static List<String> realNodes = new LinkedList<>(); /** * 模擬初始節點 */ private static String[] servers = {'116.116.1.1', '116.116.1.2', '116.116.1.3', '116.116.1.5', '116.116.1.6'}; /** * 初始化虛擬節點 */ static { for (String server : servers) { realNodes.add(server); LOGGER.info('添加真實節點{}',server); for(int i = 0;i < VIRTUAL_NUM; i ++){ String virtualNode = server + '&&VN' + i; int hash = getHash(virtualNode); shards.put(hash,virtualNode); LOGGER.info('添加虛擬節點{},hash為{}',virtualNode,hash); } } } public static void main(String[]args){ test2(); } public static void test2(){ //測試定位node LOGGER.info(getSever('aa')); LOGGER.info(getSever('漲三')); LOGGER.info(getSever('num_19120000')); LOGGER.info(getSever('num_19120000')); LOGGER.info('------------------'); //測試添加節點 addNode('192.192.116.1'); addNode('192.192.116.2'); LOGGER.info('------------------'); //測試刪除節點 delNode('116.116.1.1'); } /** * 獲取真實節點ip * @param str 字符串 * @return */ public static String getSever(String str){ //計算hash int hash = getHash(str); Integer key = null; //尋找最近的虛擬node SortedMap<Integer, String> tailMap = shards.tailMap(hash); //獲取在hash環上 右側最近的虛擬節點的key key = tailMap.isEmpty() ? shards.lastKey() : tailMap.firstKey(); //根據hash獲取虛擬節點 String virtualNode = shards.get(key); //返回虛擬節點的真實ip return virtualNode.substring(0,virtualNode.indexOf('&&')); } /** * 添加節點 * @param node */ public static void addNode(String node){ if(!realNodes.contains(node)){ realNodes.add(node); LOGGER.info('新增真實節點上線,{}',node); for(int i = 0;i < VIRTUAL_NUM;i ++){ String virtualNode = node + '&&VN' + i; int hash = getHash(virtualNode); shards.put(hash,virtualNode); LOGGER.info('新增虛擬節點{},hash為{}',virtualNode,hash); } } } /** * 刪除節點 * @param node */ public static void delNode(String node){ if(realNodes.contains(node)){ //下線真實節點 realNodes.remove(node); LOGGER.info('真實節點下線,{}',node); for(int i = 0;i < VIRTUAL_NUM; i++){ String virtualNode = node + '&&VN' + i; int hash = getHash(virtualNode); //移除虛擬節點 shards.remove(hash); LOGGER.info('下線虛擬節點{},hash為{}',virtualNode,hash); } } } /** * FNV1_32_HASH算法 * @param str 任意字符串 * @return 返回int類型的hash值 */ private static int getHash(String str) { final int p = 16777619; int hash = (int) 2166136261L; for (int i = 0; i < str.length(); i++) { hash = (hash ^ str.charAt(i)) * p; } hash += hash << 13; hash ^= hash >> 7; hash += hash << 3; hash ^= hash >> 17; hash += hash << 5; // 如果算出來的值為負數則取其絕對值 if (hash < 0) { hash = Math.abs(hash); } return hash; }}

到此這篇關于java實現一致性hash算法的文章就介紹到這了,更多相關java實現一致性hash算法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲男女自偷自拍| 一区二区三区网站| 国产精品毛片视频| 五月激激激综合网色播| 日韩国产欧美视频| 欧美私人啪啪vps| 国产精品网站在线看| 老司机精品视频网| 黄色欧美在线| 91精品一区二区三区综合在线爱| 久久精品亚洲欧美日韩精品中文字幕| 激情五月色综合国产精品| 免费视频久久| 欧美亚洲色图校园春色| 精品在线网站观看| av资源亚洲| 久久免费高清| 免费视频久久| 日韩av二区在线播放| 国产精品久久久久77777丨| 精品九九在线| 精品在线99| 日本在线不卡视频一二三区| 国产精品亚洲二区| 天堂av在线| 欧美一级全黄| 蜜臀av国产精品久久久久| 青青草91视频| 捆绑调教美女网站视频一区| 成人久久一区| 视频一区二区欧美| 在线观看一区| 久久亚州av| 亚洲激情精品| 国产精品嫩模av在线| 四虎4545www国产精品 | 久久精品影视| 三级欧美在线一区| 嫩草伊人久久精品少妇av杨幂| www.com.cn成人| 亚洲色图国产| 国产不卡精品| 男女精品网站| 欧美激情福利| 欧美肉体xxxx裸体137大胆| 亚洲精品动态| 日韩一区三区| 日韩国产在线不卡视频| 97精品国产福利一区二区三区| av不卡在线看| 美腿丝袜亚洲一区| 亚洲欧美日本国产专区一区| 精品一区在线| 日韩美女国产精品| 狠狠躁少妇一区二区三区| 蜜臀久久久99精品久久久久久| 麻豆一区在线| 久久亚洲国产精品一区二区| 国产一区二区三区免费在线| 六月婷婷一区| 国产福利电影在线播放| 亚洲精一区二区三区| 欧美亚洲日本精品| 91亚洲无吗| 一本一道久久a久久精品蜜桃| 麻豆中文一区二区| 亚洲不卡视频| 欧美一区二区三区高清视频| 国产精品一区免费在线| 亚洲一区二区成人| 人在线成免费视频| 国产精品一区二区99| 视频在线观看91| 日韩国产在线| 久久国产尿小便嘘嘘| 99视频+国产日韩欧美| 国产 日韩 欧美 综合 一区| 911精品国产| 久久xxxx| 国产精品av一区二区| 久久久久久婷| 国产精品主播在线观看| 蜜臀av在线播放一区二区三区| 日韩精品欧美| 精品精品99| 青青国产91久久久久久| 久久av网站| 亚久久调教视频| 狠狠干综合网| 欧美黑人做爰爽爽爽| 蜜桃久久久久久| 亚洲午夜视频| 日韩在线欧美| 欧美xxxx中国| 精品一区二区三区的国产在线观看 | 欧美精品1区| 日韩一区二区三区精品| 午夜在线视频一区二区区别| 1024精品一区二区三区| 日韩国产专区| 日韩精品专区| 国产精品不卡| 久久精品资源| 精品中文在线| 精品国产麻豆| 成人台湾亚洲精品一区二区| 麻豆国产一区| 麻豆视频一区二区| 久久99偷拍| 美腿丝袜亚洲一区| 国产极品一区| 久久精品国产亚洲一区二区三区| 欧美一级一区| 日韩和欧美一区二区三区| 亚洲三级观看| 在线亚洲人成| 久久黄色影视| 欧美精品影院| 欧美一级一区| 国产欧美日韩在线一区二区 | 国产精品久av福利在线观看| 久久国产精品免费一区二区三区| 亚洲男人在线| 日韩av网站免费在线| 日韩精品成人| 91精品国产自产精品男人的天堂 | 少妇高潮一区二区三区99| 综合国产在线| 少妇精品久久久一区二区| 亚洲欧美一级| 国产亚洲久久| 老色鬼精品视频在线观看播放| 免费一级欧美片在线观看网站 | 美女视频免费精品| 日本一区二区高清不卡| 视频二区不卡| 一级欧洲+日本+国产| 视频在线观看一区二区三区| 亚州av日韩av| 国产欧美在线| 精品免费视频| 激情久久中文字幕| 午夜在线观看免费一区| 日韩精品亚洲专区| 麻豆一区二区三| 深夜福利视频一区二区| 91久久黄色| 成人污污视频| 91精品蜜臀一区二区三区在线 | 日韩大片在线观看| 亚洲精品国产偷自在线观看| 在线日韩成人| 久久亚洲道色| 亚洲欧美一区在线| 视频在线在亚洲| 国产精品极品| 亚洲国内欧美| 日本欧美大码aⅴ在线播放| 韩日一区二区| 国产亚洲高清视频| 国产伦乱精品| av一区在线| 亚洲综合图色| 精品欠久久久中文字幕加勒比| 久久亚洲精品中文字幕蜜潮电影| 老鸭窝亚洲一区二区三区| 国产精品毛片久久久| 久久精品欧美一区| 日本在线成人| 国内精品伊人| 美女精品在线观看| 老司机精品视频网| 国产精品人人爽人人做我的可爱| 国产精品亚洲产品| 好看的亚洲午夜视频在线| 国产精品久久777777毛茸茸| 亚洲成人国产| 国产精品毛片视频| 日韩天堂av| 免费日韩一区二区三区| 亚洲黄页一区| 成人国产精品久久| 日韩中文字幕不卡| 日韩网站中文字幕| av亚洲免费| 国产精品一区二区三区美女 | 久久激情五月婷婷| 在线日韩av| 国产高清精品二区| 丝袜美腿高跟呻吟高潮一区| 91青青国产在线观看精品| 亚洲另类黄色| 日本高清不卡一区二区三区视频 | 亚洲精品日本| 欧美国产极品| 中文字幕乱码亚洲无线精品一区| 97精品国产| 国产伦精品一区二区三区千人斩| 国产在线不卡| 久久亚洲资源中文字|