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-1022ParseCryptoToExchangeCache/RebuildCryptoBrokerCache/MergeCryptoExchangesToBrokerCacheQotRealTimeData.cpp:1024-1063UpdateLv2ProbToBrokersIndexNNBiz_Qot_CryptoExchange.cpp:131-141SetLv2RelatedExchange写完后 触发IOMEvent::NotifyEvent(NN_OMEvent_Qot_CryptoExchange_IndexUpdate)+ReSubCryptoOrderBook.
Structs§
- Crypto
Exchange Cache - Crypto LV2 多交易所缓存. 包装 3 个 DashMap + 反向索引重建逻辑.
- Crypto
Exchange Info - Daemon-side snapshot of one entry in CMD18012
ExchangeInfo.
Type Aliases§
- Broker
Exchange Key (stock_id, broker_id)— broker-level exchange list key.- Exchange
Cache Key (stock_id, lv2_prob)— exchange-level cache key.