Skip to main content

Module crypto_exchange_cache

Module crypto_exchange_cache 

Source
Expand description

v1.4.110 codex QOT Phase 4 Slice 7: Crypto LV2 多交易所缓存 (CMD18012). 跟 C++ INNData_Qot_CryptoExchange + QotRealTimeData 三 map 对齐. v1.4.110 codex QOT Phase 4 Slice 7: Crypto LV2 多交易所缓存.

对齐 C++ APIServer/Business/Quote/QotRealTimeData.cpp 三个 map + INNData_Qot_CryptoExchange::SetLv2RelatedExchange 缓存写入:

  • by_broker (m_mapCryptoStockBrokerExchange): (stock_id, broker_id) → Vec<CryptoExchangeInfo> — 18012 response 写入, 表示该 broker 看该 stock 有哪些 LV2 关联交易所. 通过 GetLv2RelatedExchangeList(stKey) 查询.
  • lv2_exchange_cache (m_mapLv2ExchangeCache): (stock_id, lv2_prob) → CachedOrderBook — 单 exchange 的原始 LV2 摆盘缓存. 收到 push 时按 ExchangeCacheKey 索引写入.
  • lv2_prob_to_brokers (m_mapLv2ProbToBrokers): (stock_id, lv2_prob) → HashSet<broker_id> — 反向索引. 收到 exchange-level push 时, O(1) 找出 所有受影响 broker, 然后 per-broker rebuild 调 merge_multiple_order_book_caches.

§流程图

GetOrderBookHandler: crypto LV2 第 1 次订阅
  → fetch_and_cache_exchanges (CMD18012, PT 过滤)
    → cache.set_lv2_related_exchange((stock_id, broker_id), Vec<info>)
      → 内部更新 by_broker + 重建 lv2_prob_to_brokers
    → resubscribe with prob2_v2 (level=60) for each lv2_prob

Backend push exchange-level LV2 orderbook:
  → push_parser 识别 SBIT_US_LV2_ORDER (17) + sec_info.is_crypto + lv2_type
    → cache.set_lv2_exchange_cache((stock_id, lv2_prob), s2c)
    → cache.get_brokers_affected_by_lv2_prob((stock_id, lv2_prob)) → HashSet
      For each broker in HashSet:
        → cache.exchanges_for_broker((stock_id, broker_id)) → Vec
        → 收集所有 exchange caches → merge_multiple_order_book_caches(40)
        → qot_cache.update_order_book_broker(StockKey{stock_id, broker_id})
        → cold-cache wait notify (Slice 6c)

§C++ 参照

  • QotRealTimeData.cpp:918-1022 ParseCryptoToExchangeCache / RebuildCryptoBrokerCache / MergeCryptoExchangesToBrokerCache
  • QotRealTimeData.cpp:1024-1063 UpdateLv2ProbToBrokersIndex
  • NNBiz_Qot_CryptoExchange.cpp:131-141 SetLv2RelatedExchange 写完后 触发 IOMEvent::NotifyEvent(NN_OMEvent_Qot_CryptoExchange_IndexUpdate) + ReSubCryptoOrderBook.

Structs§

CryptoExchangeCache
Crypto LV2 多交易所缓存. 包装 3 个 DashMap + 反向索引重建逻辑.
CryptoExchangeInfo
Daemon-side snapshot of one entry in CMD18012 ExchangeInfo.

Type Aliases§

BrokerExchangeKey
(stock_id, broker_id) — broker-level exchange list key.
ExchangeCacheKey
(stock_id, lv2_prob) — exchange-level cache key.