Skip to content

🎶🎶🌰🌰字节跳动青训营抖音项目,包含用户、视频、点赞、关注、评论、聊天模块,使用Mybatis-Plus、Redis、Nacos、Seata、RabbitMQ等技术组合开发

Notifications You must be signed in to change notification settings

zzziCode/tiktok

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

极简版抖音指南🧭

微服务版、Java实现

⛳⛳前言

本仓库是字节青训营的官方项目,开发文档参考《在线接口文档分享》以及字节官方提供的《极简版抖音App使用说明-青训营版

📝📝架构设计

系统整体架构图如下图所示:

需要使用的项目中间件全部使用docker部署到了服务器中

🌞🌞项目特点

  1. 使用主流的微服务架构进行开发,降低项目的耦合度;
  2. 代码风格参考《Java开发手册(黄山版)》进行开发,符合大厂开发规范;
  3. 使用Sharding-JDBC进行数据层的读写分离+分库分表,提升数据库的性能;
  4. 引入Seata解决分布式事务问题,加强程序的健壮性;
  5. 引入安全性更高的KDF算法加强用户登录注册的验证环节,防止用户密码被暴力破解或者出现彩虹表攻击;
  6. RabbitMQ实现流量削峰,提高系统的可用性;
  7. 使用存储默认值的形式解决缓存穿透问题
  8. 缓存过期值随机打散+Sentinel限流缓解缓存雪崩问题
  9. 多种模式的缓存同步方案:
    • 同步双写:实时性高的信息同步更新
    • 异步通知:RabbitMQ异步更新缓存
    • 后台监听MySQL日志,实时更新缓存
  10. 多种模式的Feed流,降低推荐视频的延迟:
    • 热点用户:投稿作品使用拉模式,不主动更新
    • 普通用户:投稿时使用推模式将作品推送到粉丝的收件箱中
  11. 实现父子模式的评论,前端显示带层级结构,延迟推送所有的子评论列表
  12. 。。。

🐰🐰RabbitMQ设计

项目中涉及到的交换机和队列以及对应的RoutingKey如下图所示:

需要注意的是,项目中专门定义了一个交换机和队列来接收超过重试次数的消息集中进行处理

🐛🐛代码结构

整个项目的结构如下:

tiktok:.
    ├─common
    │  └─src
    │   ├─config
    │   ├─constant
    │   ├─exception
    │   ├─feign
    │   │  └─fallback
    │   ├─result
    │   └─utils
    ├─gateway
    │  └─src
    │  │  ├─config
    │  │  └─filter
    │  └─resources
    ├─resource
    │  ├─img
    │  └─static
    │      ├─cover
    │      └─video
    ├─user-service
    │  └─src
    │  │  ├─config
    │  │  ├─controller
    │  │  ├─dto
    │  │  ├─entity
    │  │  ├─interceptor
    │  │  ├─listener
    │  │  ├─mapper
    │  │  └─service
    │  │      └─impl
    │  └─resources
    └─video-service
        └─src
        │  ├─config
        │  ├─controller
        │  ├─dto
        │  ├─entity
        │  ├─interceptor
        │  ├─listener
        │  ├─mapper
        │  └─service
        │      └─impl
        └─resources

🏃🏃项目运行

下载本项目后,需要在各个微服务模块的application.txt的后缀名换成.yml,之后将每个中间件对应的地址替换成自己需要的,然后加上腾讯云cos需要的配置项,例如:

# videoservice中腾讯云上传文件的配置
tencent:
  cos:
    secretId: yourSecertId
    secretKey: yourSecretKey
    bucketName: yourBucketName
    region: ap-beijing
# userservice中腾讯云发送短信的配置
tencent:
  sms:
    secretId: yourSecretId
    secretKey: yourSecretKey
    endpoint: yourEndpoint
    region: yourRegion
    sdkAppId: yourSdkAppId
    signName: yourSignName
    templateId: yourTemplateId
    signMethod: "HmacSHA256"

About

🎶🎶🌰🌰字节跳动青训营抖音项目,包含用户、视频、点赞、关注、评论、聊天模块,使用Mybatis-Plus、Redis、Nacos、Seata、RabbitMQ等技术组合开发

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published