[資訊] Python 課程 ( from FinMind 團隊 )
大家好,我是 FinMind 創始人
https://github.com/FinMind/FinMind
目前預計在3/21,推出線上課程
課程內容是關於
Rabbitmq、Celery 分散式架構
MySQL 資料庫
Docker Swarm
Linode 雲端(一個月最低只要 5 美金,就有一台雲端機器)
Grafana 監控系統
以上內容,基本上就是 FinMind 專案目前一部分的架構,
相信不少公司也有用到相關技術
在 3/7 以前購買,有機會獲得,在天瓏與 momo 都是熱門的書籍
Python 大數據專案 X 工程 X 產品 資料工程師的升級攻略
本書是我濃縮工作 3 年與開發 FinMind 的技術分享
最後本課程還會分享 20~30 隻的台股金融資料爬蟲程式
除了做開源專案,也將一路上的所學,開源出來分享給大家
以下是課程連結,折扣碼 sam200
https://mastertalks.tw/products/python-dfa?ref=sam
如果對於 Data 工作,有其他想了解的,也歡迎寄信給我
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.64.4 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1646540483.A.D6B.html
推
03/07 08:10,
4年前
, 1F
03/07 08:10, 1F
推
03/07 09:57,
4年前
, 2F
03/07 09:57, 2F
推
03/09 14:31, , 3F
03/09 14:31, 3F
推
03/10 00:54, , 4F
03/10 00:54, 4F
→
03/12 00:42, , 5F
03/12 00:42, 5F
推
03/12 13:32, , 6F
03/12 13:32, 6F
課程中會講解,如何破解驗證碼,如何破解 google recaptcha
並以券商分點為範例
推
03/12 20:06, , 7F
03/12 20:06, 7F
推
03/13 00:17, , 8F
03/13 00:17, 8F
→
03/13 01:44, , 9F
03/13 01:44, 9F
推
03/19 14:29, , 10F
03/19 14:29, 10F
但以上技能,rabbitmq、flower、分散式、Docker、mysql、grafana 等等
對爬蟲都有非常大的加分,
至少我開發 FinMind 的經驗,以上工具都是陸陸續續使用到
我一開始也是單機版本,最後不斷拓展到現在
※ 編輯: f496328mm (114.44.18.140 臺灣), 03/20/2022 03:26:08
推
03/20 04:18, , 11F
03/20 04:18, 11F
→
03/20 04:18, , 12F
03/20 04:18, 12F
1. 更新資料方面,因為是走分散式,所以效能不是問題,那麼既然效能不是問題,
就用 scheduler 持續做爬蟲,資料就會更新了
2. 高流量部分,我的書跟課程,都有沾到邊,但並沒有"專注"介紹 api 高流量場景,
畢竟書跟課程名稱,都不是以高流量 api 作為出發點
我在這先簡短回答
書有講到 docker swarm、fastapi、traefik 做 api
課程講到 grafana、promethus 做監控,
那我如何結合這些技術做高流量呢??
下圖是目前 FinMind 用 "grafana" 對於 api 流量的監控
https://i.imgur.com/uUO4r06.png

可以看到,圖1 & 圖2,一分鐘最多 3,500 次 request
流量統計與 DNS,是依靠圖 3,"traefik"
但我認為還沒到高流量,不過足以應付目前流量
畢竟需求沒到,開太多機器做 loading balance,只是噴更多 $$$ 而已
關於這部分的架構,
FinMind 是以 docker swarm 為主要架構,因為這內建 loading balance
只要多開機器,就可實現負載平衡,
api 是用 fastapi 框架
資料庫是時序資料庫,dolphindb
但時序資料庫水有點深,這部分還在安排進度,
未來可能會寫文章 or 影片做介紹
( 關於 dolphindb 效能,先講結論,我比較過 kdb+、influxdb 等各個知名的 TSDB,
dolphindb 最強,
市面上有些課程是教 mongodb,我只能說,時序資料,NoSQL 比不上 TSDB )
總體來說,loading balance 能讓你用多台機器分散 api request
那基本上,不再受限於單一機器瓶頸,
流量問題,就會轉變成以下幾點
1. DB loading (這點我用時序資料庫去解,同時資料庫也做分散)
2. 關注分散式中,各個 api 機器的效能,是否達到瓶頸
例如 CPU、Memory、IO Rate、Traffic 流量、Process 上限等等
以上可以用 netdata 去監控機器 loading,搭配 promethus、grafana
如下圖,FinMind 的監控
https://i.imgur.com/V93cXcS.png

如果想優化 code,也可以用 line_profiler,去分析瓶頸在哪
有興趣的話,以下是我們的 FB 討論區
https://www.facebook.com/groups/401634838071226
基本上我們不藏私,技術問題都歡迎討論 (我連內部監控 dashboard 都公開了XD)
→
03/20 08:59, , 13F
03/20 08:59, 13F
→
03/20 08:59, , 14F
03/20 08:59, 14F
→
03/20 09:01, , 15F
03/20 09:01, 15F
※ 編輯: f496328mm (114.44.18.140 臺灣), 03/20/2022 16:46:00
推
03/20 17:23, , 16F
03/20 17:23, 16F
推
03/23 18:36, , 17F
03/23 18:36, 17F
Python 近期熱門文章
PTT數位生活區 即時熱門文章