天天看點

揭秘OSS實戰優化、UDF追求極緻之路

雲栖社群2017線上技術峰會,阿裡雲對象存儲服務技術專家楊銘來為大家揭秘存儲技術實戰優化紅包體驗。本文主要從紅包場景中設計到的存儲開始談起,着重介紹阿裡雲對象存儲oss的技術架構,以及架構如何支撐紅包活動的,最後從存儲擴充看看oss上的計算生态。

<a href="https://yq.aliyun.com/edu/lesson/play/611?spm=5176.8067841.0.0.xuw0jj">直播視訊</a>

以下是精彩内容整理:

紅包場景中的存儲

2017年支付寶紅包有兩個有趣的玩法,ar實景紅包和“掃一掃”掃福字。ar實景紅包可以利用手機拍的照片,将紅包藏在某個地點,将紅包地點和線索圖發給好友,好友可以根據線索圖找紅包;掃福字可以利用手機掃各種福字,集齊五福,下面我們就來看一看整個活動背後蘊含的技術是怎樣的。

揭秘OSS實戰優化、UDF追求極緻之路

 藏紅包就是用手機拍照片,拍好照片将照片上傳到伺服器,伺服器要将紅包圖檔特征值提取出來,同時要将圖檔制成線索圖,将兩個圖檔存儲到oss上,當好友來找紅包時候,他會從oss上将線索圖下載下傳下來,自己拍張圖檔作為比對圖,比對圖會先在用戶端做比對,用戶端比對通過後會服務端作比對,服務端比對過程就是要把比對圖上傳到oss,由服務端程式進行嚴格的比對,隻有比對到了才能找到紅包。”掃一掃”掃福字更傾向于在用戶端将事情做完,使用者通過掃一掃拍照,用戶端識别福字,如果用戶端識别不出來,那也會上傳到oss中,由更為強勁的算法進行嚴格的比對。從這兩個場景可以發現,在整個紅包活動中,所有的使用者所拍攝的圖檔都是上傳到oss的,此外,整個紅包過程中所涉及到的宣傳圖檔、宣傳視訊、拜年視訊都是存儲到oss上的。

紅包場景的核心業務名額是什麼呢?

首先,除夕參與人數有2.2億,大約七八個人就會有一個人在玩紅包;紅包首頁面峰值達到了81w/s,上傳峰值可以達到20w/s,這和一般産品都有點不一樣,上傳量特别大。

揭秘OSS實戰優化、UDF追求極緻之路

怎麼選擇合适的存儲來滿足業務需求呢?存儲痛點主要有以下六個:

1.突發式通路,在整個活動中,過年前一周是沒什麼人玩的,除夕夜大家都瘋狂掃福,大家經常會聚在一起玩ar實景紅包,峰值是可以達到20w/s上傳;

2.紅包活動需要高可用性保障,如果因為某個裝置的故障,就掃福掃不出來,或是ar實景紅包就沒有辦法獲得線索圖,這樣的使用者體驗是很差的;

3.低延遲保障,當把掃好的圖檔上傳到伺服器做比對時,期望的延時大概在1~2秒之間,最終留給oss上傳時間大概有50ms,如果你的平均延遲比較高或不穩定,使用者體驗就會變差。

4.可以存儲海量檔案數目;

5.對于活動頁面、宣傳視訊,我們希望有一定的處理能力,比如說,圖檔的縮放、水印,視訊的碼率轉換等;

6.對于業務來說,簡化運維,以較低成本達到目标。

揭秘OSS實戰優化、UDF追求極緻之路

存儲方案來說,一種方案我們會選擇傳統的nas裝置,nas裝置的橫向擴充能力或是弱或是沒有,需要買高規格機器,除了除夕夜幾天外,平時用不到,造成資源的浪費;另外一種選擇是很多創業公司會自建雲存儲,但并不是人人都是存儲專家,運維方面會面臨挑戰;支付寶紅包活動選擇阿裡雲對象存儲,對象存儲解決了所有的痛點。

oss技術架構

oss有許多特性,首先oss支援海量檔案數目,使用者可以放心存儲很多檔案,每個檔案大小也不限制,最小檔案可以是空的,最大可以達到48.8tb;oss具備高可用性,不能因為某一部分故障導緻服務不可用;oss也具備高可靠性,資料存在oss上面要保證長期不會丢失,在同一個az内将一份資料存成三個副本,同時oss還提供跨區域複制功能,通過這個功能将一個城市的資料自動化備份或同步到另外一個城市,當某一個城市不幸發生災難時,可以在另外城市找到資料;oss還提供了很多公共服務,比如權限管理可以給你很多子賬戶,每一個子賬戶可以通路一部分資源,也可以将你的資源臨時授權給某人看,同時也進行多租戶隔離;除此之外,oss還圍繞着龐大而且完備的計算生态,可以對檔案進行圖檔處理、視訊轉檔和大資料分析等。

揭秘OSS實戰優化、UDF追求極緻之路

oss存儲技術架構主要分為三層。第一層為協定接入層,主要接入來自使用者的http或https請求,接着我們會做一些權限的驗證等,然後将資料轉發給分區層,分區層主要對資料進行分片,同時做進一步均衡,主要基于lsm tree結構,kvmasters主要存儲分片資訊,每個分片隸屬于某個kvserver,由它來進行分片上面的讀寫操作,最下面層是持久層,主要是将資料儲存到實體磁盤上面,由分布式檔案系統盤古實作,它是基于paxos的多master結構,使用者資料存儲在稱為chunk server的資料節點上,每份資料都會存三個副本,三個副本會分布在不同磁盤、機器、機架以及網絡裝置上,主要用來保證高可靠性的。

我們通過寫入請求的例子來具體了解技術架構是怎樣的。首先,使用者寫入請求進來,進入阿裡雲機房,阿裡雲會有一系列安全産品,比如雲盾、或其他産品對這個請求進行識别,确定它不是攻擊流量才會放行,然後進入負載均衡,負載均衡會将請求按照一定的政策配置設定到某一個httpserver上,httpserver就會做大量工作,首先要對http協定進行解析,接着對使用者身份進行識别和權限識别,我們還會做其它識别比如是否超出使用額度,準備向分區層發送資料,發送資料前會向kvmaster詢問資料由哪個kvserver服務,kvserver同時寫三分redo log到chunk server中去,kvserver還要更新記憶體中的memtable,更新完畢後可以回應http server,繼而回應客戶。

可以看出,整個架構實作了高可用,沒有一個環節有單點故障發生,任何一台挂機都不會存在可用性上的損失,每一個機房以及實體上的保障,包括網絡上的保障,每一個機房的電力包括接入光纖、空調各方面都是有備援的,整個系統可以實作橫向擴充。

揭秘OSS實戰優化、UDF追求極緻之路

支付寶紅包活動由很多圖檔需要處理删除,比如将圖檔分享給家人、朋友,會根據手機尺寸、個人愛好等各方面進行一定的縮略,縮略都是在oss端線上完成的。

我們通過請求的方式讓大家了解oss圖檔實時處理架構,使用者在通路oss時在圖檔後面加一些參數,

一般來說會通過電腦和手機先通路cdn,cdn發現緩存 miss以後,就會回源到oss協定接入層,oss會先去通路圖檔緩存,如果命中,就可以立即回報給客戶,如果不命中,就從對象存儲引擎中将原圖讀上來,經過圖檔處理引擎優化處理完後,再傳回給處理圖檔的緩存,最終回報給客戶。

揭秘OSS實戰優化、UDF追求極緻之路

為了解決紅包活動中突發式通路問題,需要準備足夠多的資源滿足業務需求,而且不能讓别人影響我,紅包業務也不能影響其他業務。

多租戶架構主要分成兩部分,一是前端http server,屬于協定接入層一部分,它會實時采集使用者資訊,一是quota server,quota server對資訊進行彙總,http server會定時将它收集到的資訊彙報給quota server,quota server會把流控的資訊傳回給http server,除此之外,我們還會對手機的資訊進行實時計算,包括它的通路分布有多少400、403和200等,這些資訊彙總後,我們還會将資訊輸入到運維大盤系統中去,該系統主要承載展現收集到資料,比如一個使用者在一段時間内的通路狀況,另外也可以設定門檻值進行監控和報警,運維大盤對于保障支付寶紅包這樣的大型活動是十分重要的。

oss的計算生态

揭秘OSS實戰優化、UDF追求極緻之路

oss除了提供圖檔處理功能外,還提供了很多能力來幫助使用者挖掘資料價值,包括音頻視訊轉碼,轉碼後還會放在oss上,可以很友善的将轉碼後的東西分享給别人;除此之外還對圖檔視訊鑒黃,保障業務健康發展;也可以對oss上文檔進行索引,并且進行搜尋,可以作删除日志分析和抽取等。

<b>使用者自定義計算</b><b>(udf)</b>

對于像支付寶等追求極緻的應用,會有一些特殊的需求。比如需要對寵物進行裁剪,或者對資料進行定制化的壓縮、加壓,或者對資料進行打包,也有一些使用者不滿足阿裡雲的服務,想要接入第三方服務。

在這個過程中有兩大痛點,一是資料和計算分離了,需要從oss跑到自己機房或者跑到另外一個地方去,這是對帶寬的浪費;一是延遲會比較大,需要額外的代理邏輯,運維成本很大。

為了解決這些痛點,更好的接入第三方服務,oss推出了自定義計算的優勢,使用者可以将自己的應用程式托管給oss,在使用者請求資料的過程中,oss就将資料處理好了,就會達到無縫的體驗,

真正做到功能定制、資料就近處理、簡化調用和無需運維。

揭秘OSS實戰優化、UDF追求極緻之路

udf建立在飛天分布式系統中,主要由輕計算協定插槽、輕計算運作容器和輕計算控制系統組成,當收到使用者請求時,我會識别發現需要自定義計算的,将請求轉發給使用者程式,程式運作在輕計算運作容器中,控制系統主要是使用者用來運維程式。

揭秘OSS實戰優化、UDF追求極緻之路

首先使用者需要定義一個名字,然後将程式打包好,上傳到oss,oss會将你的程式在輕計算運作架構中運作,同oss其它原生處理是一樣的,将請求發送給oss協定接入層,如果oss發現需要自定義計算,就會将請求轉給udf排程管理,排程管理選擇運作執行個體進行處理,然後傳回給客戶,也可發送異步消息給mns。圖中橘黃色部分是運維保障。使用者不需要買自己的伺服器,使用者對運維也不需要那麼麻煩,資料流動都是對oss内部,url和标準圖檔處理基本一緻,程式設計方面不需要有額外的支出。

揭秘OSS實戰優化、UDF追求極緻之路

oss計算生态如圖,資料上傳後,既可以用我們的已經有的阿裡雲的産品,也可以友善接入第三方服務,此外可以根據自己業務需求進行自定義處理,處理結果有一套同步或者異步通知方式及時告訴處理成功或失敗。

總結

1.        

紅包場景的存儲需求:海量檔案數,高可用性,突發式通路,低延遲。

2.        

oss分布式水準擴充的服務能力完美的支援了紅包等業務場景。

3.        

oss以完備的計算生态,一站式的滿足了資料的存儲和計算需求:

原生支援圖檔處理

作為多種阿裡雲計算服務的輸入、輸出媒體

通過udf,使用者能夠便利的加入定制化計算