日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ATS缓存数据结构

發布時間:2023/11/27 生活经验 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ATS缓存数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ATS緩存數據結構

HttpTunnel類

數據傳輸驅動器(data transfer driver),包含一個生產者(producer)集合,每個生產者連接到一個或是多個消費者(comsumer)。隧道(tunnel)處理事件和緩沖區以便數據能從生產者移動到消費者,數據會盡可能保存在引用計數類型的緩沖區中。只有數據發生變動,或者在數據源(它從ATS外部獲取數據)和數據接收端(它將數據發送到ATS外部)的情況下,才會發生拷貝操作。

HTTPCacheAlt類

定義在HTTP.h中,它是一個緩存對象中單個副本的元數據(metadata)。包含下面的信息:

  • 副本的earliest Doc對應的Dir
  • 請求頭和響應頭信息
  • 分片偏移表(fragment offset table)
  • 源站請求和響應的時間戳(timestamp)

HTTPInfo類

定義在HTTP.h中,它是HTTPCacheAlt的包裝類。它提供了外部API來訪問包裝類內部的數據,它只含有一個指向包裝類實例的指針(可能為NULL)。

CacheHTTPInfo類

HTTPInfo類的typedef。

CacheHTTPInfoVector類

定義在P_CacheHttp.h中,它是HTTPInfo對象組成的數組,充當一個對象所有副本的信息倉庫。

OpenDir類

一個打開的目錄項(directory entry),包括一個Dir所有的信息,外加從first Doc中獲取的額外信息。

CacheVC類

接收輸入數據并寫到緩存中的虛擬連接類。

  • int CacheVC::openReadStartHead(int event, Event *e)
    執行讀取一個緩存對象(cached object)的初始化工作
  • int CacheVC::openReadStartEarliest(int event, Event *e)
    執行讀取一個緩存對象的副本(alternate)的初始化工作

CacheVol類

保存volume.config配置文件中一行的數據的類,一行表示一個緩存分卷

CacheControlResult類

保存cache.config配置文件中一行的數據的類。

EvacuationBlock類

用于記錄疏散的相關信息(record for evacuation)。

Vol類

表示cache分卷內的一個存儲單元(過時的叫法storage unit,現在叫作cache strip),也叫作volume,注意跟磁盤分卷的那個volume是有區別的。

  • off_t Vol::segments
    緩存帶中的段的個數,由該緩存帶中的所有目錄項(directory entry)除以一個段中的目錄項數得到,是個粗略估計值。
  • off_t Vol::buckets
    緩存帶中的桶的個數,由目錄段中的所有目錄項(directory entry)除以DIR_DEPTH(當前為4)得到。是個粗略估計值,按照當前的定義值,這個數大約是16384(2^16/4),目錄桶用來作為索引哈希(index hash)的目標。
  • DLL<EvacuationBlock> Vol::evacuate
    元素為EvacuationBlock的桶組成的數組,它按照大小排序,以便每個疏散帶(evacuation span)都有一個EvacuationBlock桶。
  • off_t len
    緩存帶的字節長度。
  • int Vol::evac_range(off_t low, off_t high, int evac_phase)
    假如從lowhigh的字節帶上存在任何EvacuationBlock,就開始一次疏散。假如沒有疏散發生,返回0,否則返回非零值。

Doc類

在P_CacheVol.h中定義。

  • uint32_t Doc::magic
    校驗值,對合法文檔(document)設為DOC_MAGIC。
  • uint32_t Doc::len
    包含HTTP頭長度,分片表和Doc結構體的段的長度。
  • Doc::total_len
    整個文檔的總長度,不包含元數據,但是包含HTTP頭信息。
  • Doc::first_key
    文檔(document)的首個索引鍵值,用于定位cache帶中的緩存對象。
  • Doc::key
    分片的索引鍵值(index key),分片鍵值可以通過鏈式方法計算,使得下一個和上一個分片的鍵值可以從當前鍵值計算出來。
  • uint32_t Doc::hlen
    文檔頭(即元數據)長度,注意不是HTTP頭的長度。
  • uint8_t Doc::ftype
    分片類型,當前只用到CACHE_FRAG_TYPE_HTTP,其它類型用于后續緩存擴展,目前還沒有實現。
  • uint24_t Doc::flen
    分片表(fragment table)長度,假如存在分片表的話。一個緩存對象只有first Doc分片中才含有分片表。分片表是從第一個分片首字節開始計算時,各分片中HTTP響應內容(不包含元數據和HTTP頭)的相對字節偏移所組成的列表。分片表中的第一個元素表示的是第二個分片中的字節偏移,類似于數組從索引1開始計算,因為第一個分片的字節偏移是總是0,無須計算在內。這樣做的目的是為了在range請求的快速查找。假如給定first Doc分片,包含range請求首字節的分片將會直接計算和讀取,不需要更多的磁盤訪問。
    ATS 3.3.0之后移除了。
  • uint32_t Doc::sync_serial
  • uint32_t Doc::write_serial
  • uint32_t pinned
    釘住對象(pinned object)的標志和計時器
  • uint32_t checksum

VolHeaderFooter類

參考文獻

https://docs.trafficserver.apache.org/en/latest/developer-guide/architecture/data-structures.en.html

總結

以上是生活随笔為你收集整理的ATS缓存数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。