用go语言开发简易量化框架(三)--WEB系统搭建

用go语言开发简易量化框架(三)--WEB系统搭建

  • 一、总流程
  • 二、目录结构
  • 三、配置文件,分段配置
  • 四、日志模块的封装
  • 五、sql数据库封装
  • 六、nosql封装
  • 七、web服务器
  • 八、前端web代码

一、总流程

本文主要说明web系统搭建,主要的组件、接口,以及启动流程。
启动流程,比较简单,如下图
用go语言开发简易量化框架(三)--WEB系统搭建_第1张图片

二、目录结构

工程根目录为starfire,采用go mod进行包管理,而且支持docker。
子目录pkg中包含各种公用的包,如配置文件,日志,数据库,消息队列等子包;
子目录app中包含独立的应用程序,每个应用程序一个子目录,本文介绍webserver,和一般的go web程序目录大同小异。
代码已经开源,仓库地址为 https://github.com/betterjun/starfire
用go语言开发简易量化框架(三)--WEB系统搭建_第2张图片

三、配置文件,分段配置

配置文件,底层使用viper,go语言中使用较多的一个配置文件库,支持toml,yaml,json,ini格式。
上层根据习惯用法,封装到了包cfg中,提供MustGet和Get方法,MustGet*方法,如果没有此配置项,程序会退出。目前支持的方法如下,可以直接通过包名调用
用go语言开发简易量化框架(三)--WEB系统搭建_第3张图片

四、日志模块的封装

日志模块使用的是uber的zap库,比较高效的一个库了。
目前支持的方法如下,可以直接通过包名调用
用go语言开发简易量化框架(三)--WEB系统搭建_第4张图片
如果有时需要记录到多个日志文件,包里的方法是写到一个日志文件中的,不能满足需求,还可以通过NewDevLogger或NewProdLogger返回另外的日志,多个日志同时使用。

五、sql数据库封装

使用gorm来访问数据库,目前封装支持sqlite和mysql,可以随意切换。目前支持的方法如下,可以直接通过包名调用

用go语言开发简易量化框架(三)--WEB系统搭建_第5张图片

六、nosql封装

提炼了常用nosql数据库访问接口,目前封装支持redis和boltdb,可以随意切换。目前支持的方法如下,可以直接通过包名调用
用go语言开发简易量化框架(三)--WEB系统搭建_第6张图片

七、web服务器

web服务器使用gin框架,同时集成了swagger文档,跨域,请求日志,响应日志中间件,接口分公共(pub)和私有(pri)两部分,公共的不需要登陆访问,私有的需要登陆后才可访问。这块比较简单,直接贴代码如下
用go语言开发简易量化框架(三)--WEB系统搭建_第7张图片

八、前端web代码

前端目前只考虑支持pc版,有很多模板仓库可供选择,目前从https://github.com/PanJiaChen/vue-admin-template fork了一份代码,已经完成了注册,登陆,登出,获取用户信息四个接口。代码也已开源,仓库见https://github.com/betterjun/starfire-web 。后续会逐步增加功能,预计的功能如下图

用go语言开发简易量化框架(三)--WEB系统搭建_第8张图片

你可能感兴趣的:(量化开发)