08 收尾
证明本专题已完成、停止本地运行的组件,并理解生产化扩展路径。
macOS terminal: Run workshop commands in Terminal using zsh or bash.
最终验证
SELECT
(SELECT uniqExact(condition_id) FROM polymarket.markets FINAL) AS markets,
(SELECT count() FROM polymarket.price_ticks) AS ticks,
(SELECT count() FROM polymarket.trades_clean) AS trades,
(SELECT count() FROM polymarket.market_midpoints_1m) AS midpoint_minutes,
(SELECT max(event_at) FROM polymarket.price_ticks) AS newest_tick;当 markets、ticks 和 midpoint_minutes 都大于零,并且 newest_tick 与本次运行
相符时,你就完成了。交易清淡的实时数据源确实可能没有任何已对账的
交易;fixture 模式则总会产生交易数据。
你构建了什么
- 无需任何凭据的公开市场发现;
- 一条带心跳、停滞检测、重连和 REST BBO 回退的实时 WebSocket 链路;
- 一条带重叠窗口和确定性 ID 的公开交易对账链路;
- 围绕真实过滤条件设计的、带类型的 ClickHouse 表;
- 一个在插入时计算的一分钟报价中间价聚合;以及
- 一个 Cloud 仪表板,或与之等效的已保存 SQL 可视化。
停止本地采集器
docker compose --env-file .env.polymarket down这会删除这个无状态容器。Cloud 中的数据和已保存的查询都会保留。
可选的 Cloud 清理
只有当你不再需要实训数据时才执行:
DROP DATABASE polymarket;按你所在组织的策略,通过 clickhousectl 或控制台删除 Cloud 服务,或让它进入空闲状态。
这套方案在生产中如何扩展
本课程之所以直接写入,是因为数据源是 HTTP/WebSocket API,而且数据量 很小。如果生产环境中已有一个中继在向 Kafka、Kinesis、Pub/Sub 或其他 受支持的流发布数据,就使用 ClickPipes,以获得托管的 offset 管理、schema 映射、背压处理和 错误处理。不要只为了让方案看起来更"分布式"就加一个消息代理。