一个使用 Go 构建的现代化银行系统,提供完整的账户管理、安全认证和资金交易功能。项目采用分层架构设计,实现了 RESTful API 和 gRPC 服务,并包含完善的测试和部署方案。
-
用户认证系统
- 用户注册与登录(密码加盐哈希存储)
- 基于 Paseto 的无状态认证(替代传统 JWT)
- Token 自动刷新与注销机制
-
账户管理系统
- 账户创建与信息查询
- 余额查询与交易记录
- 多账户资金转账(支持并发操作)
-
交易处理系统
- 事务处理保证 ACID 特性
- 行级锁防止并发冲突
- 异步任务处理(邮件通知等)
类别 | 技术选型 |
---|---|
开发语言 | Go |
Web 框架 | Gin |
数据库 | PostgreSQL (使用 sqlc 生成类型安全代码) |
缓存 | Redis 7 |
认证 | Paseto |
RPC | gRPC + Protocol Buffers |
异步任务 | Asynq (基于 Redis 的任务队列) |
日志 | Zerolog (结构化日志) |
测试 | Go test + testify + gomock |
部署 | Docker + Docker Compose |
CI/CD | GitHub Actions (自动化测试和镜像构建) |
.
├── api/ # RESTful API 控制器层
├── gapi/ # gRPC 服务实现
├── db/ # 数据库相关
│ ├── sqlc/ # sqlc 生成的类型安全查询
│ ├── repository/ # 数据库操作抽象层
│ └── migrations/ # 数据库迁移脚本
├── proto/ # Protocol Buffers 定义
│ └── service.proto # gRPC 服务接口定义
├── worker/ # 异步任务处理器
├── token/ # 认证模块
│ └── paseto.go # Paseto 实现
├── config/ # 应用配置
├── docs/ # 文档资源
│ ├── db.dbml # 数据库结构图
│ └── schema.sql # 数据库建表语句
├── docker-compose.yaml # 开发环境容器编排
├── Dockerfile # 应用容器化构建
└── Makefile # 常用命令快捷入口
主要数据表:
users
- 用户信息表accounts
- 银行账户表entries
- 账户流水记录transfers
- 转账交易记录sessions
- 用户会话信息
-
克隆仓库
git clone https://github.com/Zhonghe-zhao/Simple_bank.git cd Simple_bank
-
启动依赖服务
docker-compose up -d postgres redis
-
运行数据库迁移
make migrateup
-
启动应用
make server
-
运行测试
make test
服务启动后,可以通过以下方式访问 API 文档:
- Swagger UI: http://localhost:8080/swagger/index.html
- gRPC 反射: 使用 grpcurl 或 BloomRPC 工具查看
项目包含多层测试:
- 单元测试 (80%+ 覆盖率)
- 集成测试 (数据库操作)
- API 端到端测试
运行完整测试套件:
make test
-
构建生产镜像:
docker-compose -f docker-compose.prod.yaml build
-
启动服务:
docker-compose -f docker-compose.prod.yaml up -d