彙報一下,閒魚的ipv6改造之路

閒魚技術發表於2020-06-24

背景
ipv6作為改進ipv4的下一代ip技術,其目的是為了解決ipv4地址枯竭的問題,同時在網路資料轉發效率與安全性方面有很多改進。其第一版協議標準(RFC1883)早在1995年就已釋出,但是由於現存ipv4網路升級成本較高以及ipv4自身的改進等種種原因直到最近幾年ipv6才開始在全球範圍內大規模應用。
在我國從2018年5月工信部通知貫徹兩辦檔案開始,三大運營商迅速完成移動端IPv6改造,並急速拉昇使用者量。閒魚作為阿里巴巴旗下全球最大的閒置交易社群,為響應國家政策同時迎接未來技術的變革,開啟了基於ipv6的技術改造。
ipv6應用架構分析
要讓閒魚app支援ipv6網路,勢必需要理清現在完整的網路應用架構;由於阿里龐大複雜的技術體系,實際上可能很多同學也不太清楚我們的網路應用架構到底是什麼樣的,在此藉此機會梳理了閒魚完整的app網路應用架構:
閒魚app網路應用架構
彙報一下,閒魚的ipv6改造之路
圖1
如上圖所示,端上發起一次請求後:

  1. 首先請求dns的服務解析域名地址。

  2. 對於圖片、js等靜態資源直接請求cdn服務獲取。

  3. 對於業務介面透過https請求到LVS負載服務,然後轉到aserver(類似ngnix的http代理伺服器),再透過mtop將http請求轉換成rpc呼叫到達後臺服務。

ipv6解決方案
閒魚的ipv6改造是基於阿里集團的ipv6架構實施的,有了上圖的網路應用架構後,ipv6的解決方案看起來就很清晰了:
彙報一下,閒魚的ipv6改造之路
圖2
請求流程:app--->VIP(NAT轉換 TOC傳遞CIP)--->aserver(CIP打包裝入Http header)-->mtop服務。
目前的方案是在LVS層透過阿里自研的技術將IPV6透過NAT技術轉換成IPV4,然後將client ipv6資訊透過http header傳入下游服務,減少後端改造工作量;後續應用完全上雲後是端到端的ipv6/4雙棧支援。
改造原則
網路屬於基礎設施,改造過程中需要非常小心,否則容易引發大故障。在改造過程中我們總結了以下原則供參考:

  • 一定要可測試、可灰度、可實時監控診斷分析、可隨時回退。

  • 必須能支援ipv4/ipv6雙棧環境,確保ipv6即使出現問題也不影響使用者。

  • 改造過程先小模組再全業務;先分支業務再核心業務。

  • 先android再ios;android上架靈活。

  • 上線過程中,先開啟主業務服務域名放量,提升ipv6月活使用者量,再開啟cdn域名放量提升ipv6流量佔比。

  • 主要做移動端改造,PC端流量很小,優先順序較低。

改造上線步驟
整體改造步驟
彙報一下,閒魚的ipv6改造之路
圖3

  1. 調研app端上修改點與後臺服務修改點。

  2. app與後臺服務基於ipv6改造升級。

  3. 支援ipv6的內側app,測試版本app進行內部灰度。

  4. 支援ipv6的正式app,整合後線上開始灰度,並逐漸放量釋出。

  5. 服務域名ipv6放量:主服務域名透過amdc控制使用者ipv6的比例,逐步在各省市放量。

  6. cdn域名ipv6放量:靜態頁面、圖片、影片,透過amdc精細化控制逐步在各省市放量。

具體改造點

  • 首先需要確保app整合的網路sdk庫是支援ipv6的,如果不支援,需要升級sdk網路庫或者應用自行開發。閒魚使用的集團提供sdk網路庫,升級到最新版本就支援ipv6環境了。

  • 前端頁面中使用到ip地址的邏輯需要支援ipv6格式。

  • 後端業務邏輯中使用ip地址作為引數和資料庫儲存地方需要修改支援ipv6地址。

  • 使用ip地址呼叫獲取LBS的服務需要支援ipv6地址庫。

  • 使用者畫像、搜尋、推薦使用到了使用者ip的地方支援ipv6地址格式。

測試方法
1. 需要確保本地ip是雙棧環境。以WiFi網路為例:
彙報一下,閒魚的ipv6改造之路
圖4
2. app端透過專用測試工具測試ipv6網路連線,比如提供的app網路測試工具。裡面會有詳細的ipv4/6網路連結與流量統計資訊。
3. 使用web工具透過瀏覽器直接訪問指定域名,統計ipv6訪問的詳細資訊。
4. 記錄日誌檢視ip相關資訊。
上線策略與監控
灰度上線
灰度上線包含以下三個部分:
支援ipv6 app上線:ipv6改造測試完成後,首先使用獨立的app版本開始灰度釋出,在這個過程中開啟所有域名的ipv6策略,觀察一段時間看是否執行穩定。灰度完成後,再將支援ipv6版本的特性合入主版本開始釋出。
前端、服務端改造釋出。
ipv6域名上線:透過amdc控制各個域名的放量比例,可以控制的維度包含:域名名稱、appkey、省市地區、運營商。
對閒魚來說主要的幾個域名如下:

  • app主服務域名:acs.m.taobao.com,請求後臺業務的主要域名。

  • 前端資源域名:g.alicdn.com ,獲取js和css的資源,走cdn網路。

  • 圖片域名:heic.alicdn.com 獲取圖片的資源,走cdn網路。

  • 影片域名:xianyu-video.alicdn.com 獲取影片檔案,走cdn網路。

  • pc端域名:2.taobao.com。

在放量過程中一般是針對某個域名逐步進行放量,針對指定域名開啟某些省份各個運營商的ipv6功能,開啟時候按照百分比控制;開啟ipv6功能後,後如果使用者處在雙棧網路環境(同時支援ipv4與ipv6),那麼優先走ipv6的網路,如果使用者當前只有ipv4 only環境,app自動切換到ipv4網路。
一個具體放量配置如下:
彙報一下,閒魚的ipv6改造之路
圖5

ipv6監控

我們使用集團提供的一些工具監控以下資訊:

  • ipv6 cdn的網路質量。

  • ipv6 cdn流量佔比。

  • 介面請求時延、超時率、錯誤率。

  • 使用ipv6網路的使用者dau、mau統計資訊。

效果與展望
自去年底閒魚app支援ipv6上線以來,逐步開啟了各個省市的放量,目前ipv6的日活使用者佔比達到了55%左右。業務執行穩定,未來我們會進一步開啟相關域名的ipv6能力,提升ipv6使用者的日活佔比與流量佔比。ipv6技術具有更高的網路報文轉發效率與更強的安全性,隨著集團ipv6技術的持續增強,相信未來我們可以給使用者提供更好的使用體驗。


閒魚技術團隊不僅是阿里巴巴集團旗下閒置交易社群的創造者,更是移動與高併發大資料應用新技術的引導者與創新者。我們與Google Flutter/Dart小組密切合作,為社群貢獻了多個高star的專案和大量PR。我們正在積極探索深度學習和視覺技術在互動、交易、社群場景的創新應用。閒魚技術與集團中介軟體團隊共同打造的FaaS平臺每天支援數以千萬級使用者的高併發訪問場景。 


就是現在!客戶端/服務端java/架構/前端/質量工程師面向社會+校園招聘,base杭州阿里巴巴西溪園區,一起做有創想空間的社群產品、做深度頂級的開源專案,一起擴充技術邊界成就極致!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900359/viewspace-2700365/,如需轉載,請註明出處,否則將追究法律責任。

相關文章