摘要:轉(zhuǎn)發(fā)通過,將請求通過負(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ù)邏輯相對簡單,抽象看就是:上傳和下載,這里簡單分享圖床這兩個(gè)模塊的架構(gòu)以及圖片的上傳和下載時(shí)所經(jīng)歷的服務(wù)。
1. 上傳模塊(Davinci)
【Davinci 架構(gòu)圖】
業(yè)務(wù)上傳圖片到圖床邏輯大致如下:
SDK 上傳
通過 SDK (或者業(yè)務(wù)自己構(gòu)造 HTTP 請求)將圖片 POST 到 Davinci 上傳接口 ,接口域名解析的 VIP 均衡到后端 Nginx (80 端口)。
Nginx:80 轉(zhuǎn)發(fā)
Nginx 80 通過 upstream,將請求通過負(fù)載均衡,均衡給后端處理的服務(wù)(Nginx 8360) 。
排隊(duì)等待上傳處理
后端服務(wù)將上傳任務(wù)進(jìn)行排隊(duì),等待 Gearman 異步服務(wù)進(jìn)行隊(duì)列消費(fèi)和任務(wù)調(diào)度,同時(shí)給該上傳請求返回任務(wù) ID,用于查詢處理結(jié)果。
圖片初始處理和存儲(chǔ)
Gearman worker 異步對圖片進(jìn)行處理,比如壓縮、初始裁剪、人臉識(shí)別等,并將圖片以及圖片處理后的元信息落地存到 Cassandra。將任務(wù) ID 對應(yīng)的處理結(jié)果,存在 Redis,用于提供用戶查詢。
獲取上傳結(jié)果
通過
PS: 圖床同時(shí)也支持同步上傳、回調(diào)通知的方式,將圖片上傳結(jié)果反饋給業(yè)務(wù)方。
2. 下載模塊(Picasso)
【Picasso 架構(gòu)圖】
用戶通過 URL 請求圖床的一張圖片,大致流程如下:
圖片 URL 請求
圖片 URL 根據(jù)圖床域名 CNAME 配置,請求到 CDN 節(jié)點(diǎn)。如果所請求的 CDN 節(jié)點(diǎn)已緩存過該圖片,則直接返回?cái)?shù)據(jù)。
CDN 回源
如果 中沒命中 CDN 緩存,將會(huì)回源到圖床后端(Nginx 80 端口)。
圖床后端緩存(Varnish)
為了減少圖床后端的計(jì)算壓力,圖片請求回源到圖床后端時(shí),并不是直接到存儲(chǔ)集群讀圖片、處理圖片,而是先通過 varnish 前端緩存服務(wù),如果 varnish 緩存命中,則直接響應(yīng)圖片數(shù)據(jù)。
Varnish 緩存沒命中
如果 varnish 緩存沒命中,則轉(zhuǎn)發(fā)給 Nginx 8360 端口,進(jìn)而轉(zhuǎn)發(fā)給 PHP fast-cgi 進(jìn)行圖片讀取和響應(yīng)。
圖片處理
在
響應(yīng)處理后的數(shù)據(jù)
通過 Nginx (8360)這層模塊的處理,得到符合 URL 指定規(guī)則的圖片,最后響應(yīng)并緩存到 CDN 節(jié)點(diǎn)。
以上就是圖床上傳和下載模塊的處理邏輯。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39476.html
摘要:轉(zhuǎn)發(fā)通過,將請求通過負(fù)載均衡,均衡給后端處理的服務(wù)。圖床同時(shí)也支持同步上傳回調(diào)通知的方式,將圖片上傳結(jié)果反饋給業(yè)務(wù)方。 Hulk 圖床是支持 360 公司絕大部分業(yè)務(wù)的圖片服務(wù),支持多種圖片處理功能,如:裁剪、壓縮、濾鏡、pHash 計(jì)算、人臉識(shí)別、格式轉(zhuǎn)換、gif 首幀提取……等等,支持的業(yè)務(wù)線包括:搜索、圖搜、新聞、信息流、廣告……等等,每天 CDN 回源圖床后端 150+ 億 P...
閱讀 2878·2021-09-22 15:54
閱讀 1886·2019-08-30 15:53
閱讀 2239·2019-08-29 16:33
閱讀 1416·2019-08-29 12:29
閱讀 1386·2019-08-26 11:41
閱讀 2367·2019-08-26 11:34
閱讀 2947·2019-08-23 16:12
閱讀 1420·2019-08-23 15:56