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

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

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

瀏覽:19日期: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久久,三上悠亚国产精品一区二区三区
欧美国产先锋| 一区二区三区四区日本视频| 综合激情网站| 福利一区和二区| 日日夜夜免费精品视频| 蜜臀av一区二区三区| 亚洲女同中文字幕| 尹人成人综合网| 美女精品网站| 日韩在线成人| 国产美女精品视频免费播放软件| 久久99视频| 精品成人免费一区二区在线播放| 99久久婷婷| 亚洲精品午夜av福利久久蜜桃| 伊人久久婷婷| 日韩高清二区| 久久成人高清| 五月激情久久| 亚洲精华国产欧美| 亚州精品视频| 久久这里只有精品一区二区| 日韩免费看片| 蜜桃视频免费观看一区| 国产精品一级在线观看| 日本在线高清| 国产精品普通话对白| 久久国产免费看| 高清一区二区| 91精品一区二区三区综合| 国产亚洲精品久久久久婷婷瑜伽| 午夜视频精品| 日韩三级精品| 国产精品黄网站| 久久狠狠婷婷| 伊人精品久久| 卡一卡二国产精品| 五月天久久777| 日本a口亚洲| 国产h片在线观看| 国产精品日本欧美一区二区三区| 日本少妇一区二区| 成人精品亚洲| 日本免费在线视频不卡一不卡二| 国产成人精品福利| 久久美女精品| 日韩av网站在线免费观看| 麻豆网站免费在线观看| 视频一区二区不卡| 开心激情综合| 怡红院精品视频在线观看极品| 国产亚洲精aa在线看| 精品在线91| 麻豆成人av在线| 99国产精品99久久久久久粉嫩| 国产精品综合| 亚洲激情久久| 久久久国产精品网站| 丝袜美腿亚洲一区| 国内在线观看一区二区三区| 午夜久久免费观看| 国产精品久久久久久av公交车 | 日韩综合一区二区| 天堂√8在线中文| 四虎精品一区二区免费| 欧美freesex黑人又粗又大| 奇米狠狠一区二区三区| 免费视频一区三区| 久久精品国产免费| 亚洲专区视频| 欧洲在线一区| 国产精品成人自拍| 免费久久99精品国产自在现线| 国产精品一线天粉嫩av| 国产日韩专区| 成人亚洲欧美| 国产精品色婷婷在线观看| 免费观看在线综合| 久久一区二区三区电影| 国产一区二区三区天码| 日韩精品亚洲一区二区三区免费| 欧美天堂亚洲电影院在线观看| 91欧美日韩| 国产精品porn| 日韩精品乱码av一区二区| 成人看片网站| 精品国产美女a久久9999| 国产亚洲欧美日韩精品一区二区三区 | 免费日韩一区二区| 高清av不卡| 热久久久久久| 美国三级日本三级久久99 | 精品不卡一区| 免费在线亚洲欧美| 久久精品 人人爱| 亚洲人成高清| 视频在线观看国产精品| 伊人久久大香线蕉av不卡| 日本一区二区免费高清| 久久亚洲黄色| 欧美激情一区| 久久99久久人婷婷精品综合| 欧美日韩夜夜| 国产日韩在线观看视频| 国产三级一区| 国产精品探花在线观看| 国产欧美三级| 国产日本亚洲| 国产日韩欧美一区| 国产欧美大片| 国产精品久久久久9999高清| 国产伦精品一区二区三区千人斩| 蜜臀久久久99精品久久久久久| 自拍日韩欧美| 日韩午夜av在线| 伊人久久亚洲美女图片| 蘑菇福利视频一区播放| 免费日韩av| 亚洲涩涩av| 日本欧美一区二区在线观看| 日本天堂一区| 国产精品久久国产愉拍| 国产精品三级| 欧美国产中文高清| 麻豆久久一区| 国产精品国产一区| 日韩在线精品| 桃色一区二区| 欧美福利专区| 香蕉精品999视频一区二区| 丝袜美腿亚洲一区二区图片| 亚洲精品日本| 欧美片网站免费| 国产精品毛片久久久| 国产精品欧美在线观看| 麻豆国产91在线播放| 91亚洲国产| 久久亚洲精品中文字幕蜜潮电影| 欧洲激情综合| 亚洲香蕉视频| 国产精品一在线观看| 精品网站999| 日本蜜桃在线观看视频| 欧美色图一区| 亚欧成人精品| 久久精品二区亚洲w码| 午夜精品久久久久久久久久蜜桃| 女人天堂亚洲aⅴ在线观看| 亚洲精品韩国| 麻豆免费精品视频| 群体交乱之放荡娇妻一区二区| 午夜av一区| 日本中文字幕一区二区视频| 国产精品www994| 福利一区视频| 亚洲欧美日本国产专区一区| 欧美视频精品全部免费观看| 精品国产一区二| 蜜桃精品在线| 亚洲精品免费观看| 加勒比视频一区| 夜夜嗨网站十八久久| 国产一区 二区| 韩国精品主播一区二区在线观看| 亚洲一区二区三区免费在线观看| 日韩精品91亚洲二区在线观看| 精品国产乱码久久久| 欧美日韩视频一区二区三区| 欧美在线黄色| 精品三级久久| 亚洲色图国产| 91亚洲国产| 免费在线欧美视频| 美女精品一区二区| 国产亚洲在线观看| 精品三区视频| 国产偷自视频区视频一区二区| 国产精品男女| 黄色在线一区| 国产一区二区三区不卡视频网站| 99热免费精品| 精品国产乱码久久久| 丝袜美腿一区二区三区| 精品国产乱码| 免费高清在线一区| 亚洲午夜天堂| 97精品久久| 日韩精品首页| 91亚洲精品视频在线观看| 欧美性感美女一区二区| 国产麻豆一区二区三区| 尤物精品在线| 精品国产中文字幕第一页| 免费看的黄色欧美网站| 黄色网一区二区| 日本电影久久久| 夜久久久久久| 日韩欧美国产精品综合嫩v| 国产日产高清欧美一区二区三区| 影音国产精品|