# miniprogram **Repository Path**: lanshiren/miniprogram ## Basic Information - **Project Name**: miniprogram - **Description**: 微信小程序 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 3 - **Created**: 2020-11-21 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # miniprogram #### 介绍 本项目为烂诗人微信端小程序 ![lanshiren](static/images/basicprofile.png) #### 二维码 ![lanshiren_mini](static/images/gh_a5aec36d2d97_258.jpg) #### 软件架构 软件架构说明 ![](static/images/apparch.png) ##### 客户端 端上我们有小程序端和 Web 端,小程序端供用户访问报名系统,Web 端主要提供给管理员管理操作。这里的技术栈主要是 JS,微信的 WXML 和 WXSS (WXML 和 WXSS 主要为 UI 设计到小程序端的具体表现,JS 用于实现前端业务逻辑),以及管理端的 VUE。 ##### 接入层 接入层,我们选用开源的 Nginx,主要实现前端过来的流量控制,到后端业务层的探活以及负载均衡。选用它的主要原因是我们需要的功能基本都实现了,只要通过简单的配置就可以实现,其次是它的性能好,整体代码质量高,稳定可靠。 ##### 业务层 业务层是我们重点需要开发的层,语言选型是 Golang ,对应的 web 框架我们选择 gin,数据库客户端选择 gorm 和 redigo,日志框架 uber 的 zap。业务层主要实现了整个报名系统的业务逻辑,业务逻辑图如下。 ##### 基础设施层 系统中用到的基础设施主要就是数据库和缓存了,对于核心的数据 (如用户身份信息,线路信息),我们存储到 MySQL 中。一些非重要数据,如用户的登录的 session 信息 登录记录,可以存储在持久化缓存 Qedis。以及内存缓存 Redis 中。基础设施层都需要搭建主备容灾的环境,主挂了,可以切流继续对外提供服务。 ##### 安全模块 安全模块主要是保证系统的安全,我们在接入层使用 HTTPS 协议,登录模块使用 OAuth ,即保证安全,也可以避免了用户注册系统的流程,让小程序简单好用。 ##### 稳定性模块 稳定性模块主要包含了 Nginx 中用户访问日志,业务系统日志的管控,以及业务流量的监控,程序运行调用栈,系统负载等监控信息,同时可以操作流量切换,在后台出现故障时,可以切流到备用服务上。 ##### 数据分析模块 数据分析模块主要用于对各种用户数据进行分析,前期用户数据量较小的情况下,可以直接从基础设置层的库里面读取数据。在数据量大的情况下,需要将基础设施层的实时数据导入到 Hadoop,Spark 这样的离线计算系统中进行分析。 ##### 防归零冷备份 任何系统都可能面对极端情况下的灾难,如果所有数据丢失需要有办法重建整个系统,这就需要将数据定期冷备份到可靠的存储设备上,这里我们选择阿里云 oss 用来冷备我们的数据。 #### 使用说明 todo: #### 参与贡献 我们使用 git 管理对代码进行版本管理,项目中有三个分支 (master, develop, feature), 你需要从 feature 分支 fork 出 feature_* 的新分支,开发完成后提交 megre request 到 feature 分支,如果需要进行测试可以合并到 develop 分支。 ##### 一些有用的链接 https://golang.org https://tour.golang.org https://dev.mysql.com/doc https://redis.io/documentation https://nginx.org/en/docs https://github.com/loveyacper/Qedis https://en.wikipedia.org/wiki/HTTPS https://gorm.io/zh_CN/docs/index.html https://github.com/garyburd/redigo https://github.com/uber-go/zap