Gopan-基于go-zero实现慕课网实战仿百度网盘项目

595 阅读2分钟

Gopan-基于go-zero实现慕课网实战仿百度网盘项目

项目地址github.com/liuxianlove…

🏠架构

image-20230728025613573

🚀技术栈

功能实现
http框架gozero
rpc框架gozero
orm框架gorm
数据库Innodb-cluster,redis-cluster
对象存储腾讯云cos,minio集群
服务发现与配置中心etcd
链路追踪jaeger
服务监控prometheus,grafana
消息队列kafka
日志搜集filebeat,go-stash,elasticsearch,kibana
网关traefik
部署Docker,docer-compose

📣项目功能简介

user服务

  • 外接腾讯云oss服务,手机号一键登录/注册
  • jwttoken鉴权
  • 自己实现GitHub OAuth进行第三方登录
  • valiator包进行校验,并且加上中文翻译器

upload服务

  • 可以选择本地或者minio存储或者腾讯云COS进行存储
  • kafka异步处理Mysql存储文件元信息
  • 使用批量消息聚合(batcher)提升kafka性能
  • 秒传
  • 分块上传&&断点续传

download服务

  • 腾讯云COS下载,自动提供大文件分块下载功能
  • minio集群下载
  • 流式返回文件给客户的

transfer服务

  • 多个 goroutine中来并发消费数据,再存入mysql

filemeta服务

  • 根据sha1查询file meta
  • 客户的获取文件sha1
  • 用户重命名文件
  • 用户查询所有文件
  • 用户文件的移动操作

代优化

  • 从docker-compose部署迁移到k8s集群部署
  • 使用GitHub Action/gitlab jenkins 进行 CI/CD
  • 分布式引入,mapreduce思想
  • ....

许可证

gopanMIT 许可证下开源,请在遵循 MIT 开源证书 规则的前提下使用

🎉感谢

创造不易,如果觉得对大家有帮助,希望点点Star支持一下🤗🤗🤗

参考

慕课网实战项目:Go实战仿百度云盘 实现企业级分布式云存储系统