/stockexchange

一个gozero项目

Primary LanguageGo

简介

一个学习go语言时候边学边做的项目,使用go-zero框架,里面还用到了gorm和redis分布式锁,使用rocketmq做到可靠消息的最终一致性,实现模拟简单的股票交易系统, 本人学习的时候参考了很多视频,也看了很多的代码,其中最感谢的就是波波老师的go开发工程师

目前一共包含账户服务、股票详情查询服务、用户收藏服务、库存服务、订单服务五大块

当前版本只实现了股票的买入操作,本人忙于写毕业论文,后续卖出操作逻辑和买入相似,就不想写了; 前端短时间也学不完, 也就没写,等以后有时间再弄吧

当前还未实现的功能主要有:

  1. 股票卖出操作
  2. 订单微服务中 股票委托股票订单 如何区分开? 通过委托价和当前价如何实现延时成交, 即我先发起委托,当委托价真正和当前价相等再成交
  3. 委托数目不一定就是最后的成交数目,这个功能也没做
  4. 里面很多地方肯定有bug, 很多地方逻辑能跑通, 但是设计的有问题,代码写的也会有问题
  5. 没有做链路追踪、限流、熔断、降级(还没学呢,暂时不会)
  6. 可以试着在用户操作里面添加每笔交易操作后的笔记,形成自己的交易日记(当前很多专门的交易app也没这个功能)
  7. 可以尝试用python量化交易计算买卖点,通过rpc服务来进行买卖

本人不是专业韭菜,术语不会整,大体意思表达大家懂就行

由于当前golang的项目,尤其基于go-zero的很少,本人看了很多的博客,视频,踩了很多坑,很多地方写的其实并不好,但是还是厚着脸皮分享出来,希望广大的golang新手能够少踩坑,能力更上一层楼

目前每个微服务里面实现的功能有:

账户服务
  • 用户注册
  • 用户登录
  • 修改用户信息
  • 查询用户详情
  • 删除用户
股票详情服务
  • 使用的是新浪的api,每次查询都会请求新浪服务器
  • 新建股票到数据库(一开始不可能有所有股票信息)
  • 股票实时信息查询(通过股票名、股票代码)
用户操作服务
  • 添加收藏
  • 删除收藏
  • 查看用户所有收藏的股票
  • 查看某支股票被哪些用户收藏(管理员)
库存服务
  • 设置库存
  • 查询库存
订单服务
  • 订单服务一共包含 用户钱包表用户持仓表用户委托表用户订单表
  • 查询钱包信息
  • 更新钱包
  • 查询持仓
  • 发起委托
项目运行命令
go run user.go -f etc/user.yaml
go run stock.go -f etc/stock.yaml
go run operation.go -f etc/operation.yaml
go run order.go -f etc/order.yaml
go run inventory.go -f etc/inventory.yaml
go run stockexchange.go -f etc/stockexchange.yaml

etcd查询

D:\Go\etcd-v3.4.14-windows-amd64>etcdctl.exe --endpoints=http://127.0.0.1:2379 get stock.rpc --prefix
stock.rpc/7587860728117661703
127.0.0.1:8081