Go-SimpleBank

command module
v0.0.0-...-e787d44 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2025 License: MIT Imports: 26 Imported by: 0

README

项目概述

SimpleBank 是一个基于 Go 开发的银行系统后端服务,提供账户管理、资金转账和用户认证等核心金融功能。项目采用微服务架构,同时支持 gRPC 和 RESTful API,具备高并发处理能力、安全性和可扩展性。

技术栈

  • 后端:Go (Golang)
  • 数据库:PostgreSQL + SQLC
  • API:RESTful API (Gin) + gRPC + gRPC Gateway
  • 认证:JWT/PASETO + 基于角色的访问控制
  • 异步处理:Redis + Asynq
  • 部署:Docker + Kubernetes (AWS EKS)
  • CI/CD:GitHub Actions
  • 其他:Swagger、结构化日志 (zerolog)

核心功能与技术亮点

数据库设计与并发控制

  • 使用 DBML 设计数据库架构并生成 SQL 代码
  • 通过 golang-migrate 实现数据库版本控制和渐进式设计
  • 并发转账处理:分析并解决死锁问题,实现适当的事务隔离级别
  • 使用 SQLC 生成类型安全的数据库访问代码,提高开发效率和代码质量

微服务与双协议支持

  • 实现 gRPC 服务和 gRPC Gateway,支持同时处理 gRPC 和 HTTP 请求
  • 通过 Protocol Buffers 定义服务接口,自动生成客户端和服务端代码
  • 集成 Swagger 自动生成 API 文档,方便测试和集成

安全认证与授权

  • 实现安全的用户注册和登录系统
  • 通过 JWT 和 PASETO 实现 API 安全认证
  • 双令牌机制:使用访问令牌和刷新令牌,优化用户体验和安全性
  • 基于角色的访问控制 (RBAC),区分普通用户和管理员权限
  • 密码安全存储 (bcrypt) 和输入验证

异步任务处理

  • 使用 Redis 和 Asynq 实现可靠的任务队列
  • 异步处理邮件发送等非关键路径操作
  • 实现任务重试和错误处理机制

容器化与云部署

  • 使用多阶段 Docker 构建优化镜像大小
  • 通过 Docker Compose 简化本地开发环境
  • 配置 Kubernetes 部署到 AWS EKS
  • 实现完整的 CI/CD 流程,包括自动化测试、构建与部署

测试与开发实践

  • 采用测试驱动开发 (TDD),使用 testify 和 gomock 实现高覆盖率的单元测试
  • 实现服务组件的优雅关闭,确保请求处理完成和资源正确释放
  • 使用结构化日志和中间件增强系统可观测性
  • 模块化设计,提高代码复用性和可维护性

项目收获

  • 掌握了现代后端微服务架构设计和实现
  • 深入理解了数据库事务和并发控制机制
  • 提升了分布式系统开发和部署能力
  • 实践了安全认证和授权的最佳实践
  • 熟练应用容器化和云原生技术进行应用部署

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
db
mock
Package mockdb is a generated GoMock package.
Package mockdb is a generated GoMock package.
doc
Package pb is a reverse proxy.
Package pb is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL