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

ops/2024/10/31 9:50:35/

前言

大家好,这里是白泽,拖更了一段时间,抱歉。在 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+

  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.ppmy.cn/ops/129833.html

相关文章

ip地址分为几大类-IP和子网掩码对照表

一、IP地址的基本概念与分类 IP地址是用于在网络中标识每个设备的逻辑地址。互联网协议将IP地址分为A、B、C、D和E五类,其中A、B、C三类最常用,它们主要根据地址的首位位数以及用途进行划分。 A类地址: 范围:0.0.0.0 - 127.255.2…

H2 Database IDEA 源码 DEBUG 环境搭建

H2 Database IDEA 源码 DEBUG 环境搭建 基于最新的 version-2.3.230 拉取分支。 git remote add h2 https://github.com/h2database/h2database.git git fetch h2 git checkout -b version-2.3.230 version-2.3.230使用 # 启动 java -jar h2*.jar# H2 shell 方式使用 java …

微服务网关

网关是微服务架构里不可或缺的重要组件 微服务架构中,API网关扮演着至关重要的角色。它作为系统内外通信的唯一入口,能够统一管理和控制所有对外提供的微服务接口。例如,当企业希望将内部开发的服务开放给合作伙伴或公众使用时,通…

R语言结构方程模型(SEM)

原文链接:R语言结构方程模型(SEM)https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247624956&idx4&sn295580a016a86cfee8ee2277c93e32d5&chksmfa8da91bcdfa200da897f1f267492039865bdfe5d75a1c6e6df92ff5005e0eb5cc33a…

Unity Editor 快速移动资源

Editor 快速移动资源 🍔使用场景🌭功能 🍔使用场景 一般想要移动一个资源到另一个目录的办法是选中资源拖拽过去, 但在一个比较大的项目中你得一直拖啊拖直到找到那个目录 🤯。 使用本插件就可以省去拖拽的步骤&#…

浏览器、性能优化、前端安全重难点面试题

浏览器、性能优化、前端安全重难点面试题 汇总了 2023 年各互联网大厂以及中小型创业公司关于 浏览器、性能优化、前端安全、综合应用等相关的最新高频面试题 浏览器 Interview questions 1、从输入 URL 到页面呈现的全过程(腾讯、深信服、招银网络、小米、小红书、字节、…

关于org.springframework.jdbc.BadSqlGrammarException报错的解决方案

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:IDEA 目录 错误描述 解决阶段 AI的回答: 官方文档 错误描述 当我们使用MyBatisX进行相关数据库代码生成的时候,可能会出现以下报错: 一开始我…

InfiMM-WebMath-40B——利用由 24 亿数学文档组成的数据集提高 LLM 的数学性能

1. 前言 论文地址:https://arxiv.org/abs/2409.12568 本文提出了一个新的大规模多模态预训练数据集 InfiMM-WebMath-40B,以提高数学推理能力。该数据集包含 24 亿个科学和数学相关的网络文档、85 亿个图片 URL 和约 400 亿个文本标记。该数据集支持多模…