1 概述
爲了解決大流量、大存儲的訪問特性,Cache Cluster架構方案通常引入四層負載機制(LVS或硬件設備)解決大流量的問題,引入七層負載機制(Haproxy等)解決大存儲的問題。而這樣的Cache Cluster架構方案一次request需要經過七層負載機制和Cache Server兩次的解析。以選擇Haproxy爲例,其request解析的CPU開銷佔到用戶態的10%以上(不包括其它七層的匹配處理)。因此,避免request的重複解析,能夠減少CPU的開銷。
另外,業界只有TrafficServer能夠提供融合七層負載和Cache Server的單獨解決方案,而其它的方案只能用兩個軟件來分別來實現七層負載和Cache Server。而TrafficServer正式實現完整方案的關鍵技術。
2 原理
TrafficServer的Cluster模式原理如下圖所示:
Trafficserve在Cluster模式下,遠端client訪問Cache Cluster在服務時存在四種處理策略:
本地CacheServer Hit狀態
client的request經過一致性哈希計算出對應的服務Server爲本地(即如圖中的Cache Server 1)。此時req如果在Cache Server1中Hit,則直接回復resp。數據流程爲:
1:req->8:resp
本地CacheServer Miss狀態
client的request經過一致性哈希計算出對應的服務Server爲本地(即如圖中的Cache Server 1)。此時req如果在Cache Server1中Miss,則回Orig Server。數據流程爲:
1:req->5:req->6:resp->8:resp
遠端CacheServer Hit狀態
client的request經過一致性哈希計算出對應的服務Server爲遠端(即如圖中的Cache Server 2)。此時req如果在Cache Server 2中Hit,則回覆數據至Cache Server 1,再由Cache Server 1把數據回覆給client。數據流程爲:
1:req->2:req->3:resp->8:resp
遠端Cacheserver Miss狀態
client的request經過一致性哈希計算出對應的服務Server爲遠端(即如圖中的Cache Server 2)。此時req如果在Cache Server 2中Miss,則回覆Miss信息至Cache Server 1,再由Cache Server 1回源,再把回源的resp一邊回覆至client,一邊回覆至Cache Server 2,由Cache Server 2存入本地。數據流程爲:
1:req->2:req->3:Miss->5:req->6:resp->8:resp(7:resp)
備註:
TrafficServer之間交互的request和response都爲序列化後的解析結果數據,因此可以減少重複解析。