哇酷哇酷短视频 | 青训营笔记

133 阅读6分钟

这是我参与「 第五届青训营 」伴学笔记创作活动的第 17 天 本文报告将介绍我们在开发这个项目中所采用的技术,以及我们在开发过程中所遇到的问题和解决方案。此外,本文还将介绍我们在开发过程中所取得的成果,以及我们对未来发展的展望。

项目简介

简易抖音——支持所有用户刷抖音、发布短视频、点赞、评论、关注等功能。项目共分为三个模块:基础模块、互动模块以及社交模块,基础模块可实现用户注册登录、投稿、刷视频等功能,互动模块可实现点赞、评论功能,社交模块可实现关注、获取关注及粉丝列表、好友聊天等功能。

GitHub: Hanabi-wxl/go-simple-tiktok (github.com)

image.png

技术点

  • web框架: gin
  • 微服务: go-micro
  • 数据库: mysql
  • 持久层: gorm
  • 缓存: redis
  • 消息队列:rabbitMQ

架构设计

项目整体架构

项目整体使用微服务架构,分别为网关(gateway)服务、关系(relation)服务、基础(core)服务、互动(action)服务,数据库采用mysql,基础服务、互动服务使用redis缓存进行优化,互动服务引入消息队列rabbitMQ。

当某一服务由于请求量较大导致的系统崩会影响下游服务,造成服务雪崩,为了减小这种影响,各微服务统一使用Hystrix 做服务熔断,当某一服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用,提高系统的安全性。

当某一服务压力较大时,应对一些非核心业务做降级处理以保证核心业务的正常运行。本项目互动服务使用Hystrix 做配置服务降级处理,当用户点赞或评论某个视频时,如果服务器请求压力较大,为了避免系统崩溃影响到核心业务的运行,对非核心业务仅做简单处理或暂停使用,以允许用户继续观看视频等功能。

数据库架构

数据库使用mysql,分别设计了用户(user)表、视频(video)表、点赞(favorite)表、评论(comment)表、关注(follow)表、message(消息)表。表与表见的关系如下所示,并标出了外键、索引以表示表字段间的关系(索引以蓝底标出,外键关系以连线表示),以下为数据库结构图以及er表示图。

在关键字段建立索引后,对高频sql语句使用explain进行分析,可得项目数据库索引的命中率较高,常用sql语句均可达到rangeref级别。

缓存架构

缓存采用redis使用了db0-db3数据库,采用list数据结构,db0用户保存用户点赞的视频id,db1保存点赞视频的用户id,db2保存用户发布的视频id,db3保存视频的评论id。

消息队列架构

点赞与评论对于时效性的要求并不高,所以可采用消息队列如RabbitMQ做削峰处理,对于数据库操作频繁的点赞与评论的相关数据使用redis 保存,提高系统的性能。

反思与总结

在参加这次青训营中,我们首先学习了go语言,了解了go语言的基本语法,了解了go语言的特点和优势,并且运用go语言开发了一个短视频平台。我们在开发过程中,运用了gin框架,提高了开发效率,简化了开发流程,并且引入了go-micro框架,搭建了一个稳定可靠的微服务系统,分别开发了core服务、action服务、relation服务等多个子服务。

团队分工明确,各司其职提高了我们的工作效率,且期间我们经常沟通协调,面对技术困难时,我们会在群内交流意见,技术方面有解决不了的,我们也会优先选择百度自行解决,其次才会选择向学各种技术群内提问学习,讨论问题的解决方法。在查阅资料中,我们锻炼了独自解决问题的能力;在团队配合中也能够有责任感,能够做到不拖欠,尽全力,相互促进。

未来展望

短视频推荐算法可以采用基于内容和基于用户的推荐方式,以确保用户更加精准地获取到自己喜欢的短视频内容。例如,基于内容的推荐算法可以采用基于关键词的推荐算法,当用户输入关键词时,可以搜索出与关键词相关的短视频内容,也可分析用户画像,推荐和用户匹配度最高的视频内容。

一、基于内容的推荐算法:

  1. 基于关键词的推荐算法:短视频平台可以对每一个视频进行标签,将其标准化,并将这些标签存入数据库,当用户输入关键词时,可以搜索出与关键词相关的短视频内容,比如当用户输入“动漫”这个关键词时,可以搜索出与此关键词相关的短视频内容,从而实现精准推荐。
  2. 基于分类的推荐算法:短视频平台可以根据每个视频的具体内容,将其归类到不同的类别中,比如“旅行”、“美食”、“科技”等,这样当用户搜索具体类别的视频时,就可以提供更加精准的推荐,从而满足用户的需求。

二、基于用户的推荐算法:

  1. 基于用户历史行为的推荐算法:短视频平台可以记录每个用户的历史行为,比如记录用户在每个类别的视频上停留的时间长度,从而更加准确地了解用户的兴趣,并为用户推荐符合用户兴趣的短视频内容,以提升用户体验。
  2. 基于用户兴趣模型的推荐算法:短视频平台可以通过分析用户的历史行为,建立每个用户的兴趣模型,以此来更加精准地推荐短视频给用户,比如当用户给某个视频打上“喜欢”标签时,就可以根据这个信息来建立用户的兴趣模型,以此来更加准确地推荐相关的视频给用户。