回覆列表
  • 1 # MiLi影片

    訊息中介軟體儲存

    首先理解一點,訊息中介軟體一般都是儲存在磁碟上的,大家都知道直接在磁碟讀寫是有效能瓶頸的,不可能達到每秒幾十萬的吞吐量,那麼訊息中介軟體是怎麼保證讀寫效能的呢?

    寫資料

    1、訊息中介軟體是基於作業系統的頁快取來實現檔案寫入的。作業系統本身有一層快取,叫做page cache,是在記憶體裡的快取,我們也可以稱之為os cache,意思就是作業系統自己管理的快取。

    我們在寫入磁碟檔案的時候,可以直接寫入這個os cache裡,也就是僅僅寫入記憶體中,接下來由作業系統自己決定什麼時候把os cache裡的資料真的刷入磁碟檔案中。也就是說我們寫是挨個寫入快取中,系統批次寫入磁碟。

    2、寫磁碟檔案並不是隨機新增的,而是在檔案末尾追加的,這也就保證了訊息在單個磁碟檔案的順序性(多分割槽就不能保證順序了)。

    讀資料

    1、訊息中介軟體讀資料也是從os cache中讀取的,如果os cache中沒有,系統會去磁碟中批次讀取一部分資料,放入os cache中。

    2、訊息中介軟體用到一種叫做零複製的技術。

    一般我們完成一次網路傳輸複製,需要以下幾步:

    1)呼叫read系統介面,將資料從磁碟檔案複製到讀核心緩衝區。

    2)從讀核心緩衝區複製到使用者空間快取;

    3)呼叫write系統介面,將資料從使用者空間複製到寫核心空間緩衝區。

    4)將資料從核心空間緩衝區複製到socket快取衝,準備網路傳輸。

    上面我們可以看出,一共進行了四次資料複製。使用零複製技術,我們呼叫mmap介面,在使用者空間和核心空間共享一段記憶體。這樣我們就只需要兩次複製。

    1)將磁碟檔案資料複製到mmap共享記憶體區。

    2)將資料從mmap共享記憶體區複製到socket快取區。

    這樣我們就減少了一半的資料複製,縮短時間。

  • 中秋節和大豐收的關聯?
  • 上班族應該如何在10分鐘之內化好妝?