实战项目之行情架构分析

之前项目做过一个有关股票行情的系统,是一个典型的分布式系统,近段时间整理了下架构,做一下总结。

先上一张架构图:

在上面的途中,其实行情系统主要涉及到四个程序模块:

1.行情服务器模块,这个模块负责接收行情源的数据,做解析处理,将处理好的数据写入到redis上面。

2.行情API接口模块,这个模块用来与APP交互,接收APP的各种请求,做相应的业务逻辑处理。

3.SOCKET推送模块,该模块用来向APP推送实时的行情数据。

4.通用消息模块,这个模块主要也是用来推送消息,但其推送的消息与SOCKET推送的消息不同,推送各种间歇性的消息。

除了上面的4个程序模块,还有两个服务模块:

1.zk集群,主要用来对各个模块进行HA管理,进行Leader选举,防止单点故障,确保集群各个模块的稳定。

2.Nginx模块,用来对APP发送过来的请求进行负载均衡处理。

还有一个数据模块:

redis,为了确保redis的稳定,也采用了redis的sentinel模式(哨兵模式),防止单点故障

 

两个典型的工作流程:

1.排行榜的查询,先由行情服务器将数据写入redis,然后API模块接收客户端的查询请求,读取redis上的数据,做优化处理之后,返回分时数据给客户端。

2.排行榜的推送,API模块接收客户端的订阅请求,然后API通过PUB/SUB机制通知SOCKET推送模块客户端订阅了排行榜。

SOCKET推送模块就读取redis上的数据,通过socket长连接持续向客户端推送行情信息。

 

几个需要关注的地方:

1.行情服务器模块和SOCKET推送是主备的关系,即只有master节点处于工作状态。

2.行情API接口模块和消息模块可以是多个节点同时工作,这时在前面加上一个nginx服务器来做负载均衡。

3.redis在其中发挥了两种功能,一种是基本的读写功能,还有一个是pub/sub功能,也可以用来在不同的模块中通信。

4.在SOCKET推送中,并不一定是用户是登录状态的时候才给用户推送消息。

【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Django,keras,axios, echats的智能股票分析系统源码+文档(集成LSTM的实践序列预测算法).zip ## 项目说明 **项目目标与功能** > 分析股价综合分析预测工具的功能需求,研究其设计及实现技术。设计股价综合分析预测工具的总体结构,实现如下功能: > > - **展示大盘指数行情、股票对比分析、个股信息分析** > - **明日股价预测、股价区间预测、股价走势预测、股价涨跌预测** > - **登入、注册,登出** > - 对所实现的部分进行测试和评价。· **项目技术栈** > - 生态:Python 3.8 > > - Web框架:Django 3 > > - 数据存储技术:Dataframe文件存储 > > - 深度学习框架:keras > > - 前端技术:bootstrap4+jquery+ajax+echats > > - 算法:lstm,归一化 **项目结构** ![img](image/clip_image001.png) **结构说明** > - stock:Django项目的主app > > - stockapp:实现股票展示、预测、更行等操作的app > > - forecast:算法模块,存放预测算法、数据处理函数、各种工具类函数。 > > - static:存放系统各种静态资源(js,css) > - templates:存放前端html页面 > - stockList.html:主页,展示所有股票的列表 > - stockDetail.html:股票详情页,展示股票的详细信息 > - stockSinglePredict.html:股票预测页,展示针对单个股票的预测结果(包含股票走势、区间、变化、明日股价1) > - stockComparison.html:股票对比页面,对比两只股票的信息 > - marketIndex.html:展示大盘指数 > - data:ts_code.csv(代码为ts_code的股票的数据存放文件),allStock.csv(存放所有股票的简要信息) > - backup:保存临时的代码文件,无用,可以直接删除 **重点说明stockapp下的各种文件作用** > ![img](image/clip_image002.png) > > .pytest_cache:系统缓存文件 > > migrations/:此目录包含Django应用程序的数据库迁移文件。每当您更改数据库表时,都应该创建一个新的迁移文件,并运行migrate命令来将更改应用于数据库。 > > app.py:此文件定义了Django应用程序的配置。您可以在这里指定应用程序的名称,URL配置和其他设置。 > > url.py:此文件包含Django应用程序的URL配置。您可以在这里定义哪些URL应该与哪些视图函数匹配,并将它们映射到适当的视图函数。 > > views.py:此文件包含Django应用程序的视图函数。视图函数处理来自URL的请求,并根据需要从数据库中检索数据,并将其呈现为HTML响应。 > > calculate_indicators.py:计算股票的各种指标 Stock**下各种文件的作用**: > ![img](image/clip_image003.png) > > - settings.py:此文件包含Django项目的所有设置。您可以在这里指定数据库配置,静态文件路径,安装的应用程序列表等等。 > - forms.py:此文件包含Django应用程序的表单类。表单类用于验证用户提交的数据,并将其转换为模型实例。 > > - manage.py:此文件是Django项目的命令行工具。您可以使用它来运行服务器,创建数据库迁移,运行测试等等。 ## 项目部署与运行 **准备工作** 项目用到了tushare 的api,需要使用者自行去tushare官网申请账号,获取api token填写到如下的位置: <img src="image/image-20230716000221588.png" alt="image-20230716000221588" style="zoom: 67%;" /> tushare官网:[Tushare数据](https://www.tushare.pro/) 获取api token的url:[Tushare数据](
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值