Fly-小学妹都喜欢的Go后端项目

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Fly-小学妹都喜欢的Go后端项目

背景


有个漂亮的小学妹要写毕设, 找我帮忙搭个架子, 于是…

ec499c635baa4893b06baf22791c70b3.png


它来了它来了, 分享下自己写的Go后端项目, 封装了一些(db, socket等)常用的组件, 开箱即用, 纵享丝滑!


任何问题, 建议或者需求都欢迎提 issues, 有问必回! 感谢star!


github地址


gitee地址


项目结构


参考 Go程序布局

├── build               // 打包/集成
|  ├── app              // 应用程序名
|  |  ├── Dockerfile    // 集成的配置/脚本
├── cmd                 // 可执行目录
|  ├── app              // 应用程序名
|  |  ├── main.go       // 入口文件
├── configs             // 配置文件
|  ├── config.json      
├── doc                 // 项目文档
├── example             // 示例目录
├── internal            // 私有程序
|  ├── api              // 接口
|  ├── config           // 配置文件解析
|  ├── cache            // 缓存相关
|  ├── constvar         // 常量
|  ├── domain           // 表结构
|  └── monitor          // 监控定时服务相关
|  └── rpc              // rpc
|  └── utils            // 公用方法(不能调用任何内部对象)
├── logs                // 日志存放
├── pkg                 // 安全导入的包(可以被任何项目直接导入使用)
|  ├── clickhouse       // ck组件
|  ├── email            // 邮件组件
|  ├── es               // es组件
|  ├── httpcode         // 请求处理组件
|  ├── jwt              // jwt组件
|  ├── logging          // 日志组件
|  ├── mongo            // mongo组件
|  └── mq               // mq组件
|  └── mysql            // mysql组件
|  └── redis            // redis组件
|  └── safego           // 安全运行组件
|  └── ws               // socket组件
├── .dockerignore       // docker忽略文件    
├── .gitignore          // git忽略文件    
├── go.mod              // 包管理    
├── README.md

优雅的代码

请先参阅一遍官方的代码规范指南

gofmt

goimports


技术选型

web框架

iris 号称最快的Web框架

rpc

grpc

socket

gorilla

mysql

gorm

clickhouse

dbr

es

elastic

mongo

mongo

redis

redis

mq

amqp

log

zap

config

viper

启动方式

命令行启动

go run cmd/app/main.go


Docker启动


docker build -f build/app/Dockerfile -t fly:v1.0.0 .
docker run --rm -it -p 8888:8888 -p 9999:9999 --name fly fly:v1.0.0


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
11天前
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
5天前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
6天前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
11天前
|
算法 程序员 编译器
Go deadcode:查找没意义的死代码,对于维护项目挺有用!
Go deadcode:查找没意义的死代码,对于维护项目挺有用!
|
16天前
|
缓存 JavaScript 前端开发
为开源项目 go-gin-api 增加 WebSocket 模块
为开源项目 go-gin-api 增加 WebSocket 模块
24 2
|
16天前
|
Prometheus Cloud Native NoSQL
Go - 一个对新手很友好的项目(带界面)
Go - 一个对新手很友好的项目(带界面)
25 1
|
16天前
|
消息中间件 关系型数据库 MySQL
为开源项目 go-gin-api 增加后台任务模块
为开源项目 go-gin-api 增加后台任务模块
13 0
|
16天前
|
缓存 NoSQL 关系型数据库
Go - 开箱即用,WEB 界面一键安装,没有项目经验,可以拿这个练手
Go - 开箱即用,WEB 界面一键安装,没有项目经验,可以拿这个练手
31 0
|
3天前
|
运维 监控 API
后端开发中的微服务架构:优势与挑战
【8月更文挑战第16天】在软件开发的世界中,微服务架构已经成为一种流行和强大的设计模式。它通过将应用程序分解为一组小型、独立的服务来促进敏捷开发和快速迭代。本文旨在深入探讨微服务架构的核心优势以及实施过程中可能遇到的挑战,帮助读者更好地理解这一现代软件设计方法。