跳轉到

維運

每日交易日的操作 — 啟動 / 停止 / 巡檢 / 排程。

系統組成

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

章節

  1. 交易日 lifecycle — 從前一日收尾到當日開盤的完整時間序列
  2. tapioctl 指令參考 — 全部 subcommand 的語意 + 範例
  3. 目錄與 log 配置/opt/Tapio/ 結構、log 路徑、保留策略
  4. 盤前檔投遞與轉檔 — broker 投檔目錄、tapioctl preopen 處理流程
  5. 定期操作 — 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 狀態

tapioctl status -v

輸出範例:

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 後再進行後續操作。若發現 crashedstopped,再以 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