Seastar- complete tutorial (3)

Seastar 是一個 c + + 庫,用於在現代多核機器上編寫高效的複雜服務器應用程序。

傳統上,用於編寫服務器應用程序的編程語言庫和框架被劃分爲兩個不同的陣營: 注重效率的陣營和注重複雜性的陣營。 有些框架非常高效,但是隻允許構建簡單的應用程序(例如,DPDK 允許單獨處理數據包的應用程序) ,而其他框架允許構建極其複雜的應用程序,代價是運行時效率。 Seastar 是我們兩全其美的嘗試: 創建一個允許構建高度複雜的服務器應用程序的庫,同時實現最佳性能。

Seastar的靈感和第一個用例就是Scylla,是對 Cassandra 的重寫。 Cassandra 是一個非常複雜的應用程序,但是,通過 Seastar,我們能夠重新實現它,吞吐量增加了10倍,並且大大降低了延遲並且更加一致。

Seastar 提供了一個完整的異步編程框架,它使用兩個概念——futurecontinuations——來統一表示和處理每種類型的異步事件,包括網絡 i / o、磁盤 i / o 以及其他事件的複雜組合。

由於現代多核和多套接字計算機對於在覈心之間共享數據(原子指令、緩存線跳動和內存柵欄)有很高的要求,Seastar 程序使用無共享編程模型,也就是說,可用內存在覈心之間分配,每個核心在其自己的內存部分處理數據,核心之間通過顯式消息傳遞進行通信(當然,這本身就是使用 SMP 的共享內存硬件)。

發佈了156 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章