Aerospike(下一代NoSQL數據庫)-從需求到安裝

Aerospike(NoSQL)-從需求到安裝

一、需求與場景

業務需要從數據庫中獲取產品的相關信息,搜索池為三張表總共670萬行記錄,所佔空間為1.5g,鍵值集容量從200到2500之間分佈,命中率為25%到80%,由於業務原因無法減少鍵值集,而公司內部規劃沒有采用分佈式數據庫架構。為減少搜索相關信息階段的時間,需要將從MySQL等關係型數據庫中的搜索壓力轉換到內存數據庫。

我們的業務場景需要NoSQL數據庫在每個業務步驟進行上下文相關內容存取,數據量較大,不強調一致性,可以容忍數據丟失或出現髒數據,每次搜索鍵值集較大,需要有批量讀的功能,以及穩定的搜索時間範圍(除網絡延遲之外),同時,需要控制成本。

二、Aerospike的特性

Aerospike的官方定義:Next Generation, NoSQL Data Platform。(下一代NoSQL數據平臺)

Aerospike的官方描述:Powering real-time, extreme scale data solutions that require five-9’s+ uptime, predictable performance and operational simplicity。(某些數據解決方案需要5個9的正常運行時間、可預測的性能以及操作的簡單性,而Aerospike恰恰支持這樣實時的、極端規模的數據解決方案。)

官方文檔:https://www.aerospike.com/docs/

因為當前有很多性能不錯的NoSQL數據庫可供選擇,那麼我為什麼要選擇Aerospike呢?

在看到官方簡介之前,我是無從下手的。不過,有了這麼高大上的定義,我瞬間有了方向。既然Aerospike 說自己是下一代NoSQL數據平臺,那麼我有個疑問,那下一代數據庫的定義是什麼樣的呢 ?有什麼特點嗎?從它對自己性能的自信,我很好奇它採用了什麼樣的架構什麼樣的機制做到這樣的性能呢?會不會存在打臉的情況呢?

為了防止自己對Aerospike發表先入為主的意見,那麼我就先從它的官方文檔開始,看看它自己是怎麼解釋自己的特點以及它對自己定義的由來。同時為了自己的書寫體驗(避免它有王婆賣瓜的傾向可能會誤導我的情況),我就將它描述中所有的形容詞去掉,只看事實。

1.穩定性及可靠性。通過三個方面來達到這個目的,第一,5個九的運行時間;第二,動態的集群管理機制;第三,強一致性。

2.可預測性能。通過三個方面來達到這個目的,第一,獲得專利的閃存優化存儲層;第二,通過基於ML的實時決策支持高數據攝取率;第三,拓展到十億兆字節規模。

3.

減少複雜性及總擁有成本。通過三個方面來達到這個目的,第一,解決服務器拓展問題;第二,使用低成本的Flash和PMEM來取代DRAM;第三,能在任何複雜的生產環境部署。

假設,Aerospike官方的聲明具有比較高的可信度,那麼,在看到使用Aerospike可以減少複雜性以及總擁有成本的特點時,我們便有了決定(因為窮,只能節衣縮食),畢竟使用SSD+Memmory的方式比單純使用Memmory要划算得多。同時,官方也提供了Aerosipke的監控工具,便於我們運維。剩餘的信息官方說明已經很詳細了,要用中文再寫一遍的話,就有點反覆造輪子的意思。上面三點已經綁定鏈接,可以直接跳轉到相關的官方頁面。

補充一下,在官方對可預測性能的說明中,有與Cassandra、Redis、DynamoDB、Couchbase的基準測試,以及提供了一些選擇的建議。如果你有在Aerospike與Redis中有做考慮的話,可以看看Aerospike官方給的參考項。強調一點,很多功能只有企業版才能使用,當然是需要商業許可的。

那麼,按照我的需求,到現在就已經可以安裝使用Aerospike了。Aerospike數據庫的限制列表。

三、安裝

官方下載地址:https://www.aerospike.com/download/

企業版與社區版的對比:https://www.aerospike.com/products/product-matrix/


由於企業版本需要與銷售顧問聯繫之後,才能拿到feturekeys.conf。就不做企業版的演示了。下面選擇社區版的壓縮包以及Docker安裝方式進行簡單說明。

1.社區版壓縮包安裝

1.1 環境

Centos7 虛擬機, Xshell遠程連接工具。

1.2 下載:

方式一:在瀏覽器下載,再通過Xshell將壓縮包上傳到虛擬機中。

社區版本下載地址:aerospike-community-edition。(隨便填寫一些信息後,即可下載)

使用Xshell連接虛擬機,切換到你決定放壓縮包的位置,執行rz命令,在彈出框中選擇壓縮包後點擊ok即可(若有打開screen模式,在下載過程中會有問題,可以先退出screen模式,若並未在screen模式中,可忽略該提示)。若無rz命令,可通過下面命令進行安裝

yum install lrzsz

方式二:通過在虛擬機中使用wget下載壓縮包。

使用Xshell連接虛擬機,切換到你決定放壓縮包的位置,執行下面命令

wget -O aerospike.tgz 'https://www.aerospike.com/download/server/latest/artifact/el7'

若是沒有wget方法,可以通過下面命令安裝

yum install wget

1.3 解壓安裝

解壓

tar -xvf aerospike.tgz

安裝(在Centos6和8中,需要安裝一些額外依賴)

cd aerospike-server-community-{latest-version}-el7/

sudo ./asinstall


1.4 啟動、測試

啟動

systemctl start aerospike

測試

[root@192 ~]# aql

Seed: 127.0.0.1 User: None Config File: /etc/aerospike/astools.conf /root/.aerospike/astools.conf

Aerospike Query Client

Version 3.23.0 C Client Version 4.6.9 Copyright 2012-2019 Aerospike. All rights reserved.

aql> show sets

[127.0.0.1:3000] 0 rows in set (0.001 secs)

OK

aql>


2. 社區版Docker安裝

  在虛擬機中執行下面命令

<code>docker run -tid   \\

-v /opt/aerospike/data:/opt/aerospike/data \\

-v /opt/aerospike/usr/lua:/opt/aerospike/usr/udf/lua \\

-v /opt/aerospike/config:/opt/aerospike/etc \\

--name aerospike1 \\

-p 3000:3000 \\

-p 3001:3001 \\

-p 3002:3002 \\

aerospike/aerospike-server /usr/bin/asd --foreground \\

--config-file /opt/aerospike/etc/aerospike.conf/<code>

-v {local-path}:{container-path} : 將本地文件掛載到容器中,是容器內文件於本地可見且可修改,這裡掛載的目的主要為了,第一,定製化配置;第二,將容器內數據備份到本地;第三,為了持久化 lua cache;

-p {local-port}:{container-port}: 綁定本地端口與容器端口看;

--config-file {container-file}:使容器內的指定文件作為容器的配置文件,即使我們掛載的配置文件生效的方式之一

到此,最基本的安裝已經完成。

Aerospike的命令使用文檔


分享到:


相關文章: