当前位置: 首页 > article >正文

我开源了一个短视频应用(Go+React)|DouTok2.0 项目介绍

前言

大家好,这里是白泽,拖更了一段时间,抱歉。在 DouTok2.0 可以初步允许大家接入开发之后,这篇文章才得以出炉。

DouTok:一个开源的 web 端的短视频应用,采用微服务架构,包含前后端(React & Go),DouTok 正处在开发初期,目前已经完成了 基础的用户注册、登录、用户信息管理、视频上传、视频列表展示、评论、点赞、收藏等功能。

image-20241030091521273

为什么要有 V2 版本:

例如:DouTok 是字节跳动青训营的参赛作品,但 DouTok1.0 版本的微服务划分不够合理,拆的过于零碎,也许看起来很“微服务”,但与实际工作生产环境上的服务划分却背道而驰,微服务的划分不应过分追求“微”,而是适应项目发展,在完善基本设计的前提下进行拆分。

DouTok 继续扩张的另一个卡点是其本身没有前端,只能依赖青训营中提供的“抖声”APP。为了让 DouTok 顺利扩张,所以我们决定开发一个全新的V2版本。在V2版本中,DouTok 减少了服务的划分,增加了前端项目,虽然现阶段依然不够完整,但是已经具备了继续扩张的土壤。

对参与过 DouTok1.0 维护的所有同学表示感谢!

image-20241029233433568

后续规划

  • 前端:

    • 功能:页面布局协调,以及事件跳转完善等
    • 性能:React 组件优化与提炼等
  • 后端:

    • 功能:聊天系统(IM)、视频推荐、消息推送、私信等功能
    • 性能:可观测性、压力测试,缓存 or 消息队列接入等

参与贡献

无论你是前端开发者还是后端开发者,都可以参与到 DouTok 的开发中来,我们欢迎你的加入!

🌟 仓库地址:https://github.com/cloudzenith/DouTok

🔥 如何参与贡献:https://cloudzenith.github.io/DouTok/community

🐧 QQ群: 622383022

📺 B站讲解:白泽talk

🔑 开源学习仓库:go-learning

快速开始

本教程将带领你从零开始,循序渐进搭建并启动 DouTok 项目,若读者已具备相关知识,可选择性阅读。

所有信息参考文档站(非常详细): https://cloudzenith.github.io/DouTok/docs/quickstart/

项目架构

image-20241029222657307

主要目录

这是一个巨仓项目,所有的服务都在这个仓库中,目录结构如下:

  • backend: 后端服务
  • frontend: 前端服务
  • test: 测试
  • deploy: 部署
  • docs-site: 文档站
  • env: 依赖环境部署
  • sql: 数据库脚本

页面展示

  • 上传视频

image-20241030000520491

  • 视频

image-20241029235126428

  • 评论 & 点赞 & 关注

image-20241029235154405

环境准备

  1. Golang 1.22+

    • https://golang.org/dl/
    • https://golang.google.cn/dl/
  2. Node 14.17+

    • https://nodejs.org/en/download/
  3. React.js + Next.js

    • https://reactjs.org/
    • https://nextjscn.org/
  4. JetBrains GoLand/WebStorem

    • https://www.jetbrains.com/
  5. VSCode

    • https://code.visualstudio.com/
  6. Docker

    • https://www.docker.com/products/docker-desktop

必要组件配置及启动

  • Consul: 通过backend/gopkgs/launcher提供能力,所有后端服务均自动注册到Consul中
  • Redis: 缓存
  • MySQL: 持久化存储
  • MinIO: 对象存储
  • RocketMQ: 消息队列(不是必须)
  1. 找到env/basic.yml文件,通过命令docker-compose -f ./env/basic.yml up -d启动Consul, Redis, MySQL, MinIO
    (2、3步不是必须)
  2. 找到env/rocketmq/broker.conf文件,将brokerIP1修改为本地局域网IP
  3. 找到env/rocketmq.yml文件,通过命令docker-compose -f ./env/rocketmq.yml up -d启动RocketMQ

MySQL库表结构同步

  1. 进入sql目录
  2. 检查sql/Makefile文件,其中涉及的MySQL连接需注意应与本地环境一致
  3. 安装 goose 工具,执行go install github.com/pressly/goose/v3/cmd/goose@latest
  4. 执行make up命令,MySQL库表结构会同步到本地

启动后端服务

编译运行

  1. 进入backend目录下除gopkgs外的所有服务目录,依次 go run cmd/main.go 启动服务

镜像运行

  1. 进入backend目录下除gopkgs外的所有服务目录,执行make build以编译Docker镜像
  2. 进入env目录,检查configs下各个配置文件,应与本地环境保持一致,特别是 ./baseservice/config.yaml 中,minio.default.host 需要改成本机局域网IP
  3. 进入env目录,执行docker-compose -f backend.yml up -d启动所有后端服务

启动前端服务

  1. 进入frontend/doutok目录,执行pnpm install安装依赖
  2. 执行pnpm dev启动前端服务,通过 http://localhost:23000 访问

小结

持续更新中,欢迎关注。


http://www.kler.cn/a/377428.html

相关文章:

  • 计算机网络:网络层 —— 移动 IP 技术
  • SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
  • 从0开始搭建一个生产级SpringBoot2.0.X项目(八)SpringBoot 使用Redis
  • 无人机之中继通信技术篇
  • Spring 中循环依赖 三级缓存
  • 2024年云手机推荐榜单:高性能云手机推荐
  • Golang | Leetcode Golang题解之第528题按权重随机选择
  • springcloud整合sentinel,限流策略持久化到nacos,详细配置案例
  • RabbitMQ幂等性
  • vscode ssh连接autodl失败
  • Unity中的屏幕坐标系
  • 【华为HCIP实战课程二十六】中间到中间系统协议IS-IS配置默认路由及IS-IS数据库,网络工程师
  • 动态规划——两个数组的dp问题
  • 2024.11.3笔试记录——学习
  • 15分钟学 Go 第 29 天:流程控制 - select语句
  • 探索NetCat:网络流量监测与数据传输的利器
  • Yelp 数据集进行用户画像, 使用聚类做推荐
  • LangChain学习之路
  • 插入/归并
  • 海风里的青春:海滨学院班级回忆录开发
  • 沈阳乐晟睿浩科技有限公司抖音小店运营创新
  • 如何在忘记密码的情况下解锁 iPhone? 6 种方法分享
  • Nat Med病理AI系列|DEPLOY模型:从病理切片图像预测中枢神经系统肿瘤甲基化状态|顶刊精析·24-11-03
  • 关闭kafka在控制台打印的日志
  • Oracle 第20章:数据库调优
  • Python基于TensorFlow实现双向长短时记忆循环神经网络加注意力机制回归模型(BiLSTM-Attention回归算法)项目实战