aerospike 使用總結

飛豬潛水發表於2016-05-19

使用aero近一年的時間,坑踩了一些,也做了一些嘗試,總的來看,aero是個很不錯的分散式儲存服務。

我們使用的是索引在記憶體,資料在磁碟的方式,持久化儲存使用,心跳使用的是mesh方式,因為涉及到跨網段,跨機房,使用的是社群版本,基線是3.6.0,後續新搭建的服務一直使用最新的穩定版本,在aero的官網上可以看到,社群版本的更新速度非常快,說明之前bug還是比較多的。。

aero官網:http://www.aerospike.com/


使用中也有一些小的注意點:

1. 一次分配好儲存空間和使用的資料型別,因為aero叢集擴容和相容都會非常慢,涉及到大資料量的遷移,遷移過程中,aero叢集的響應時間有抖動。

2. 對於複雜資料型別-LDT資料型別,最好區分可丟和不可丟資料,並且不要使用多列,每個key一列,這樣在高併發下可以避免key衝突的機率。

3. string型別的資料和CDT資料使用的namespace最好獨立開。

4. 只有在string型別資料上可以使用多列,並且可以一起獲取。

5. 對於大儲存機器,一個機器部署多個服務,會比一個機器只起一個服務,用滿整個磁碟要好,因為資料恢復的過程中會重現建立記憶體索引,1T的資料恢復會非常非常慢,多個服務是為了把單服務的資料減少,加快啟動速度。

6. 可以考慮搭建多個aero叢集,比如10臺機器,可以搭建一個叢集,每個上面一個aero服務,也可以搭建兩個機器,每個叢集上面各一個aero服務,最大的好處就是減少key衝突,減少單個叢集的資料儲存,在叢集擴容減容的時候,只有一個叢集會抖動,而不是所有服務都抖動。類似於分庫的方式。