開發與維運

Cassandra4.0版本新功能揭祕

8月份的社區線上開發者活動,邀請到的演講嘉賓蔡一凡老師是Cassandra貢獻者之一,其所在公司部署了全球最大的Cassandra集群節點數量。
本次演講介紹了Cassandra 4.0版本中的新功能:審計日誌、零拷貝串流、Netty節點間通信、虛擬表、增量式修復、臨時副本等。
1、審計日誌:
將數據庫所有操作記錄到一個本地文件,包括authentication,所有的CQL請求,不論成功與否都會被記錄下來。用途廣泛,如利用記錄來debug線上問題,也可以輔助測試。4.0版本中同步推出的full query logger就是用審核日誌來實現的,這些由full query logger生成的記錄可用來做回放測試。另外,也可以幫助企業做合規管理,可作為企業的審核依據。
2、零拷貝串流:
零拷貝串流是指在串流時無需將數據讀到內存後再寫入到網絡,發送方和接收方可以直接通過網絡發送和接收數據。從而顯著提升性能(3-5倍的速度),遠小於普通串流所需的時間,並大大減少內存和CPU的佔用。在Cassandra中,串流會被應用於很多場景。基本所有數據在集群中被複制時都可用到。
零拷貝串流可幫助縮短節點的恢復時間,降低多個節點同時處於不可用狀態的概率。可以幫助降低運維成本。如加速節點數據遷移速率。
3、Netty節點間通信
在4.0版本中,節點間通信改成了Netty。I/O是非阻塞的,不再按節點分配線程。
Netflix通過測試192個節點的Cassandra集群,對比4.0和3.0版本,發現4.0版本的延遲平均值減少40%,99分位的延遲減少了60%,吞吐量提升約2倍。
另外,節點間加密通信擴展性更高,主要是得益於Netty的tcnative。它跟JDK自帶的加密性能相比,大概提升了有4倍。
4、虛擬表
虛擬表是基於Cassandra內部的一些API實現的,可以把虛擬表當作Cassandra的一個接口。目前虛擬表是隻讀的。每一個虛擬表都是每個節點所特有的,也就是說虛擬表是local的。有了虛擬表,我們可以不用JMX,通過CQL來進行查詢虛擬表,從而獲取Cassandra的系統狀態和當前配置。
5、增量式修復
增量式修復在2.1版本中就已推出。但這個功能存在一些問題,不適用於生產環境。Cassandra 4.0把之前的很多問題修復了。增量式修復將數據分為“已修復”和“未修復”兩個部分,每次修復時只修復“未修復”的部分,不再修復已修復過的數據。從而減少每次修復的時間,只需要幾分鐘即可完成。
6、臨時副本
臨時副本是4.0版本的試驗性功能,並不推薦用在生產環境中。臨時副本節點只保存沒有修復的數據,在修復之後,這些數據就會被臨時副本節點刪除。這個功能最好是和增量式修復一起使用,這樣可以很快地從臨時副本節點中將未修復的數據修復,之後再刪除。這樣一來,可以認為臨時節點並不佔用存儲空間。
臨時副本節點帶來的好處是減少存儲空間,臨時節點只保留臨時數據,數據量比較小,修復完就刪除,所以這個節點會使用更少的CPU和I/O。

Leave a Reply

Your email address will not be published. Required fields are marked *