iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0

SCYLLA(唸作斯庫拉),英文字面上是指希拉神話的女海妖,用C++寫成的開源專案,目前最新出到版本:4.0,團隊目前還是以3.x為主,所以接下來並不會討論到4.0的一些功能或調整。

SCYLLA 官網

Github 連結

介紹SCYLLA,一定得要先介紹CASSANDRA,因為SCYLLA是出脫於CASSANDRA 。

CASSANDRA 是源自facebook開發團隊,設計的一套分散式、去中心化,可高度擴展性的NoSQL DB。

後續會針對這個分散式DB個架構概念,跟大家做更詳細的描述。

簡單來說,SCYLLA就是有一群人用C++,把用JAVA寫出來的CASSANDRA重新覆寫一遍,所以大體上了解CASSANDRA,就是了解SCYLLA。

有點點像是Maria DB與MySQL的關係。

SCYLLA號稱完全兼容CASSANDRA,當然或許可能有少少的功能,處理方式和CASSANDRA不太一樣,就筆者了解的部分,會特別說明出來。

SCYLLA 告訴大家它是最快的NoSQL DB,效能優異程度十足碾壓原本的CASSANDRA,我們來看一下官網提供的數據。

吞吐量超過10倍以上

Scylla vs Cassandra Using 2TB Data for Different YCSB Workloads – Database Benchmark


4 個節點的SCYLLA 與40個節點的CASSANDRA,讀寫延遲時間還是不能比

4-node Scylla 2.2 (i3.metal) vs 40-node Cassandra 3.11 (i3.4xlarge) – Database Benchmark

SCYALLA 可以發揮遠勝於CASSANDRA的效能,是在對於各方面都下足了苦工夫,不管是程式語言特性,語言框架的選用,CPU效能、Memory的控制、網路TCP上的調教、I/O disk的處理等等,筆者簡單挑了3個自己覺得比較有興趣項目,稍微跟大家在下面提一下。

使用Seastar 框架

SCYLLA 使用Seastar框架, Seastar是C++近年發展出來的一種高性能框架,得益於此框架可以更充分運用目前的硬體效能,因此能夠發揮更好的處理效益。

Seastar 是個事件驅動框架(event-trigger framework),並且異步處理(asynchronous),SCYLLA說道目前硬體是以異步方式工作,但是沒有一個可異步處理處理的『軟體』,就無法充分發會其效能,這個軟體就是Seastar。

所以SCYLLA 以異步處理為主軸,Seastar未能及的部分,也是以異步處理去做設計。

充分發揮CPU效能

官方有一段FAQ非常有意思,如下面所敘

I understood Scylla underline Seastar framework use one thread per core, but I see more than two threads per core¶
Seastar creates an extra thread per core for blocking syscalls (like open()/ fsync() / close() ); this allows the Seastar reactor to continue executing while a blocking operation takes place. Those threads are usually idle, so they don’t contribute to significant context switching activity.

意思是說基本上一個cpu core 會開一個thread,但是scylla會多開一個thread。

作業系統基本原理是遇到blocking syscall,要嘛thread就被置換出去,要嘛idle在那邊傻傻乾耗,scylla多出的一個thread就可以專業handle這些會block的的操作,讓原本的thread充分利用CPU分配給它的時間。

這點感覺很像golang的goroutine處理,不浪費在thread context switch 上面,或者傻傻idle不做事。

SCYLLA I/O scheduler

SCYLLA 在對於硬碟的I/O處理上,大體上是建立一個workload的機制,定時偵測讀寫硬碟的延遲時間,去推算最大的可以併發處理request,若request數量大於硬碟可併發處理數量,I/O scheduler會讓後面的request連硬碟都不要進,先在外面排隊,以達到最好的處理效益。

參考資料

ScyllaDB Database Benchmarks

Scylla FAQ

The Scylla I/O Scheduler – Better Latencies Under Any Circumstance


上一篇
Day1. 前言
下一篇
Day3. 安裝
系列文
scylla 從零開始攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言