成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

通用圖床服務(wù)架構(gòu)解析(百萬(wàn)級(jí)回源/天)

XFLY / 1483人閱讀

摘要:轉(zhuǎn)發(fā)通過(guò),將請(qǐng)求通過(guò)負(fù)載均衡,均衡給后端處理的服務(wù)。圖床同時(shí)也支持同步上傳回調(diào)通知的方式,將圖片上傳結(jié)果反饋給業(yè)務(wù)方。

Hulk 圖床是支持 360 公司絕大部分業(yè)務(wù)的圖片服務(wù),支持多種圖片處理功能,如:裁剪、壓縮、濾鏡、pHash 計(jì)算、人臉識(shí)別、格式轉(zhuǎn)換、gif 首幀提取……等等,支持的業(yè)務(wù)線包括:搜索、圖搜、新聞、信息流、廣告……等等,每天 CDN 回源圖床后端 150+ 億 PV。

圖床業(yè)務(wù)邏輯相對(duì)簡(jiǎn)單,抽象看就是:上傳和下載,這里簡(jiǎn)單分享圖床這兩個(gè)模塊的架構(gòu)以及圖片的上傳和下載時(shí)所經(jīng)歷的服務(wù)。

1. 上傳模塊(Davinci)


【Davinci 架構(gòu)圖】

業(yè)務(wù)上傳圖片到圖床邏輯大致如下:

SDK 上傳
通過(guò) SDK (或者業(yè)務(wù)自己構(gòu)造 HTTP 請(qǐng)求)將圖片 POST 到 Davinci 上傳接口 ,接口域名解析的 VIP 均衡到后端 Nginx (80 端口)。

Nginx:80 轉(zhuǎn)發(fā)
Nginx 80 通過(guò) upstream,將請(qǐng)求通過(guò)負(fù)載均衡,均衡給后端處理的服務(wù)(Nginx 8360) 。

排隊(duì)等待上傳處理
后端服務(wù)將上傳任務(wù)進(jìn)行排隊(duì),等待 Gearman 異步服務(wù)進(jìn)行隊(duì)列消費(fèi)和任務(wù)調(diào)度,同時(shí)給該上傳請(qǐng)求返回任務(wù) ID,用于查詢處理結(jié)果。

圖片初始處理和存儲(chǔ)
Gearman worker 異步對(duì)圖片進(jìn)行處理,比如壓縮、初始裁剪、人臉識(shí)別等,并將圖片以及圖片處理后的元信息落地存到 Cassandra。將任務(wù) ID 對(duì)應(yīng)的處理結(jié)果,存在 Redis,用于提供用戶查詢。

獲取上傳結(jié)果
通過(guò) 中獲取的任務(wù) ID,獲取圖片上傳和處理結(jié)果。

PS: 圖床同時(shí)也支持同步上傳、回調(diào)通知的方式,將圖片上傳結(jié)果反饋給業(yè)務(wù)方。

2. 下載模塊(Picasso)


【Picasso 架構(gòu)圖】

用戶通過(guò) URL 請(qǐng)求圖床的一張圖片,大致流程如下:

圖片 URL 請(qǐng)求
圖片 URL 根據(jù)圖床域名 CNAME 配置,請(qǐng)求到 CDN 節(jié)點(diǎn)。如果所請(qǐng)求的 CDN 節(jié)點(diǎn)已緩存過(guò)該圖片,則直接返回?cái)?shù)據(jù)。

CDN 回源
如果 中沒(méi)命中 CDN 緩存,將會(huì)回源到圖床后端(Nginx 80 端口)。

圖床后端緩存(Varnish)
為了減少圖床后端的計(jì)算壓力,圖片請(qǐng)求回源到圖床后端時(shí),并不是直接到存儲(chǔ)集群讀圖片、處理圖片,而是先通過(guò) varnish 前端緩存服務(wù),如果 varnish 緩存命中,則直接響應(yīng)圖片數(shù)據(jù)。

Varnish 緩存沒(méi)命中
如果 varnish 緩存沒(méi)命中,則轉(zhuǎn)發(fā)給 Nginx 8360 端口,進(jìn)而轉(zhuǎn)發(fā)給 PHP fast-cgi 進(jìn)行圖片讀取和響應(yīng)。

圖片處理
中讀取了圖片數(shù)據(jù),會(huì)在 Nginx (8360)這層的 filter 模塊進(jìn)行處理,處理規(guī)則是在圖片 URL 的參數(shù)中指定。比如:指定裁剪寬高、濾鏡、黑白、人臉裁剪、gif 首幀提取等等,這個(gè) filter 模塊主要是使用了開(kāi)源的 GraphicsMagick 進(jìn)行圖片處理,靜態(tài)編譯到 Nginx。

響應(yīng)處理后的數(shù)據(jù)
通過(guò) Nginx (8360)這層模塊的處理,得到符合 URL 指定規(guī)則的圖片,最后響應(yīng)并緩存到 CDN 節(jié)點(diǎn)。

以上就是圖床上傳和下載模塊的處理邏輯。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/61837.html

相關(guān)文章

  • 通用圖床服務(wù)架構(gòu)解析百萬(wàn)級(jí)回源/

    摘要:轉(zhuǎn)發(fā)通過(guò),將請(qǐng)求通過(guò)負(fù)載均衡,均衡給后端處理的服務(wù)。圖床同時(shí)也支持同步上傳回調(diào)通知的方式,將圖片上傳結(jié)果反饋給業(yè)務(wù)方。 Hulk 圖床是支持 360 公司絕大部分業(yè)務(wù)的圖片服務(wù),支持多種圖片處理功能,如:裁剪、壓縮、濾鏡、pHash 計(jì)算、人臉識(shí)別、格式轉(zhuǎn)換、gif 首幀提取……等等,支持的業(yè)務(wù)線包括:搜索、圖搜、新聞、信息流、廣告……等等,每天 CDN 回源圖床后端 150+ 億 P...

    Karrdy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<