# about **Repository Path**: starte/about ## Basic Information - **Project Name**: about - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-04 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 功能模块: #### 服务端 支持Linux和Windows - Http Server:使用Go开发,提供用户注册认证和个人信息接口。基于gin框架。 - DataNode RPC Server:使用C++开发,提供金融数据。基于自研的uvrpc框架。 #### 客户端 - 通信与展示:用户注册、登录、重置密码、获取个人信息。获取金融数据并可视化展示。 - 智能表头:用户编写C/C++或Python函数,客户端调用此函数自动为每只股票生成表格列数据。 - 选股盯盘:用户编写C/C++或Python函数,作为选股和交易策略,软件自动盯盘提醒。(待实现) - 自动化交易(待实现) #### 客户端<->服务端通信 rpc协议:基于libuv异步库开发的rpc框架,使用protobuf进行序列化。设计上采用常规的react模式,由IO线程负责接收任务,线程池负责执行,任务完成后再由IO线程序列化给客户端。早期尝试过各种开源框架,gRPC基于websocket即时性弱且不便于底层定制化,brpc满足需求但只支持linux,sogou/srpc不支持事件流订阅,开源方案都不能满足需要,所以才自行开发。 http协议:用于业务类、非密集数据通信,如向服务端请求用户个人信息。由于涉及到加密通信,如果使用rpc做会很繁琐,故http client采用boost库。服务端的web service用go(Gin框架)。 #### DataNode 数据节点 同时运行在客户端和服务端。客户端的DataNode按需从服务端DataNode请求数据。同时,客户端的DataNode提供API调用服务,供用户使用Python或C++等语言请求数据进行分析。 使用的语言:C++ 17、Python、Golang 开发工具:Visual studio、CMake、git 用到或曾经用到的库: - 异步事件:libevent、libuv、boost - 数据存储:hdf5-c-api、mongodb-driver、hiredis、mysql-driver - kv存储:levelDB、rocktsDB - rpc协议:gRPC、baidu/brpc、sogou/workflow - 测试与日志:gtest、glog - UI界面:Qt5、Qt6(仅客户端UI部分依赖Qt。客户端的底层逻辑Qt无关。) ### 第一版 2019-2020年 ![用户自选](images/01.png) ![个股K线](images/02.png) ### 第二版 2021年- Qt5升级Qt6,使用自研的uvrpc,自研DataNode替代MongoDB。重新设计软件架构,降低耦合,更易于扩展。数据单元LazyLoad设计,性能更优。 ![登录界面](images/login.png) ![我的自选](images/06.png) ![个股K线](images/07.png) ![个股K线](images/chart.png) #### 服务端 (灰色:待开发,黄色:功能已实现) ![系统架构](images/04.png) #### 客户端 (灰色:待开发,黄色:功能已实现) ![系统架构](images/05.png) |模块|介绍| |---|---| |GUI 部分|基于Qt 6的软件界面| |Event Dispatcher|与UI逻辑分离的事件处理引擎| |Data Center|负责数据获取和计算事件的调度| |Factor Caculator|事件驱动的实时因子计算模块| |MemoryDB|客户端的内存数据缓存| |Order Manager|管理用户下单行为,管理订单执行| |Remote Data API|封装各种数据接口|