masstree Seastar

masstree  Seastar

 

線程鎖競爭和切換的開銷幾乎爲0,代碼也不用考慮多線程競爭,邏輯大大減化;此外Niagara是一個全異步執行引擎,採用了基於future,promise和continuation的方式來表達咱們的異步執行邏輯,比傳統的callback方式邏輯清晰明瞭了不少,很舒服的同時也不易出錯。promise

存儲內核方面,在調研了多種存儲模型之後,最終咱們選擇了LSM結構,由於它能讓咱們方便的進行讀、寫和空間放大的調節。相比同是LSM架構的RocksDB,咱們作了多方面的優化來提高性能,包括:多線程

  • 基於masstree的memtable
  • Snow-shovelling的flush策略
  • 自適應的擴層策略
  • 實時in-memory compaction

在做爲Blink statebackend的集成中,咱們作了checkpoint時候不清memtable的優化,從而減小了latency抖動問題。架構

 

[1] Seastar: http://www.seastar-project.org
[2] Masstree: https://pdos.csail.mit.edu/papers/masstree:eurosys12.pdf異步

相關文章
相關標籤/搜索