落地儲存pika

Federico發表於2017-11-16

官方文件這樣介紹pika

pika是什麼

  pika 是DBA和基礎架構組聯合開發的類Redis 儲存系統,所以完全支援Redis協議,使用者不需要修改任何程式碼,就可以將服務遷移至pika。Pika是一個可持久化的大容量redis儲存服務,相容string、hash、list、zset、set的絕大介面(相容詳情),解決redis由於儲存資料量巨大而導致記憶體不夠用的容量瓶頸,並且可以像redis一樣,通過slaveof命令進行主從備份,支援全同步和部分同步。同時DBA團隊還提供了遷移工具, 所以戶不會感知這個遷移的過程,遷移是平滑的。

與redis比較

pika相對於redis,最大的不同就是pika是持久化儲存,資料存在磁碟上,而redis是記憶體儲存,由此不同也給pika帶來了相對於redis的優勢和劣勢。

優勢:

  • 容量大:Pika沒有Redis的記憶體限制, 最大使用空間等於磁碟空間的大小
  • 載入db速度快:Pika 在寫入的時候, 資料是落盤的, 所以即使節點掛了, 不需要rdb或者oplog,pika 重啟不用載入所有資料到記憶體就能恢復之前的資料, 不需要進行回放資料操作。
  • 備份速度快:Pika備份的速度大致等同於cp的速度(拷貝資料檔案後還有一個快照的恢復過程,會花費一些時間),這樣在對於百G大庫的備份是快捷的,更快的備份速度更好的解決了主從的全同步問題

劣勢:

  • 由於Pika是基於記憶體和檔案來存放資料, 所以效能肯定比Redis低一些, 但是我們一般使用SSD盤來存放資料, 儘可能跟上Redis的效能。

適用場景

  從以上的對比可以看出, 如果你的業務場景的資料比較大,Redis 很難支撐, 比如大於50G,或者你的資料很重要,不允許斷電丟失,那麼使用Pika 就可以解決你的問題。 而在實際使用中,pika的效能大約是Redis的50%。

pika的特點

  • 容量大,支援百G資料量的儲存
  • 相容redis,不用修改程式碼即可平滑從redis遷移到pika
  • 支援主從(slaveof)
  • 完善的運維命令

    安裝使用

    編譯安裝

    1. 安裝必要的lib

    sudo yum -y install snappy-devel protobuf-compiler protobuf-devel bzip2-devel zlib-devel bzip2

    2. 安裝gcc

    sudo yum -y install gcc-c++

    3. 如果機器gcc版本低於4.8,需要切換到gcc4.8或者以上,下面指令可臨時切換到gcc4.8

    sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
    sudo yum install --nogpgcheck devtoolset-2
    scl enable devtoolset-2 bash

    4. 獲取專案原始碼

    git clone --recursive https://github.com/Qihoo360/pika
    cd pika

    5.編譯安裝

    make __REL=1

    6.啟動服務

    ./output/bin/pika -c ./conf/pika.conf
      pika可以配合codis-dashbord和codis-proxy搭建pika叢集,這種方法比較常見。使用pika我們就可以實現用廉價的磁碟代替昂貴的記憶體了。

相關文章