DouTok Shop(抖音电商)是一个面向云原生时代的综合性电商平台,旨在提供高性能、易扩展的电商解决方案。项目基于字节跳动的 Kitex 作为 RPC 框架和 Hertz 作为 HTTP 框架,结合成熟的后端技术与现代 DevOps 工具链,构建用户、管理与运维多端统一的生态系统。
主要功能:
-
用户端:
- 浏览商品、商品搜索与筛选
- 添加购物车、下单及订单管理
- 跳转支付宝支付等集成
-
管理端:
- 商品的新增、修改与删除
- 图片直传至阿里云 OSS,实现高效媒体管理
-
运维端:
- 自动化的 Pod 扩缩容与节点弹性扩容
- 统一日志管理、性能监控(Metrics)及链路追踪
- GitOps 工作流实现持续集成与持续部署
- 展示地址: https://shopnext.kl.suyiiyii.top/
- CDN 地址: https://shopnext.suyiiyii.top/
- 后端仓库: https://github.com/doutokk/doutok
- 前端仓库: https://github.com/doutokk/doutok-frontend
-
队长: 杜家楷
主要负责流水线部署、运维、前端开发、OSS 文件直传及实现商品管理、购物车、订单和支付模块。 -
队员: 钟宝骏
主要负责压测、搜索、缓存、测试、仓库管理以及用户、鉴权和网关模块的实现。
- 语言: Go
- RPC & HTTP 框架: Kitex & Hertz
- 鉴权: JWT + Casbin(基于角色的权限控制)
- 数据库: MySQL(关系型数据存储)
- 缓存与分布式锁: Redis
- 搜索引擎: Elasticsearch(商品搜索性能提升约10倍)
- 对象存储: 阿里云 OSS
- 框架: React
- 静态资源托管: Nginx 配合 CDN 加速
- 容器化与编排: Kubernetes
- 日志与监控: Prometheus、Grafana、Loki、Promtail
- 链路追踪: Jaeger
- CI/CD: GitHub Actions、GitHub Packages、ArgoCD(GitOps 模式)
DouTok Shop 的架构设计注重高可用与弹性扩展,主要包括以下层级:
-
客户端与内容分发
- 浏览器访问 → 静态资源通过 CDN 加速
-
接入层
- Ingress(Traefik)统一入口,路由至网关或各微服务
-
业务服务层
- Gateway: 统一处理用户请求与服务间聚合
- 微服务: 拆分为用户、商品、订单、支付等独立模块,通过 RPC/HTTP 通信
- Redis: 提供高频数据缓存及分布式锁支持
-
数据与存储层
- MySQL: 核心业务数据存储,确保数据一致性
- 对象存储: 阿里云 OSS 存储图片、视频等非结构化数据
-
可观测性与监控
- 日志: Loki + Promtail 集中管理日志
- 监控: Prometheus + Grafana 实时监控关键指标
- 链路追踪: Jaeger 分布式调用链追踪
-
基础设施层
- Kubernetes 集群管理,支持自动扩缩容与高可用部署
- Go 版本: ≥ 1.23
- MySQL 版本: ≥ 8.0
- Redis 版本: ≥ 6.0
- Kubernetes 集群环境(可选,用于生产部署)
- 阿里云 OSS 账户(用于对象存储)
-
克隆仓库
git clone https://github.com/doutokk/doutok.git cd doutok -
安装依赖
go mod download 或 go mod tidy
-
数据库配置
- 根据
docs/database下的说明,创建并初始化 MySQL 数据库及数据表
- 根据
-
编辑配置文件
- 在各微服务的
conf目录下,使用您的数据库、Redis 和 OSS 凭证更新 YAML 配置文件
- 在各微服务的
-
启动服务
- 使用 Kubernetes 清单文件进行服务启动和部署
API 文档位于项目文档目录中,方便您了解各微服务接口定义与调用方式:
cd docs/apiDouTok Shop 完整采用 GitOps 工作流,通过 GitHub Actions 触发持续集成和镜像构建,再由 ArgoCD 实现 Kubernetes 集群的持续部署。主要步骤包括:
-
代码提交触发流水线
- 自动化执行编译、单元测试、静态检查
-
镜像构建与推送
- Dockerfile 构建镜像,推送至 GitHub Container Registry
-
配置声明更新
- 使用 kustomize/helm 更新 Kubernetes 清单,提交至 Manifest 仓库
-
持续部署
- ArgoCD 实时监控 Manifest 仓库变更,并同步至集群,实现滚动更新与零宕机部署
欢迎各路开发者共同参与 DouTok Shop 项目的建设!
- Fork 本仓库
- 创建新分支
git checkout -b feature/YourFeature
- 提交代码与更新文档
- 提交 Pull Request
请确保您的代码通过所有测试,并附上相关文档说明。
本项目采用 MIT 许可证。
-
杜家楷
邮箱:suyiiyii@gmail.com
(流水线部署、运维、前端、OSS 直传、商品管理、购物车、订单、支付模块) -
钟宝骏
邮箱:3168078770@qq.com
(压测、搜索、缓存、测试、仓库管理、用户鉴权、网关模块)
- 当前问题: 部分业务场景仍需进一步优化,如高并发下的细粒度权限控制与缓存策略
- 已识别优化点: 架构性能瓶颈、日志监控精细化、微服务间通信优化
- 未来方向: 持续演进架构、引入更多自动化测试和监控手段、提升用户体验
⭐ 如果您觉得本项目有帮助,请给我们点个 star! 📖 更多信息请查阅项目 Wiki 或提交 issue。