Skip to content

Zhonghe-zhao/Simple_bank

Repository files navigation

Simple Bank System

一个使用 Go 构建的简化银行系统,提供账户管理、用户认证、转账、余额查询等功能。项目重点在于练习后端系统的开发流程,包括 API 设计、数据库操作、并发控制、安全认证和容器化部署。

技术栈

  • 语言:Go
  • Web 框架:Gin
  • 数据库:PostgreSQL(SQLC 生成类型安全查询)
  • 缓存:Redis
  • 认证:Passeto Token(替代 JWT)
  • RPC:gRPC + Protocol Buffers(用于服务间通信)
  • 容器化部署:Docker + Docker Compose
  • 测试:Go test + Go Mock
  • CI/CD:GitHub Actions

项目结构(简化)

├── api/ # RESTful API 层 ├── gapi/ # gRPC 服务实现 ├── db/ # 数据库相关 │ ├── sqlc/ # sqlc 生成的查询代码 │ └── migrations/ # 数据库迁移脚本 ├── proto/ # Protocol Buffers 定义 │ └── service.proto # gRPC 接口定义 ├── worker/ # 异步任务处理 ├── token/ # 认证模块 │ └── jwt.go # JWT/Passeto 实现 ├── docker-compose.yaml # 容器编排(PostgreSQL/Redis等) ├── Dockerfile # 应用容器化构建 └── Makefile # 常用命令快捷入口

文档资源

  • 数据库结构图

  • 表结构包括:

  • 用户表(user)

  • 账户表(accounts)

  • 账目流水表(entries)

  • 转账记录表(transfers)

simplebank# Simple Bank System

功能模块

  • 用户注册 / 登录(密码加密 + Passeto 鉴权)
  • 获取用户账户信息
  • 用户账户间转账(支持并发一致性)
  • 查询账户余额、转账记录
  • Redis 缓存优化性能
  • gRPC 服务接口(与 HTTP API 并行开发)

技术亮点

  • 使用 事务 + 行级锁 保证并发转账的一致性
  • 使用 sqlc 替代 ORM,提升 SQL 性能和类型安全
  • 使用 Passeto 替代 JWT,增强认证安全性
  • 项目完全容器化,部署只需 docker-compose up
  • 完善的目录结构,易于扩展为微服务架构

🛠快速启动

1. 克隆项目

git clone https://github.com/Whuichenggong/simple-bank.git
cd simple-bank

```bash
docker-compose up --build

```bash
make migrateup

```bash
go test ./...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published