
free-stockdb分布式回测架构设计多台机器如何共享一份本地数据源【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdbfree-stockdb是一款面向 A 股日K、分钟K 与 ETF 分钟数据的本地量化引擎内置局域网服务能力只需指定一台机器同步并持有数据其余机器直接通过网络接入即可让多台机器共享一份本地数据源轻松搭建低成本、数据完全一致的分布式回测集群。一、为什么要多台机器共享一份数据全市场分钟级回测时数据工程往往是第一瓶颈。如果每台电脑都独立走远程 API 拉数据的路线你会遇到三个问题痛点独立部署的后果重复下载单份数据约 5GB仅日线20GB含分钟线N 台机器 N 份下载同步耗时逐股请求远程接口受限于频与风控实测需 3-5 天数据不一致各机器快照时间点不同回测结果不可比、难复现free-stockdb 的思路是更新与研究彻底解耦——只保留一台数据源机器负责同步其他机器作为纯计算节点通过网络共享同一份数据角色数量职责配置要求️ 数据源机器1 台运行数据更新工具 启动 stockdb 服务对外提供 7899 端口磁盘 20GB内存 8GB️ 查询/回测机器N 台只跑策略代码通过 HTTP 读取数据2GB 内存即可起步二、架构总览一条 HTTP 协议打通五种调用整个架构的关键在于数据同步、本地查询、指标计算都在数据源机器上完成对外只暴露一个 HTTP/TCP 端口默认 7899。Python SDK、HTTP API、Excel/WPS、HTML 网页、AI MCP 五种调用方式共用同一套协议因此无论哪台机器、用哪种方式接入接口形态完全一致。 上图为自带的 数据网页版.html 演示界面。注意右上角的接口地址把它改成数据源机器的局域网 IP如192.168.1.10:7899局域网内任意一台电脑打开这个 HTML 文件就能直接浏览共享的行情数据——这就是一份数据源多台机器的最直观体现。三、第一步部署唯一的数据源机器数据源机器只需完成同步 开服务两件事流程见 先看这个使用说明.txt配置同步源编辑 sync_url.txt填入一个你信任的镜像根目录支持http(s)://内网地址、file://网络共享目录甚至本地目录离线同步。运行数据更新工具同步器按镜像中的manifest.txt清单逐文件校验SHA-256 文件大小只处理有变化的增量文件支持断点续传已存在且校验一致的文件直接跳过。启动 stockdb 服务数据落盘到./data后双击启动即可服务状态、监听地址可在运行图中实时查看。清单格式、校验规则与安全建议的完整说明见官方文档 docs/DATA_SOURCE.md。 重要细节同步 LevelDB 数据文件期间应先退出 stockdb 服务同步完成后再启动——这正好对应了单写者、多读者的架构约束第六节会展开。四、第二步打开局域网服务改一个配置服务默认只监听本机127.0.0.1:7899不会暴露到公网。要让局域网内其他机器访问只需改配置方式一改配置文件。编辑 stockdb.conf把server段的ip改为0.0.0.0监听所有网卡端口保持 7899配置项默认值分布式部署建议server: ip127.0.0.10.0.0.0server: port78997899server: auth未启用设置访问口令server: readonly未启用可开启只读模式方式二命令行参数。源码构建版本支持--host ip --port port --data dir启动参数定义见 cpp/tools/main_server.cpp服务端的监听配置结构ServerConfig同样开放了 host、port、password 等字段见 cpp/include/stockdb/server.hpp。改完后数据源机器就成了局域网里的行情数据中心。五、第三步多台查询机器接入零数据组件查询机器不需要下载数据只要把默认地址127.0.0.1:7899换成数据源机器的 IP 即可五种调用方式全部适用调用方式接入方法参考文件HTTP API请求地址改为http://192.168.1.10:7899/?cmdgett...调用方式/http/http_api.pyPython SDK初始化时传入host与port参数pybao/stock_sdk.pyHTML 网页打开页面后把接口地址指向数据源机器 IP数据网页版.htmlExcel / WPS宏中指向同一局域网地址调用方式/excel/AI MCPMCP 客户端连接同一 HTTP 端点调用方式/ai_mcp/stock_mcp_server.py之后每台查询机器都能直接调用批量查询rd.get_data()7000 股票一次取回、批量指标zb.get()39 种指标 5 种指数、板块映射bk.get()等能力——计算仍由数据源机器上的本地引擎完成Rust 计算核心全市场指标计算数秒级返回N 台机器并行回测互不拖累。六、这套架构的 5 个关键设计点单写者、多读者只有数据源机器执行同步写入查询机器纯读取天然无写冲突stockdb.conf中还有readonly: yes只读选项可再加一道保险见 stockdb.conf。数据与计算分离回测机器不落盘行情数据低配机器、旧电脑都能进集群数据源机器宕机时其本地快照仍支持离线查询与回测。完整性可验证每个同步文件带 SHA-256 与字节数双重校验损坏、截断、内容错配都会在写入前被拦截。增量 断点续传Zstd 压缩传输每日只需处理变化数据网络中断后重跑更新工具即可续传不影响在线查询。一份协议多端通用五种调用方式共享同一 HTTP 协议扩机器 改一个 IP接入成本几乎为零。七、生产部署建议清单 ✅#建议说明1同步期间停止数据源机器的 stockdb 服务完成后再启动保证数据文件完整见 docs/DATA_SOURCE.md2服务仅暴露在内网不要将 7899 端口映射到公网3设置访问口令启用auth配置避免局域网内匿名访问4公网镜像一律用 HTTPSHTTP 仅用于隔离内网5数据源机器预留 20GB 磁盘覆盖全量分钟线 增量空间6全集群使用同一版本保证查询协议与数据组织一致7多数据源需求用多点挂载sync_url.txt支持多行配置不同数据源落盘到不同目录查询时自动合并读取八、常见问题Q查询机器需要安装完整包吗不需要装数据。Python 场景只需 SDK 客户端部分pybao/ 目录先运行 pybao/安装.pyHTTP/网页方式则零安装浏览器直接打开即可。Q数据源机器断网了怎么办本地数据已完整落盘所有查询、指标计算、回测照常进行联网后运行一次更新工具即可增量追平。Q可以有多台数据源机器吗可以但建议保持只写一台。其余机器可以只启动服务不跑更新作为查询入口分担网络压力。写在最后用一句话总结 free-stockdb 的分布式回测架构一台机器管数据增量同步 校验N 台机器管策略纯读共享。相比每台电脑各自爬一遍全市场你省下的不只是 3-5 天的数据工程时间更是回测结果一致、集群随时可扩展的确定性。 延伸阅读数据源协议 docs/DATA_SOURCE.md · 五端调用示例 调用方式/ · C 服务端源码 cpp/【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考