前面幾天都在研究怎麼寫策略,今天開始,要來研究如何更新每日的收盤資料。
在軟體業打滾的日子也十多年啦,從菜鳥 RD 到小主管的路上見過的工程師大概就分兩種:「什麼都自己幹」的硬漢以及「喔,這個套件不錯喔,來試試」的 Geek。寫程式,老闆賺得到錢,他不會管你用什麼方法寫,所以用什麼方法,沒有好壞或對錯之分,自己爽最重要!
先前在建立歷史盤後資料 Index 的時候,我是用 Python 打証交所 API ,然後把資料整理成 Elasticsearch 需求的格式上傳。但在研究 ES 的路上,技術顧問喬叔說:「既然用了 Elasticsearch,你更應該學學 Logstash」。不要考慮太多,研究就對了!於是,我的系統方塊圖修改如下:
第一步,還是先來看看 Logstash 是什麼吧。
Logstash 是開源的軟件,用來搜集、轉換數據,然後把資料送到根據需求設計的收藏庫 (Stash),我猜用這個字的意思是不想跟傳統資料庫混淆吧,抽象了一個層次。
初步看來, Logstash 是可以滿足我的需求,我要取的 Data 是由証交所提供的 HTTP API,經過 Parsing,整理(Transform) 後,打進 Elasticsearch。
我使用的電腦是 Macbook ,但我不想讓太多實驗與學習性質的東西直接安裝在我的原生系統上,所以我打算使用 Docker。用官方教學的 Docker 安裝方式,很容易就可以讓 Logstash 跑起來,但少了一點學習的味道。
先拉一版最新的 ubuntu image:
docker pull ubuntu
起一個 Container:
docker run ubuntu-logstash -it ubuntu bash
然後在 ubuntu-logstash 中進行接下來的的安裝。首先是 openjdk:
apt-get install openjdk-8-jdk
接下來無腦的照官方文件安裝即可:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install logstash
最後來確認一下安裝:
/usr/share/logstash/bin# ./logstash --version
logstash 7.9.2
今天先到這邊,明天再繼續囉。