Apache Kafka 是一个经过实战考验的分布式流处理平台,在金融行业中很受欢迎,用于处理任务关键型事务工作负载。Kafka 处理大量实时市场数据的能力使其成为交易、风险管理和欺诈检测的核心基础设施组件。金融机构使用 Kafka 从市场数据源、交易数据和其他外部来源流式传输数据,以推动决策。
用于摄取和存储财务数据的常见数据管道涉及将实时数据发布到 Kafka,并利用 Kafka Connect 将其流式传输到数据库。例如,市场数据团队可能会不断更新 Kafka 证券的实时报价,交易团队可能会使用该数据来下达买入/卖出订单。然后,处理后的市场数据和订单可以保存到时间序列数据库中以供进一步分析。
在本文中,我们将创建一个示例数据管道,以说明这在实践中是如何工作的。我们将轮询外部数据源(FinnHub)以获取股票和ETF的实时报价,并将该信息发布到Kafka。然后,Kafka Connect将获取这些记录并将其发布到时间序列数据库(QuestDB)进行分析。
先决条件
- Git
- Docker Engine: 20.10+
- Golang: 1.19+
- FinnHub API Token
设置
若要在本地运行示例,请先克隆存储库。
代码库分为三个部分:
- Golang 代码位于存储库的根目录。
- Kafka Connect QuestDB 映像和 Docker Compose YAML 文件的 Dockerfile 位于 docker 下。
- Kafka Connect 接收器的 JSON 文件位于 kafka-connect-sinks 下。
构建 Kafka Connect QuestDB 映像
我们首先需要使用 QuestDB