simple抖音项目架构思考 | 青训营笔记

241 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第五篇笔记。经过我们小组成员讨论,详细对比单体架构和微服务之间的优缺点,比如:

微服务系统中的各个微服务可被独立部署,各个微服务之间是松耦合的,服务之间互相协调、互相配合,每个微服务仅关注于完成一件任务并很好地完成该任务。

单体应用的缺点就是微服务的优点:

  • 开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突多

    开发效率高:一个服务只干一件事, 能够被单独开发。

  • 代码耦合度高:代码功能耦合在一起,维护难

    代码耦合度低:微服务是松耦合的,无论是在开发阶段或部署阶段都是独立的。

  • 部署不灵活:任何小修改必须重新构建整个项目,这个过程往往很长

    独立部署:无论是在开发阶段或部署阶段都是独立的,能够快速响应, 局部修改容易

  • 稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉

    稳定性高:一个服务出现问题不会影响整个应用。

  • 微服务架构技术选型更加灵活: 每个微服务可以由不同团队开发,选用编程语言和技术栈可以不同

虽然微服务架构会导致项目复杂度提升,但考虑到如上有点,最终确定了如下的项目架构: image.png

项目采用微服务架构,其中API服务作为对外暴露的服务,客户端通过RESTFUL风格的接口利用HTTP协议进行访问,API服务负责人员信息认证,视频上传和进行信息缓存。根据具体的请求使用RPC调用,调用User和Video服务相关接口,完成响应请求。 Video服务负责对视频信息进行存储和查询,服务点赞、评论操作的执行。 User服务负责人员信息的注册和登陆。