探索高效数据服务:Qlib-Server 开源项目推荐
在数据驱动的时代,高效的数据管理和服务是每个技术团队的追求。今天,我们要介绍的是一个强大的开源项目——Qlib-Server
,它是微软开源的金融量化平台Qlib
的数据服务器系统。本文将从项目介绍、技术分析、应用场景和项目特点四个方面,为您全面解析Qlib-Server
的魅力。
项目介绍
Qlib-Server
是专为 Qlib
设计的数据服务器系统,它使得Qlib
能够在在线
模式下运行。在这种模式下,数据将被部署为共享数据服务,数据及其缓存将由所有客户端共享,从而提高数据检索性能并减少磁盘空间消耗。
项目技术分析
Qlib-Server
采用 Client/Server
框架,基于 WebSocket
实现客户端与服务器之间的双向异步通信。服务器端基于 Flask
微框架,并使用 Flask-SocketIO
处理 WebSocket 连接。这种设计不仅保证了通信的高效性,还使得系统架构清晰、易于扩展。
项目及技术应用场景
Qlib-Server
适用于需要高效数据共享和管理的场景,特别是在金融量化分析、大数据处理等领域。它能够帮助团队集中管理数据,简化缓存管理,并利用远程服务器的强大计算资源,使得客户端更加轻量级。
项目特点
- 集中式数据管理:简化数据和缓存管理,便于数据更新和维护。
- 减少缓存生成:通过共享缓存,减少重复数据存储,节省磁盘空间。
- 轻量级客户端:客户端无需大量本地资源,依赖远程服务器的高性能计算。
- 一键部署:支持通过
docker-compose
和Azure
实现一键部署,简化运维工作。
快速开始
部署
Qlib-Server
提供了两种一键部署方式:
-
使用
docker-compose
部署:git clone https://github.com/microsoft/qlib-server cd qlib-server sudo docker-compose -f docker_support/docker-compose.yaml --env-file docker_support/docker-compose.env build sudo docker-compose -f docker_support/docker-compose.yaml --env-file docker_support/docker-compose.env up -d sudo docker-compose -f docker_support/docker-compose.yaml --env-file docker_support/docker-compose.env logs -f
-
在
Azure
上部署:git clone https://github.com/microsoft/qlib-server cd qlib-server/scripts python azure_manager.py create_qlib_cs_vm \ --qlib_server_name test_server01 \ --qlib_client_names test_client01 \ --admin_username test_user \ --ssh_key_value ~/.ssh/id_rsa.pub \ --size standard_NV6_Promo\ --conf_path azure_conf.yaml
在线模式使用
在 Qlib
中启用在线模式,只需初始化配置如下:
import qlib
ONLINE_CONFIG = {
"calendar_provider": {"class": "LocalCalendarProvider", "kwargs": {"remote": True}},
"instrument_provider": "ClientInstrumentProvider",
"feature_provider": {"class": "LocalFeatureProvider", "kwargs": {"remote": True}},
"expression_provider": "LocalExpressionProvider",
"dataset_provider": "ClientDatasetProvider",
"provider": "ClientProvider",
"provider_uri": "127.0.0.1:/",
"expression_cache": None,
"dataset_cache": None,
"calendar_cache": None,
"mount_path": "/data/stock_data/qlib_data",
"auto_mount": True,
"flask_server": "127.0.0.1",
"flask_port": 9710,
"region": "cn",
}
qlib.init(**client_config)
ins = D.list_instruments(D.instruments("all