維運¶
每日交易日的操作 — 啟動 / 停止 / 巡檢 / 排程。
系統組成¶
Tapio 以單一交易日為運作週期,每日清晨開盤前重新啟動。系統透過多個常駐程序(daemon)分工協作,各程序職責單一、相互獨立。
常駐程序一覽¶
| 程序名稱 | 語言 | 職責 |
|---|---|---|
tapio-core |
C++ | 風控中台主服務。管理客戶端連線、委託風控、即時洗價、與期交所 TMP 通訊。 |
tapio-taifex-fetcher |
Go | 定期從期交所 SFTP 伺服器拉取盤前/盤中參數檔(P06–P14、PA7、P39、T90、C01 等),同步至本機供 tapio-core 載入。 |
tapio-mail |
Go | 輪詢主服務寫入的郵件佇列,透過 SMTP 將通知信件(例如 API Key 交付)投遞給投資人。 |
tapio-quote-receiver |
C++ | 接收行情來源的 UDP/Multicast 資料流,寫入共享記憶體(shared memory),供 tapio-core 主服務讀取進行即時洗價。 |
tapio-live-sync |
C++ | 接收券商後台盤中出入金異動通知,同步更新 tapio-core 的保證金參照值;同時提供外部系統 DropCopy 串接介面,轉發委託/成交回報。 |
券商專屬程序
視期貨商不同,系統另會提供專屬的常駐程序或工具。
資料流架構¶
flowchart TD
subgraph 期交所
SFTP[SFTP 伺服器\n盤前/盤中參數檔]
TMP[TMP 交易主機]
end
subgraph 行情
QSrc[行情來源\nUDP / Multicast]
end
subgraph Tapio 主機
Fetcher[tapio-taifex-fetcher]
QR[QuoteReceiver]
SHM[(行情快取)]
DataDir[(盤前參數)]
Main[Tapio]
Spool[(郵件佇列)]
Mailer[tapio-mail]
LS[LiveSync]
end
subgraph 外部
SDK[客戶端 SDK]
Admin[tapioctl\n管理介面]
SMTP[SMTP 中繼\nRelay]
Email[投資人 Email]
DropCopy[外部系統\nDropCopy]
BrokerBack[券商後台\n出入金系統]
end
SFTP -->|拉取參數檔| Fetcher
Fetcher --> DataDir
QSrc -->|UDP/Multicast| QR
QR --> SHM
SHM --> Main
DataDir --> Main
SDK -->|TCP| Main
Main -->|TCP| TMP
Main --> Admin
Main --> LS
Main --> Spool
Spool --> Mailer
Mailer --> SMTP
SMTP --> Email
BrokerBack -->|出入金異動| LS
LS -->|更新保證金參照| Main
LS --> DropCopy
章節¶
- 交易日 lifecycle — 從前一日收尾到當日開盤的完整時間序列
- tapioctl 指令參考 — 全部 subcommand 的語意 + 範例
- 目錄與 log 配置 —
/opt/Tapio/結構、log 路徑、保留策略 - 盤前檔投遞與轉檔 — broker 投檔目錄、tapioctl preopen 處理流程
- 定期操作 — SFTP 帳密更換、SMTP 設定變更等週期性維護
一日操作快速參考¶
| 時段 | 動作 | 指令 |
|---|---|---|
| 06:00 | 停掉昨日所有 daemon | tapioctl stop core && tapioctl stop live-sync && tapioctl stop taifex-fetcher |
| 06:01 | 停行情 | tapioctl stop quote-receiver |
| 06:05 | 切交易日 | tapioctl rollover |
| 06:30 | 清行情快取 + 重啟 fetcher | tapioctl quote-clean && tapioctl start taifex-fetcher |
| 06:31 | 重啟行情 | tapioctl start quote-receiver |
| 09:07 | 跑盤前 | tapioctl preopen |
| 09:08 | 啟動 live-sync | tapioctl start live-sync |
| 09:09 | 啟動 Tapio | tapioctl start core |
詳細時序見 交易日 lifecycle。
操作前 / 故障時的巡檢¶
第一步:確認各 daemon 狀態
輸出範例:
NAME STATE PID UPTIME STARTED RSS LAST EXIT BINARY
core running 1095368 3h21m 2026-04-23 09:09:01 404M - tapio-core
quote-receiver running 1093558 5h59m 2026-04-23 06:31:00 5M - tapio-quote-receiver
live-sync running 1095326 3h22m 2026-04-23 09:08:01 14M - tapio-live-sync
mail crashed - - - - exit=2, 1d19h ago tapio-mail
taifex-fetcher running 1093502 6h0m 2026-04-23 06:30:01 10M - tapio-taifex-fetcher
---
4/5 running, 1 crashed
確認全部 running 後再進行後續操作。若發現 crashed 或 stopped,再以 tapioctl check 深入診斷:
# 全套自動巡檢(盤前用)
tapioctl check all
# 單項
tapioctl check pfiles # 期交所產品檔齊全?
tapioctl check config # Tapio.toml 可讀?
tapioctl check disk # 磁碟使用率
tapioctl check logs # log 還在寫嗎?盤中?
tapioctl check tcpdirect # Onload / TCPDirect / NIC 設定
完整對照見 故障排除 → tapioctl check。