前言
Prediction Market(预测市场)是 Web3 领域重要的应用场景之一。Polymarket 作为最大的去中心化预测市场平台,提供 Gamma、Data、CLOB 三套 API 接口供开发者消费数据。
但要基于 Polymarket 数据构建一个面向用户的前端应用,需要解决几个实际问题:
- 数据获取:API 有频率限制,单次查询量有限,需要周期性同步
- 数据一致性:多 API 之间的数据需要关联和校验,避免状态不一致
- 实时性:用户需要看到市场的最新成交和结果,依赖 Kafka 事件流
- 搜索能力:PostgreSQL 不适合全文搜索,需要用 Elasticsearch 做聚合查询
- 性能:API 请求和数据库查询需要缓存层支撑
本文介绍的这套系统正是为解决这些问题而生的——一个纯后端 Worker 服务,负责从 Polymarket 拉取数据、持久化存储、实时处理事件,最终为前端提供一致的、高性能的数据底座。
一、整体架构
系统是一个纯 Worker 架构——没有 HTTP API,没有前端,只有一个后台进程持续运行。
flowchart LR
subgraph Input [数据源]
G[Polymarket Gamma API
事件/市场/标签/翻译]
D[Polymarket Data API
排行榜/持仓/交易]
C[Polymarket CLOB API
订单簿/价格]
K[Kafka
链上事件流]
end
subgraph Worker [Worker 服务]
J[定时调度器
22 个同步Job]
CON[Kafka Consumer
实时事件消费]
end
subgraph Storage [存储层]
PG[(PostgreSQL
prediction schema)]
ES[(Elasticsearch
web3_prediction 索引)]
RD[(Redis
缓存/队列)]
end
Input --> Worker
Worker --> Storage
Storage --> FE
more >>