999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

短地址服務(wù)開發(fā)關(guān)鍵問題與解決方案

2014-04-29 00:00:00李勇
職業(yè)·中旬 2014年6期

摘#8195;要:本文介紹將資源地址轉(zhuǎn)換成6位不重復(fù)的短地址,在高并發(fā)情況下的海量數(shù)據(jù)存儲及高速讀寫的實現(xiàn)方案。

關(guān)鍵詞:二維碼#8195;短地址#8195;實現(xiàn)方案

一、背景分析

二維碼的出現(xiàn)使資源傳輸由原來的USB拷貝轉(zhuǎn)變?yōu)槎S碼掃描訪問或下載。為下載資源提供短地址服務(wù),需將短地址生成二維碼。資源數(shù)據(jù)量預(yù)計可達10億級別,日新增數(shù)據(jù)1000萬左右,每秒并發(fā)訪問數(shù)預(yù)計2000個連接,響應(yīng)時間在0.1秒以內(nèi)。

二、基本原理

1.將原始地址轉(zhuǎn)換為短地址

2.將短地址轉(zhuǎn)換為原始地址

3.關(guān)鍵問題

將原始地址轉(zhuǎn)換為不重復(fù)的6位地址標(biāo)志,海量數(shù)據(jù)的高并發(fā)讀寫。

三、項目實現(xiàn)

1.地址實現(xiàn)方案

實現(xiàn)短地址服務(wù),首先要將海量的鏈接數(shù)據(jù)轉(zhuǎn)化為不重復(fù)的6位字符。

(1)哈希算法。哈希算法相對簡單,具體算法如下:

①將原地址md5轉(zhuǎn)換成32位哈希碼,分為4段,每段8字節(jié)。

②對這四段地址進行循環(huán)處理,取8個字節(jié),將其看成16進制串與0x3fffffff(30位1)與操作,即超過30位的忽略處理。

③將30位生成6段,每5位數(shù)字作為字母表在索引取得特定字符,依次進行獲取6位字符串。

④總的md5串可以獲得4個6位串,取任意一個就可作為這個長url的短url地址。

這種方法實現(xiàn)起來簡單,但是有較高的重復(fù)度。

(2)62位字符表示。把數(shù)字和字符組合成一定的映射,就可以產(chǎn)生唯一的字符串,再利用洗牌算法,把原字符串打亂后保存,對應(yīng)位置的組合字符串就會是無序的組合。

2.大數(shù)據(jù)存儲解決方案

在本項目中,主要存儲數(shù)據(jù)有資源下載地址及引用頁地址,預(yù)估資源下載地址長度為150個字符,引用頁地址長度為50字符,兩者存起來共200字符,再加上數(shù)據(jù)庫自身結(jié)構(gòu)占用的空間及其他信息,如時間、ID等,存儲一條數(shù)據(jù)最少需要250個字節(jié)。從當(dāng)前訪問量來看,預(yù)計數(shù)據(jù)將達到10億條。

總數(shù)據(jù)量=250 * 10^9 /(1024*1024*1024)= 230G

當(dāng)前采用的是mysql架構(gòu), 10億條數(shù)據(jù)遠遠超過了其處理能力。因此要對數(shù)據(jù)庫進行分庫分表,將表大小限定為10萬條數(shù)據(jù),每個數(shù)據(jù)庫1000張表,數(shù)據(jù)庫隨著數(shù)據(jù)的增長而擴展,表中的ID進行自增長,通過數(shù)據(jù)庫ID、表ID、數(shù)據(jù)ID三者就可以唯一確定條數(shù)據(jù),將這個值轉(zhuǎn)換成62進制就得出了唯一的短鏈接地址。

合成ID算法代碼:

($database_id*self::database_tables*self::table_rows)+$row_id+ ($table_id*self::table_rows);

每個數(shù)據(jù)庫將存儲1000*100000=1億條數(shù)據(jù),數(shù)據(jù)將分布在10臺機器上,10臺機器將分解高峰階段的每秒2000個并發(fā)讀寫操作。這種算法在初期可能會對單臺機器造成過載,可采用逐步加壓的方式,當(dāng)數(shù)據(jù)庫服務(wù)器增多后可全部開放。

3.高并發(fā)解決方案

應(yīng)對每秒2000次的并發(fā)訪問需要服務(wù)器具有快速的讀寫及負(fù)載均衡能力,主要需要解決兩方面的問題:用戶在創(chuàng)建短地址時,需確認(rèn)該資源沒有創(chuàng)建過;當(dāng)用戶在訪問一個短地址時,服務(wù)器需快速響應(yīng)。從數(shù)據(jù)庫直接讀取無法滿足速度需求,同時會造成服務(wù)器過載導(dǎo)致系統(tǒng)崩潰。因此,需要將資源url放到內(nèi)存中,使用內(nèi)快進行快速讀取。

4.關(guān)鍵問題解決方式

(1)問題一解決方案。由于數(shù)據(jù)是先有ID后有短地址,無法通過資源地址反查到短地址,因此,需要使用一個內(nèi)存映射,將資源與短地址(數(shù)據(jù)ID)聯(lián)系起來。

操作流程:原始地址→16字節(jié)長度的原始二進制md5→從redis中查找是否存在數(shù)據(jù)ID→從內(nèi)存緩存或數(shù)據(jù)庫中取出數(shù)據(jù)→判斷數(shù)據(jù)庫中的地址是否與原地址相同→不同則插入數(shù)據(jù)庫中,建立16字節(jié)長度原始二進制md5與數(shù)據(jù)ID建立聯(lián)系存入redis中。

(2)問題二解決方案。將熱數(shù)據(jù)放入緩存中,減輕數(shù)據(jù)庫負(fù)載,限制一天過期時間,可以防止內(nèi)存使用過大。

操作流程:短地址→查找內(nèi)存→未找到將短址轉(zhuǎn)為ID→從數(shù)據(jù)庫中查找→存入緩存→返回數(shù)據(jù)。

四、小結(jié)

短地址服務(wù)是一個比較復(fù)雜的項目,生成短6位短碼是關(guān)鍵點,采用數(shù)據(jù)ID遞增進行62位轉(zhuǎn)換的方式,可簡單有效地實現(xiàn)需求。

(作者單位:廣東省高級技工學(xué)校 )

主站蜘蛛池模板: 国产主播在线一区| 欧美成人区| 成人夜夜嗨| 久久99这里精品8国产| 日本精品中文字幕在线不卡| 午夜视频在线观看免费网站| 97在线碰| 日本午夜精品一本在线观看| 99视频精品全国免费品| 欧美日本在线| 成年人福利视频| 小说区 亚洲 自拍 另类| 婷婷久久综合九色综合88| 无码高潮喷水在线观看| 伊在人亞洲香蕉精品區| 国产欧美精品一区aⅴ影院| 欧美一级在线播放| 国产福利一区视频| 亚洲人妖在线| 91精品伊人久久大香线蕉| 亚洲91精品视频| 国产第一页屁屁影院| 亚洲欧美日韩成人高清在线一区| 毛片免费视频| 欧美日韩精品一区二区在线线| 久久精品电影| 亚洲第一区欧美国产综合| 中文纯内无码H| 在线亚洲精品自拍| 国产精品一区二区国产主播| 一级香蕉人体视频| 亚洲有码在线播放| 国产激情第一页| 久久夜夜视频| 99re66精品视频在线观看| 欧美不卡二区| 欧美日本激情| 青草视频免费在线观看| 中文一区二区视频| 五月天天天色| 一本色道久久88综合日韩精品| 成人午夜在线播放| 九一九色国产| 中文字幕乱码中文乱码51精品| 国产成人精品在线| 一本色道久久88综合日韩精品| 国产精品三区四区| 一级毛片免费播放视频| 手机在线免费毛片| 青青草原国产免费av观看| 日韩高清一区 | 久久黄色一级视频| 国产成a人片在线播放| AV无码无在线观看免费| 国产亚洲高清在线精品99| 久久国产乱子伦视频无卡顿| 国模视频一区二区| 亚洲国产成人超福利久久精品| 久久婷婷色综合老司机| 欧美国产在线精品17p| 尤物特级无码毛片免费| 日本一区中文字幕最新在线| 亚洲日本中文综合在线| 一级毛片在线直接观看| 色噜噜狠狠狠综合曰曰曰| 日本午夜在线视频| 久久一级电影| 国产AV无码专区亚洲精品网站| 国产女人水多毛片18| 色噜噜综合网| 国产交换配偶在线视频| 亚洲国产欧美自拍| 无码中文字幕乱码免费2| 国产亚洲精久久久久久无码AV| 亚洲综合在线最大成人| 久久6免费视频| 久久精品一卡日本电影| 亚洲最大情网站在线观看| 亚洲人成电影在线播放| 国产成人综合日韩精品无码首页| 免费无码又爽又黄又刺激网站 | 午夜成人在线视频|