天天看點

彙報一下,閑魚的ipv6改造之路1、背景2、IPV6應用架構分析3、改造原則4、改造上線步驟5、上線政策與監控6、效果與展望

作者:閑魚技術-靖楊

1、背景

ipv6作為改進ipv4的下一代ip技術,其目的是為了解決ipv4位址枯竭的問題,同時在網絡資料轉發效率與安全性方面有很多改進。其第一版協定标準(RFC1883)早在1995年就已釋出,但是由于現存ipv4網絡更新成本較高以及ipv4自身的改進等種種原因直到最近幾年ipv6才開始在全球範圍内大規模應用。<br />      在我國從2018年5月工信部通知貫徹兩辦檔案開始,三大營運商迅速完成移動端IPv6改造,并急速拉升使用者量。閑魚作為阿裡巴巴旗下全球最大的閑置交易社群,為響應國家政策同時迎接未來技術的變革,開啟了基于ipv6的技術改造。           

2、IPV6應用架構分析

要讓閑魚app支援ipv6網絡,勢必需要理清現在完整的網絡應用架構;由于阿裡龐大複雜的技術體系,實際上可能很多同學也不太清楚我們的網絡應用架構到底是什麼樣的,在此借此機會梳理了閑魚完整的app網絡應用架構:

閑魚app網絡應用架構

彙報一下,閑魚的ipv6改造之路1、背景2、IPV6應用架構分析3、改造原則4、改造上線步驟5、上線政策與監控6、效果與展望

圖1

如上圖所示,端上發起一次請求後:

  1. 首先請求dns的服務解析域名位址。
  2. 對于圖檔、js等靜态資源直接請求cdn服務擷取。
  3. 對于業務接口通過https請求到LVS負載服務,然後轉到aserver(類似ngnix的http代理伺服器),再通過mtop将http請求轉換成rpc調用到達背景服務。

ipv6解決方案

閑魚的ipv6改造是基于阿裡集團的ipv6架構實施的,有了上圖的網絡應用架構後,ipv6的解決方案看起來就很清晰了:

彙報一下,閑魚的ipv6改造之路1、背景2、IPV6應用架構分析3、改造原則4、改造上線步驟5、上線政策與監控6、效果與展望

圖2

請求流程:app--->VIP(NAT轉換 TOC傳遞CIP)--->aserver(CIP打包裝入Http header)-->mtop服務。

目前的方案是在LVS層通過阿裡自研的技術将IPV6通過NAT技術轉換成IPV4,然後将client ipv6資訊通過http header傳入下遊服務,減少後端改造工作量;後續應用完全上雲後是端到端的ipv6/4雙棧支援。

3、改造原則

網絡屬于基礎設施,改造過程中需要非常小心,否則容易引發大故障。在改造過程中我們總結了以下原則供參考:

  • 一定要可測試、可灰階、可實時監控診斷分析、可随時回退。
  • 必需能支援ipv4/ipv6雙棧環境,確定ipv6即使出現問題也不影響使用者。
  • 改造過程先小子產品再全業務;先分支業務再核心業務。
  • 先android再ios;android上架靈活。
  • 上線過程中,先開啟主業務服務域名放量,提升ipv6月活使用者量,再開啟cdn域名放量提升ipv6流量占比。
  • 主要做移動端改造,PC端流量很小,優先級較低。

4、改造上線步驟

整體改造步驟

彙報一下,閑魚的ipv6改造之路1、背景2、IPV6應用架構分析3、改造原則4、改造上線步驟5、上線政策與監控6、效果與展望

圖3

  1. 調研app端上修改點與背景服務修改點。
  2. app與背景服務基于ipv6改造更新。
  3. 支援ipv6的内側app,測試版本app進行内部灰階。
  4. 支援ipv6的正式app,內建後線上開始灰階,并逐漸放量釋出。
  5. 服務域名ipv6放量:主服務域名通過amdc控制使用者ipv6的比例,逐漸在各省市放量。
  6. cdn域名ipv6放量:靜态頁面、圖檔、視訊,通過amdc精細化控制逐漸在各省市放量。

具體的改造點

  1. 首先需要確定app內建的網絡sdk庫是支援ipv6的,如果不支援,需要更新sdk網絡庫或者應用自行開發。閑魚使用的集團提供sdk網絡庫,更新到最新版本就支援ipv6環境了。
  2. 前端頁面中使用到ip位址的邏輯需要支援ipv6格式。
  3. 後端業務邏輯中使用ip位址作為參數和資料庫存儲地方需要修改支援ipv6位址。
  4. 使用ip位址調用擷取LBS的服務需要支援ipv6位址庫。
  5. 使用者畫像、搜尋、推薦使用到了使用者ip的地方支援ipv6位址格式。

測試方法

  1. 需要確定本地ip是雙棧環境。以WiFi網絡為例:
彙報一下,閑魚的ipv6改造之路1、背景2、IPV6應用架構分析3、改造原則4、改造上線步驟5、上線政策與監控6、效果與展望

圖4

  1. app端通過專用測試工具測試ipv6網絡連接配接,比如www.dotouch.net.cn提供的app網絡測試工具。裡面會有詳細的ipv4/6網絡連結與流量統計資訊。
  2. 使用web工具通過浏覽器直接通路指定域名,統計ipv6通路的詳細資訊。
  3. 記錄日志檢視ip相關資訊。

5、上線政策與監控

灰階上線:

1、支援ipv6 app上線:ipv6改造測試完成後,首先使用獨立的app版本開始灰階釋出,在這個過程中開啟所有域名的ipv6政策,觀察一段時間看是否運作穩定。灰階完成後,再将支援ipv6版本的特性合如主版本開始釋出。

2、前端、服務端改造釋出。

3、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改造之路1、背景2、IPV6應用架構分析3、改造原則4、改造上線步驟5、上線政策與監控6、效果與展望

圖5

ipv6監控

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

  1. ipv6 cdn的網絡品質。
  2. ipv6 cdn流量占比。
  3. 接口請求時延、逾時率、錯誤率。
  4. 使用ipv6網絡的使用者dau、mau統計資訊。

6、效果與展望

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

繼續閱讀