URL短網址系統的演算法設計及實踐
在通常情況下,URL是由系統生成的,通常包括URI路徑,多個查詢引數,可以對引數進行加密和解密。當人們要分享某個URL,比如簡訊,郵件,社交媒體,這就需要短URL。
而短網址,顧名思義就是在長度上比較短的網址。簡單來說就是幫您把冗長的URL地址縮短成8個字元以內的短網址。
你有沒有遇到過簡訊字元過長本來一條資訊搞定的事情需要發兩條?你有沒有遇到過填報系統裡填寫網址卻因為字元限制無法完整提交?你有沒有遇到過排版好的內容由於連結過長而完全打亂了美感?
這時候,你就需要用到短網址生成工具了。
如開發者社群的某個連結:https://developer.jdcloud.com/article/894?mid=14 變成短網址後:w.3.cn/1000000xZ
我們可以看到,原URL從50多個字元,縮短為了10多個字元,跳轉地址不會改變的同時,還能進行後臺連結地址的資料追蹤。非常便於訊息通知、廣告推廣等場景中使用。
短網址是如何形成的?
通常情況下短網址的生成流程,分以下2條路徑:
-
從快取中查詢長網址是否已經生成過短網址,如果已經生成過,則直接返回快取中的短網址,因為同一個長網址始終對應同一個短網址。
-
從快取中查詢長網址是否已經生成過短網址,如果沒有生成過,則使用演算法生成一個短網址,然後儲存短網址與長網址的關係,並判斷是否碰撞,本案因採用了無碰撞遞增演算法,可直接返回短網址。
注意
:此處市面上大多產品採用隨機演算法,存在很大的碰撞機率,如果快取中已經存在了該短網址,就會重新生成,當併發極高的情況,碰撞率(新生成的短碼在快取中已存在,需要再次重新生的機率)也大大升高,就會形成一個死迴圈,
如上圖藍色部分,極大的降低了效能。
分散式無碰撞短碼生成演算法
短如果你經常使用短網址就會發現,市面介面生成效能普遍較差,同時生成大量短鏈時,可能會超時或失敗。這是因為市面大多的演算法是隨機演算法,碰撞率比較高,還有部分資料庫自增演算法,雖然無碰撞,但是過度依賴資料庫導致效能比較差。
而另外一種常遇到的情況是,生成的短鏈時不時的會出現出現短連線失效或連結內容無法追蹤的情況。這是因為短鏈過期了,而我們的短網址只要在過期時間內有訪問就會不斷延期,達到有訪問的連線永久有效,無訪問的連線自動過期回收的效果。
那麼怎樣才能避免上述情況的出現呢?
我們透過採用快取加記憶體的發號方式去對連結進行處理,實現了短鏈無碰撞且高效能的
分散式無碰撞短碼生成服務。
分散式無碰撞短碼生成演算法
主要透過記憶體發號、快取取號、保障機制三個主要環節來進行實現。
-
綠色通道 :記憶體發號,速度極快,每次從快取取出10000個無重複號碼,然後在記憶體中便可連續生成10000個短碼,因此速度比傳統基於資料庫及快取自增發號方式快萬倍。
-
藍色通道 :快取取號,依賴快取保證分散式發號無碰撞,批次發號,每一萬次記憶體綠色通道才走一次藍色快取通道,因此效能極高
-
紅色通道 :保障機制,保障生成的號碼都在短網址對應長度的號碼總容量範圍內,僅在初始化及總容量用盡時執行,效能損耗可忽略不計。
透過該演算法生成的短鏈主要有以下特點:
1、有訪問自動延期,無訪問自動過期回收,可根據業務需要自行選擇有效期,減少死碼長期佔用資源消耗費用,避免短碼越積越多導致的碰撞率升高及效能下降
2、自研專利演算法、無碰撞率、只依賴快取不依賴資料庫,效率超高超穩定
3、使用者自定義域名、體現自有品牌價值、成本低廉、接入簡單
實用操作指南
短網址服務目前在京東主要應用於:訂單訊息通知、物流通知、促銷簡訊、二維碼分享 等任何有字數限制的使用場景。
微博、Twitter、訊息推送、簡訊等都有單條傳送字數的限制,以簡訊為例,單條傳送限制70個字元。如果包含一個長網址(假設50個字元),則要傳遞的有效資訊就只有20個字元,很容易表達不清,或超出70個字元產生2條簡訊費用。
以我們一開始生成的連結為例:
短網址中分為域名host和短碼部分,w.3.cn/1000000xZ中,w.3.cn為域名,1000000xZ為短碼,短碼長度可根據需求進行調整,對應不同的最大有效期。
最大有效期為當前長度下有效期可配置的最長時間,失效後將無法再使用,服務支援有訪問時自動續期,需要傳入有效期引數0,將自動配置為最大有效期同時有訪問自動更新當前有效期為最大時間。
使用短網址服務可以把一個長網址縮短成短網址(假設20個字元),則要傳遞的有效資訊就可以增長到50個字元,即能傳遞更多的有效資訊,又能節省大量簡訊費用。因此,如何將長網址縮到最短,並且在高併發場景下保持高效率,至關重要。
你問我短碼生成難不難?
來!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2676298/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何設計短網址系統?
- url.cn短網址 url.cn短網址網址縮短教程
- url.cn短網址 騰訊url.cn短網址生成介面
- URL短網址線上生成工具
- 騰訊短網址(url.cn短網址) 2020最新騰訊短網址生成api介面推薦API
- 短址(short URL)原理及其實現
- 騰訊短網址(url.cn)新浪短網址(t.cn)的API介面分享API
- 微信短網址 微信短網址(url.cn)線上生成介面
- 系統設計實踐(01) - 短鏈服務
- W外鏈 短網址系統API 原始碼,網址縮短API介面API原始碼
- 京東短網址高可用提升最佳實踐
- 微信url短網址線上生成 最新微信短網址生成平臺推薦
- 最新最穩定的騰訊短網址(URL短連結)API介面分享API
- 短連結系統的設計與實現
- 各種系統參考設計網址 比如ERP
- 網址(URL)的詳細解析
- 推薦幾個最新的騰訊URL短網址以及新浪TCN短連線的API介面API
- 網址縮短 短網址連結縮短生成器的試用推薦
- 基於Redis作為發號器生成短網址Python實踐RedisPython
- W外鏈短網址生成,他們家的短網址免費的嗎?
- Python程式設計:URL網址連結中的中文編碼與解碼Python程式設計
- 短視訊 SDK 架構設計實踐架構
- 短網址安全淺談
- 58同城敏捷BI系統的設計與實踐敏捷
- T.CN短網址 新浪T.CN短網址生成工具推薦
- 騰訊短連結url生成介面/騰訊短網址線上生成/新浪微博短連結生成器的分享
- 京東短網址高可用提升最佳實踐 | 京東雲技術團隊
- mongodb短網址專案02具體實現MongoDB
- http://t.cn短網址 新浪t.cn短網址是如何申請開通的HTTP
- App Store 隱私政策網址(URL)APP
- 安全防護系統構設計與實踐
- 貝殼_程式設計實踐_銀行系統程式設計
- 圖片管理系統:原理、設計與實踐
- 實現長連結轉化成短連結(新浪T.CN短連結以及騰訊URL.cn短網址)API介面程式碼分享API
- Tekton 設計簡介 及 實踐
- 2024年好用的短連結短網址工具推薦
- 網址多語言設計
- win10系統設定中遮蔽某個網址怎麼操作 win10系統如何設定遮蔽某個網址Win10