使用Node.js和Cassandra,構(gòu)建加密貨幣價(jià)格跟蹤器
譯文【51CTO.com快譯】自15年前數(shù)據(jù)技術(shù)領(lǐng)域出現(xiàn)大爆炸以來,當(dāng)時(shí)催生出了像Hadoop這樣迎合四個(gè)“V”(數(shù)量、種類、速度和準(zhǔn)確性)的技術(shù),這種現(xiàn)象越來越普遍:使用擁有專門功能的數(shù)據(jù)庫(kù),以滿足不同類型的數(shù)據(jù)和使用模式。現(xiàn)在許多公司使用圖數(shù)據(jù)庫(kù)、時(shí)間序列數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)及其他數(shù)據(jù)庫(kù),處理不同的客戶和內(nèi)部工作負(fù)載。
Apache Cassandra™是一種寬列的NoSQL數(shù)據(jù)庫(kù),很適合用于從物聯(lián)網(wǎng)傳感器、GPS設(shè)備、事務(wù)日志和任何時(shí)間序列應(yīng)用等更多應(yīng)用獲取數(shù)據(jù)的僅追加、寫入密集型工作負(fù)載。許多這些應(yīng)用需要與可視化引擎相結(jié)合,以創(chuàng)建報(bào)告和儀表板。由于大多數(shù)可視化庫(kù)使用JavaScript編寫,因此使用Node.js與數(shù)據(jù)庫(kù)和可視化引擎進(jìn)行交互是個(gè)好主意。
本教程將介紹如何使用小型Node.js應(yīng)用程序從API獲取加密貨幣數(shù)據(jù),并將該數(shù)據(jù)持續(xù)攝入到Cassandra中,供下游消費(fèi)。您可以將來自Cassandra的數(shù)據(jù)饋送給眾多應(yīng)用,比如加密貨幣交易平臺(tái)、加密貨幣價(jià)格監(jiān)測(cè)和警報(bào)等。
先決條件
在開始學(xué)習(xí)本教程之前,您需要以下內(nèi)容:
- Node.js—本地Node.js安裝,隨帶默認(rèn)軟件包管理器npm。
- Git—克隆含有本教程代碼的GitHub代碼存儲(chǔ)庫(kù)。
- DataStax Astra—用于啟動(dòng)無(wú)服務(wù)器Cassandra數(shù)據(jù)庫(kù),與API或驅(qū)動(dòng)程序一起使用。
- CoinGecko-API—用于訪問CoinGecko加密貨幣數(shù)據(jù)的Node.js庫(kù)。
克隆存儲(chǔ)庫(kù)
您可以使用git clone命令克隆Cassandra Node.js Cryptotracker的GitHub存儲(chǔ)庫(kù):
- git clone git@github.com:kovid-r/cassandra-nodejs-cryptotracker.git
克隆存儲(chǔ)庫(kù)后,首要任務(wù)是安裝package.json文件和package-lock.json文件中指定的Node.js依賴項(xiàng)。npm將使用以下命令在存儲(chǔ)庫(kù)目錄中安裝依賴項(xiàng):
- npm install
這些說明也存在于存儲(chǔ)庫(kù)的README文件中。
配置Astra
創(chuàng)建數(shù)據(jù)庫(kù)
在運(yùn)行應(yīng)用程序之前,您需要注冊(cè)由Apache Cassandra提供支持的DataStax Astra,并啟動(dòng)Cassandra數(shù)據(jù)庫(kù)。
雖然價(jià)格信息會(huì)隨著您改變?cè)铺峁┥毯偷貐^(qū)而變化,但對(duì)于概念證明、甚至小型生產(chǎn)應(yīng)用程序而言,您只需要Astra已經(jīng)為用戶提供的每月25美元的免費(fèi)積分,這可讓您獲得約40 GB 的免費(fèi)存儲(chǔ)空間、4000萬(wàn)次讀取和500萬(wàn)次寫入。無(wú)需信用卡即可注冊(cè),只需使用谷歌或GitHub登錄即可。
點(diǎn)擊Create Database選項(xiàng),您進(jìn)入以下頁(yè)面:可以在全球三大云提供商(谷歌云、AWS和Azure)中的任何一個(gè)云上創(chuàng)建數(shù)據(jù)庫(kù)。您需要提供數(shù)據(jù)庫(kù)名稱(節(jié)點(diǎn)應(yīng)用程序)和密鑰空間名稱(coingecko)。請(qǐng)使用指定的名稱。
初始化數(shù)據(jù)庫(kù)
想首次訪問數(shù)據(jù)庫(kù),請(qǐng)使用CQLSH瀏覽器內(nèi)控制臺(tái),如下圖所示:
如果數(shù)據(jù)庫(kù)中沒有密鑰空間,使用該控制臺(tái)運(yùn)行兩個(gè)命令來創(chuàng)建,并在指定的密鑰空間創(chuàng)建表。表的結(jié)構(gòu)在存儲(chǔ)庫(kù)中的initialize.sql文件中預(yù)定義。來自CoinGecko API調(diào)用的數(shù)據(jù)將出現(xiàn)在該表中。
下載Secure Bundle
您需要將DataStax Secure Bundle zip文件下載到Node.js應(yīng)用程序目錄。確保您的瀏覽器在下載文件時(shí)沒有解壓縮文件。
您需要為后面步驟中的配置提供該文件的路徑;想了解有關(guān)Secure Bundle的更多信息,請(qǐng)?jiān)L問DataStax Astra的官方文檔。
生成身份驗(yàn)證令牌
下一步是生成身份驗(yàn)證令牌。為此,點(diǎn)擊頂部菜單欄上的Billing選項(xiàng)。將會(huì)出現(xiàn)下圖所示的屏幕:
進(jìn)入到左側(cè)菜單欄中的Token Management選項(xiàng),選擇Select Role下拉菜單中的R/W User角色,然后按Generate Token。
您將看到以下帶有身份驗(yàn)證令牌的屏幕。下載CSV格式的Client ID、Client Secret和Token,或直接復(fù)制它們。
運(yùn)行Cryptotracker
使用Npm Config進(jìn)行身份驗(yàn)證
現(xiàn)在,我們可以繼續(xù)運(yùn)行Node.js Cryptotracker應(yīng)用程序了。在本教程中,我們使用config軟件包避免在代碼中存儲(chǔ)令牌信息。我們?cè)诖鎯?chǔ)庫(kù)config/default.json中包含了一個(gè)文件,看起來這樣:
想驗(yàn)證身份,按照說明替換該JSON文件中的secureConnectBundle、用戶名和密碼的值,但確保不要將其提交到代碼庫(kù)中。
運(yùn)行Npm Start
如果您已正確配置好一切,現(xiàn)在應(yīng)該能夠從Node.js應(yīng)用程序目錄運(yùn)行以下命令了:
- npm start
Node.js應(yīng)用程序?qū)⑦\(yùn)行40秒,命中CoinGecko API。可以通過找到index.js文件中的這兩行,并重新配置主函數(shù)調(diào)用來更改它。
運(yùn)行npm start幾次后,您可以前往Astra網(wǎng)站查看您的配額已使用多少,如下圖所示:
您還可以登錄CQL控制臺(tái),編寫CQL查詢,從coingecko.coin_prices表中獲取一些數(shù)據(jù),如下圖所示:
如果您想獲取其他貨幣的價(jià)格,可以將不同的參數(shù)傳遞給getCoinPrice方法變量:coinName和coinSymbol。
連接其他應(yīng)用程序
其他應(yīng)用程序可以使用來自Cassandra的數(shù)據(jù)。DataStax Astra支持C#、Python、Node.js、Java和C++的驅(qū)動(dòng)程序。您可以將Grafana等流行的可視化引擎與Astra無(wú)縫集成。
結(jié)語(yǔ)
本教程介紹了如何使用Cassandra作為時(shí)間序列數(shù)據(jù)庫(kù),使用Node.js應(yīng)用程序來獲取加密貨幣價(jià)格變動(dòng)信息,還介紹了使用您首選的云提供商在云端配置DataStax Astra數(shù)據(jù)庫(kù)。
原文標(biāo)題:Build A Crypto Price Tracker Using Node.js and Cassandra,作者:Kovid Rathee
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】