从零到一手搓抖音

50 阅读2分钟

运行截图

不多BB先看看运行效果

看视频

image-20250225154948549.png 看直播

image-20250225155239573.png

项目介绍

大家肯定从各种博客或者文章看到过类似的标题,比如《面试官让设计XX系统,我如此回答让面试官连连点头》。这些基本都是标题党,点进去看不是卖课就是介绍怎么在设计别的抖音上的附加功能,比如抖音上能买东西,那么介绍怎么设计一个电商系统。这次让我们来真实的从零到一手搓抖音。抖音的核心竞争力是什么,当然是上面各种丰富的学习视频和直播,比如教舞蹈,穿搭的视频。再搭配抖音独特的推荐算法,不断推送用户感兴趣的视频。我们也会着重在设计这几个系统的功能。

在开启项目之前,让我们给项目取个的名字。我给它取名muses,意思是"缪斯",表示希腊神话里掌管艺术的女神。按照系统的不同功能,我们设计出4个主要的project。

系统介绍

muses-biz

muses-biz是核心的业务系统,视频播放,发布,直播间建立等功能都在这个系统里完成,也是最复杂的部分。技术栈使用JDK17+Spring。直播能力使用webrtc(讲道理直播用rtmp更适合一些,但是rtmp太复杂,我实在不想搞)

地址 javashitu/muses-biz

muses-engine

muses-engine负责为整个muses项目提供一些基础能力,比如视频转码,文件管理。技术栈go+pin+pion。

地址 javashitu/muses-engine

muses-lab

muses-lab主要为了构建推荐系统,但是推荐系统的构建一般需要前置的数仓,画像等具备数据处理能力的系统,所以把数仓系统也设计在这个项目里。技术栈java+spark。额外解释一下,一般的数仓构建是会选择hive的,这里我选择用clickhosue来实现,主要原因是在不是特别大数据量(上百T以上)时,hive的功能都能被clickhosue比较好的替换。

地址 javashitu/muses-lab

muses-app

muses-app负责展示整个系统,技术栈flutter。选择flutter的原因是因为跨平台。

地址 javashitu/muses_app

结尾

以上项目都已开源,如果你没办法获取到开源代码,也可以在我的公众号后台回复muses获取这些源码。最后,如果你对这个项目感兴趣的话,也欢迎提交代码,没准火了呢。