RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

京東短網(wǎng)址高可用提升最佳實踐

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-09-19 15:09 ? 次閱讀

什么是短網(wǎng)址?

短網(wǎng)址,是在長度上比較短的網(wǎng)址。簡單來說就是幫您把冗長的URL地址縮短成8個字符以內(nèi)的短網(wǎng)址。

當(dāng)我們在騰訊、新浪發(fā)微博時,有時發(fā)很長的網(wǎng)址連接,但由于微博只限制140個字,所以微博就自動把您發(fā)的長網(wǎng)址給轉(zhuǎn)換成短網(wǎng)址了。在微博手機(jī)短信提醒等限制字?jǐn)?shù)的地方來使用短網(wǎng)址,的確是一個不錯的方案。

短網(wǎng)址通常使用“短域名/短碼”的形式,打開短網(wǎng)址網(wǎng)頁會直接跳轉(zhuǎn)到長網(wǎng)址頁面。例:3.cn/CdEyF2、t.cn/RlB2PdD、dwz.cn/134128 等短網(wǎng)址,分別是由以下短網(wǎng)址服務(wù)縮短后的網(wǎng)址 京東短網(wǎng)址:http://s.3.cn/, 新浪短網(wǎng)址:https://sina.lt/ ,百度短網(wǎng)址:http://dwz.cn/。

短網(wǎng)址服務(wù)主要包含功能: 生成短網(wǎng)址(長網(wǎng)址縮短)、二維碼簡化、修改短網(wǎng)址、短網(wǎng)址跳轉(zhuǎn)(訪問短網(wǎng)址跳轉(zhuǎn)到長網(wǎng)址)、喚醒APP、短網(wǎng)址統(tǒng)計 等。

?

短網(wǎng)址能解決什么問題?

長網(wǎng)址存在的問題:

1、長網(wǎng)址的長度太長,下面的長網(wǎng)址,共記312個字符,在微博場景中,限制140字符,已無法發(fā)布出去。在短信場景中,限制70字符,會產(chǎn)生5條短信費用,被拆分后還無法訪問,嚴(yán)重影響用戶體驗。http://wjorder-http.jd.com/scan/np?encodePrcode=2hP_lwNr&encodeShcode=2-S83&businessSource=1&scanSkuType=2&ec=1&salerId=167916&discountsUrl=%2F%2Fcoupon.m.jd.com%2Fcoupons%2Fshow.action%3FlinkKey%3DAAROH_xIpeffAs_-naABEFoePLd7eC4GJgwsPUkFtDqklu805DO1cEqFyTHVT7fbD12AHD7DElAKgh0pfvQpX-E5PbgwLQ&unionId=1001465750?

2、長網(wǎng)址生成的二維碼,極其復(fù)雜 ,導(dǎo)致手機(jī)掃描識別極其困難,低端手機(jī)甚至無法識別,嚴(yán)重影響用戶體驗。

wKgaombrzjaAIFwVAABTJl99DLQ931.png

短網(wǎng)址則完美解決了上述問題:

1、使用短網(wǎng)址服務(wù)縮短上面長網(wǎng)址后的短網(wǎng)址(3.cn/1jK-CDAE),僅有13個字符,在微博、短信等場景中發(fā)送十分容易,而且簡潔清晰,用戶體驗極好。

2、短網(wǎng)址生成的二維碼,極其簡潔 ,非常容易識別,用戶體驗良好。

wKgZombrzjaAVs0iAAAbXNARkeU538.png

?

京東短網(wǎng)址的業(yè)務(wù)場景:

京東短網(wǎng)址http://s.3.cn/,是京東唯一的短網(wǎng)址服務(wù)平臺,已應(yīng)用到京東體系的各個業(yè)務(wù)場景中,日均產(chǎn)生1億條帶有3.cn的短消息,點擊短網(wǎng)址還可直接喚起對應(yīng)的APP和小程序。

如下圖1-2是來自七鮮、金龍魚、京東金融、蒙牛、京東等業(yè)務(wù)的營銷消息,下圖3-4是喚起七鮮小程序、京東APP、金融APP并跳轉(zhuǎn)至落地頁的截圖。

圖1

wKgaombrzjeAbwkqAAFcT9LeSQQ249.png

圖2

wKgZombrzjeAbkADAAJ-u0ZPdmQ357.png

圖3

wKgaombrzjeAaMJDAAV-AEnMiX4356.png

圖4

wKgZombrzjiAIQR9AAK33gK6Pbw529.png

京東短網(wǎng)址服務(wù)的架構(gòu)優(yōu)化:

改造前短網(wǎng)址生成流程圖說明:

1、系統(tǒng)首先查詢長網(wǎng)址(長鏈)是否已存在于redis(jimdb)或hbase中,

2、如果長鏈已存在,則表示該長網(wǎng)址已經(jīng)生成過,可直接返回查到的短網(wǎng)址,流程結(jié)束。

3、如果長鏈不存在,則使用長網(wǎng)址進(jìn)行MD5隨機(jī)算法生成一個長串,并分成3段,轉(zhuǎn)化成62進(jìn)制短碼,拼裝成短網(wǎng)址,然后查詢短網(wǎng)址(短鏈)是否存在于redis或hbase中

4、如果短鏈不存在,則保存長網(wǎng)址到短網(wǎng)址的映射、以及短網(wǎng)址到長網(wǎng)址的映射,到redis或hbase中,返回短網(wǎng)址,流程結(jié)束。

5、如果短鏈已存在,說明隨機(jī)算法生成的短碼發(fā)生了沖突碰撞,需要循環(huán)回到步驟3,加鹽重新生成一個短碼,直到生成的短碼檢測沒有沖突后,走到步驟4結(jié)束。

wKgaombrzjiABO2dAAJirw7Kq18638.png

從原流程圖分析原系統(tǒng)優(yōu)劣勢:

優(yōu)勢:采用隨機(jī)算法,同一長鏈在同一賬號下始終唯一,適用于長網(wǎng)址大量重復(fù)生成的情景,可以在步驟2快速返回,且隨機(jī)算法遍歷難度相對較高。

劣勢:外部操作太多,性能影響較大,每次生成短網(wǎng)址涉及的網(wǎng)絡(luò)請求次數(shù)至少8次(2次查redis、2次寫redis、2次查hbase、2次寫hbase)。

且從上面步驟5可以看出,系統(tǒng)存在一個碰撞循環(huán),隨著短碼數(shù)據(jù)量日益增加,碰撞率也會大大增加,每次碰撞都要額外增加1次redis與1次hbase查詢,導(dǎo)致性能越來越差。

?

分析原流程&歷史數(shù)據(jù),尋找原流程優(yōu)化點:

1、 從原流程可以看出,如果繼續(xù)采用隨機(jī)算法,很難進(jìn)行優(yōu)化,因此,想到了可以采用自增算法,因為自增不存在碰撞,就不需要進(jìn)行雙向檢索存儲,能夠極大的降低外部請求數(shù)。

2、 分析歷史數(shù)據(jù)發(fā)現(xiàn),很少存在長網(wǎng)址被大量重復(fù)生成的情況,也就是說,可以采用自增算法的單向存儲(僅存儲短網(wǎng)址到長網(wǎng)址的映射),并不會增加存儲量,反而會比隨機(jī)算法的雙向存儲(存儲短到長的映射,及長到短的映射,即雙倍存儲)節(jié)省存儲量。

3、 分析歷史數(shù)據(jù)發(fā)現(xiàn),90%超過1個月的短網(wǎng)址都不再有訪問量了,同時調(diào)研業(yè)務(wù)也發(fā)現(xiàn),43%用戶1個月有效期就夠了,46%用戶3個月,10%用戶1年,極少有用戶需要短網(wǎng)址永久有效。

4、 分析歷史數(shù)據(jù)發(fā)現(xiàn),生成的數(shù)據(jù)量很大,日均1億+,且大多數(shù)短網(wǎng)址并不需要永久保存,需要做好清理規(guī)劃

5、 分析歷史數(shù)據(jù)發(fā)現(xiàn),生成量遠(yuǎn)大于跳轉(zhuǎn)量,跳轉(zhuǎn)服務(wù)流程簡單僅做查詢,優(yōu)化空間不大,倒是對生成服務(wù)性能要求極高,優(yōu)化重點在于生成服務(wù)。

?

優(yōu)化后的短碼生成流程說明:

1、 系統(tǒng)直接采用自增算法生成了一個短碼,因為自增算法沒有了隨機(jī)碰撞,也就不需要再檢索短網(wǎng)址是否存在redis或hbase中。

2、 直接保存短網(wǎng)址到長網(wǎng)址的映射到redis中,因為沒有了檢索長網(wǎng)址是否存在于redis或hbase,也就不再需要保存長網(wǎng)址到短網(wǎng)址的映射,也就可以把hbase的寫入改成異步寫入,然后直接返回短網(wǎng)址,流程結(jié)束。(可以看到系統(tǒng)僅剩下1次同步的redis操作,流程極大簡化,可以預(yù)見接口性能將得到極大提升)

wKgZombrzjmAaG-AAAFecREDIR8528.png

自研專利算法介紹

細(xì)心的同學(xué)可能會有疑問,上面的分布式自增算法是怎么實現(xiàn)的呢?

目前市面上已知方案,1、通過數(shù)據(jù)庫自增(并發(fā)QPS數(shù)有限)2、通過redis自增(存在單key熱點問題,也就是所有的發(fā)號請求都會打到同一分片上),兩種方案均會增加性能損耗,且存在擴(kuò)展瓶頸,無法滿足京東的海量業(yè)務(wù)請求。3、雪花算法(長度太長不符合,短網(wǎng)址要求長度一般在7個字符)

因此設(shè)計了下面的專利自增算法:(性能近乎于內(nèi)存,損耗可忽略)

下面介紹一下核心的自增算法原理:主要采用緩存發(fā)號加內(nèi)存自增方式,既無碰撞率又性能極高,主要體現(xiàn)在下圖的三條彩色通道上面。

1、綠色通道:內(nèi)存發(fā)號,速度極快,每次從緩存取出10000個無重復(fù)號碼,然后在內(nèi)存中便可連續(xù)生成10000個短碼,因此速度比傳統(tǒng)基于數(shù)據(jù)庫及緩存自增發(fā)號方式快萬倍。

2、藍(lán)色通道:緩存取號,依賴緩存保證分布式發(fā)號無碰撞,批量發(fā)號,每1萬次內(nèi)存綠色通道才走一次藍(lán)色緩存通道取號,因此性能極高

3、紅色通道:保障機(jī)制,保障生成的號碼都在短網(wǎng)址對應(yīng)長度的號碼總?cè)萘糠秶鷥?nèi),僅在初始化及總?cè)萘坑帽M時執(zhí)行,性能損耗可忽略不計。

wKgaombrzjmAYojuAAHt1ya5JOw141.png

長度&有效期規(guī)劃:

? 有訪問會自動延期N天(7位短碼總?cè)萘?萬億,過期時間30天,每天有1000億短碼可用,30天內(nèi)有1次訪問就會重置30天有效期,也就是說保持“熱數(shù)據(jù)”始終在redis中)

? 連續(xù)N天無訪問自動回收(7位短碼,連續(xù)30天沒有訪問的情況下,才會過期回收,也就是說“冷數(shù)據(jù)”無訪問N天后會自動過期清理回收)

以下統(tǒng)計了最近6天的各短碼長度的使用分布占比情況,目前使用最多的是7位與8位短碼,占比總和近90%。其中43%的用戶選擇了30天有效期,46%的用戶選擇來了100天有效期。

wKgZombrzjmAOdL7AAKoFoGYDtU288.png

?

提效成果:

? 接口性能極大提升:tp999:從150+ms ->7ms,解決了業(yè)務(wù)調(diào)用緩慢及超時的痛點

? 單機(jī)承載量極大提升:單機(jī)QPS:從497->10184,提升了20倍+,無擴(kuò)容支撐了日生成量:從1千萬->2億+

? 按百度短網(wǎng)址費用核算,1年可節(jié)約2700萬元(證明短網(wǎng)址產(chǎn)生價值很大

? redis緩存30天熱數(shù)據(jù),緩存量 1.2TB

? Hbase存儲全量數(shù)據(jù),存儲量 4TB

? 6月18日生成量4.7億、6月日均1億、峰值QPS 7.2萬

? 6月1日跳轉(zhuǎn)量1600萬、6月日均800萬

? 線上僅8臺4核docker(優(yōu)化后日常節(jié)約了760核機(jī)器,618節(jié)約3572核)

? 有訪問自動延期,無訪問自動過期回收,避免了死碼長期占用資源消耗費用,避免短碼越積越多導(dǎo)致的數(shù)據(jù)量太大及性能下降,系統(tǒng)可長期穩(wěn)定運行

創(chuàng)新性:

? 產(chǎn)出技術(shù)發(fā)明 專利1篇,編號:JDZL2019N5022

? 技術(shù)關(guān)鍵點是分布式 無碰撞 高效 短碼生成算法:

? 該算法利用redis的incrby實現(xiàn)分布式號段發(fā)放(5位短碼每次發(fā)放1000個號,當(dāng)然6、7位短碼可設(shè)置更大步長值10000個),利用本機(jī)原子id自增減少redis請求(每10000個id自增后請求1次redis),因為id始終自增所以短碼無碰撞概率(id可以直接轉(zhuǎn)化為62進(jìn)制短碼),避免了因短碼碰撞帶來的循環(huán)生成檢索的性能開銷。利用redis.set原子檢測key不存在時才能設(shè)置成功實現(xiàn)分布式加鎖,解決多線程并發(fā)重置問題,最終實現(xiàn)比傳統(tǒng)自增方案快萬倍的高性能無碰撞短碼自增算法。

? 利用容量規(guī)劃及過期時間機(jī)制(5位短碼總?cè)萘?億,有效期10天,每天有9千萬可用),實現(xiàn)號段循環(huán)重復(fù)利用(10天后第1天的號段過期,可以再次使用)(當(dāng)然如果是6位短碼、總?cè)萘坑?50億,有效期也可以更長。7位短碼總?cè)萘?萬億,基本可以不用過期了),保障了系統(tǒng)的長期穩(wěn)定運行。

?

影響力:

? 培訓(xùn)分享 《3.cn最佳實踐》,ppt地址

wKgaombrzjqAVZJnAAAz4Guh2L4970.png

? 宙斯平臺-京麥服務(wù)市場中上架,有470+京東商戶應(yīng)用使用。3.cn/1-jMkHBf?

? 3.cn作為京東唯一的短網(wǎng)址服務(wù)平臺,合作的應(yīng)用50+(京東APP、京東金融、京東云、京東保險、七鮮、京東健康、京東物流等等)、小程序20+、合作的二級部門80+

wKgaombrzjuAZGhEAAW2cwejnFk018.png

京東短網(wǎng)址官網(wǎng)簡介:

打開瀏覽器輸入短網(wǎng)址s.3.cn,進(jìn)入網(wǎng)站,使用erp登陸。

在輸入框輸入長網(wǎng)址,點擊“生成”按鈕,即可生成短網(wǎng)址及二維碼,如下圖1。

點擊“分析數(shù)據(jù)”可以查看該短網(wǎng)址被用戶打開次數(shù)的統(tǒng)計趨勢圖、訪問的IP數(shù)趨勢圖、網(wǎng)絡(luò)運營商占比、訪問地區(qū)占比等統(tǒng)計,如下圖2。

圖1

wKgZombrzjyAWxVNAAH_HBEhJq0346.png

圖2

wKgaombrzjyAV18YAAfijFDb9So484.png

?


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4607

    瀏覽量

    92826
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3794

    瀏覽量

    64358
  • 京東
    +關(guān)注

    關(guān)注

    2

    文章

    998

    瀏覽量

    48473
收藏 人收藏

    評論

    相關(guān)推薦

    C編程最佳實踐.doc

    C編程最佳實踐.doc
    發(fā)表于 08-17 14:37

    德地圖基于阿里云MaxCompute的最佳實踐

    一批提供地圖API互聯(lián)網(wǎng)服務(wù)商德的高級運維專家曾偉,從運維的角度分享了德上云的背后故事和帶來的好處、云上架構(gòu)、運維核心價值的變化等,最終實現(xiàn)了應(yīng)用服務(wù)可用性上升到99.99%,同比提升
    發(fā)表于 02-27 12:37

    Dockerfile的最佳實踐

    ”微服務(wù)一條龍“最佳指南-“最佳實踐”篇:Dockerfile
    發(fā)表于 07-11 16:22

    變量聲明最佳實踐?

    所以我們開始編寫32位和16位代碼,并過渡到MPLAB X和XC編譯器。我想到的一個主題是聲明變量的最佳實踐。常規(guī)IpType。h或類型。h pr STDIN?;騃t8或字節(jié)char等任何想法,走哪條路?
    發(fā)表于 09-30 12:01

    虛幻引擎的紋理最佳實踐

    紋理是游戲不可或缺的一部分。 這是一個藝術(shù)家可以直接控制的領(lǐng)域,以提高游戲的性能。 本最佳實踐指南介紹了幾種紋理優(yōu)化,這些優(yōu)化可以幫助您的游戲運行得更流暢、看起來更好。 最佳實踐系列指
    發(fā)表于 08-28 06:39

    短網(wǎng)的連接方式電氣圖

    短網(wǎng)的連接方式電氣圖
    發(fā)表于 03-25 23:01 ?854次閱讀
    <b class='flag-5'>短網(wǎng)</b>的連接方式電氣圖

    MySql5.6性能優(yōu)化最佳實踐

    MySql5.6性能優(yōu)化最佳實踐
    發(fā)表于 09-08 08:47 ?13次下載
    MySql5.6性能優(yōu)化<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    DevOps最佳實踐

      遵循上述最佳實踐,組織可以開發(fā)和自動化其解決方案的交付過程,以有效地實現(xiàn)其業(yè)務(wù)目標(biāo)。
    的頭像 發(fā)表于 08-15 14:41 ?946次閱讀

    圖像傳感器處理和最佳實踐

    圖像傳感器處理和最佳實踐
    發(fā)表于 11-15 20:30 ?0次下載
    圖像傳感器處理和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    安全軟件開發(fā)的最佳實踐

    安全的軟件開發(fā)最佳實踐是必要的,因為安全風(fēng)險無處不在。在網(wǎng)絡(luò)攻擊盛行的時代,它們可以影響每個人,包括個人、公司和政府。因此,確保軟件開發(fā)的安全性至關(guān)重要。 在這里,我們將解釋了什么是安全軟件,如何確保軟件的安全性,并提供 安全軟件開發(fā)的
    的頭像 發(fā)表于 05-08 10:51 ?817次閱讀
    安全軟件開發(fā)的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    SAN管理最佳實踐指南

    電子發(fā)燒友網(wǎng)站提供《SAN管理最佳實踐指南.pdf》資料免費下載
    發(fā)表于 08-29 09:20 ?0次下載
    SAN管理<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>指南

    SAN設(shè)計和最佳實踐指南

    電子發(fā)燒友網(wǎng)站提供《SAN設(shè)計和最佳實踐指南.pdf》資料免費下載
    發(fā)表于 09-01 11:02 ?0次下載
    SAN設(shè)計和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>指南

    Windows 10遷移的最佳實踐

    電子發(fā)燒友網(wǎng)站提供《Windows 10遷移的最佳實踐.pdf》資料免費下載
    發(fā)表于 09-07 15:37 ?0次下載
    Windows 10遷移的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    華為云 FunctionGraph 構(gòu)建可用系統(tǒng)的實踐

    每年,網(wǎng)上都會報道 XXX 系統(tǒng)異常不可用,給客戶帶來巨大的經(jīng)濟(jì)損失。云服務(wù)的客戶基數(shù)更大,一旦出現(xiàn)問題,都將給客戶和服務(wù)自身帶來極大影響。本文將基于華為云 FunctionGraph 自身的實踐
    的頭像 發(fā)表于 05-09 23:14 ?458次閱讀
    華為云 FunctionGraph 構(gòu)建<b class='flag-5'>高</b><b class='flag-5'>可用</b>系統(tǒng)的<b class='flag-5'>實踐</b>

    RTOS開發(fā)最佳實踐

    基于RTOS編寫應(yīng)用程序時,有一些要注意事項。在本節(jié)中,您將學(xué)習(xí)RTOS開發(fā)最佳實踐,例如POSIX合規(guī)性、安全性和功能安全認(rèn)證。
    的頭像 發(fā)表于 08-20 11:24 ?447次閱讀
    RM新时代网站-首页