首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
Spring Cloud 复刻抖音推荐架构!!
返回列表
发新帖
Spring Cloud 复刻抖音推荐架构!!
[复制链接]
发表于 2025-5-11 23:58:15
|
显示全部楼层
|
阅读模式
一、引子
抖音的推荐体系是其成功的关键之一,而背后是一套复杂的
微服务
架构支撑着高并发和庞大的用户数据处理。每当用户刷到新的视频时,背后都有一个复杂的推荐算法在实时运行。而在这样的场景下,构建一个高效、可扩展的
微服务
架构是至关重要的。
本文将通过 Spring Cloud 构建一个简化版的抖音推荐体系,探讨
微服务
架构的设计与实践。
二、业务梳理
在正式的开发前,我们需要先对这个简化版的推荐体系所需要的
功能
做下梳理:
用户行为数据
推荐体系的焦点在于个性化推荐,而个性化推荐的条件是对用户行为的全面相识。用户的每一次操纵(如观看、点赞、转发、评论等)都会影响推荐结果。因此,体系需要具备以下
功能
:
记载用户行为数据:
记载用户在平台上与视频的交互行为(比如用户观看了哪些视频、点赞了哪些视频等)。
管理用户画像:
基于用户的汗青行为,生成用户的兴趣画像,用于推荐计算。
视频资源管理
抖音作为一个短视频平台,需要管理大量的视频资源。每个视频都有不同的标签(如范例、话题、风格等),这些标签是推荐算法的重要依据。因此,体系需要:
存储
视频基本信息:
包括视频的ID、标题、标签、上传时间等。
提供视频分类:
根据视频的标签信息,将视频分类以便后续推荐。
个性化推荐
推荐体系的焦点
功能
就是根据用户的兴趣和视频内容的标签,生成个性化推荐列表。为了实现这一功能,体系需要:
获取用户画像和视频标签:
结合用户的兴趣画像与视频的标签,匹配用户可能感兴趣的视频。
生成推荐列表:
根据算法计算,生成个性化推荐的视频列表并返回给用户。
用户行为数据的实时处理
用户在平台上的行为是实时发生的,因此推荐体系需要能够实时处理这些行为数据,并根据最新的行为更新用户画像。为此,体系需要:
实时处理用户行为:
当用户举行某个操纵时(如点赞或观看某个视频),体系能够实时接收这些事件,并更新用户画像。
异步处理:
为了不影响用户的使用体验,行为数据的处理应只管异步化,通过消息队列等本领解耦实时数据处理与推荐服务。
通过上述的业务需求梳理,我们最终可以总结出一个简化版的推荐体系需要具备的焦点功能:
用户行为管理:
记载用户的观看、点赞等行为。
视频资源管理:
存储
视频的基本信息和标签。
个性化推荐:
结合用户画像和视频标签,生成推荐列表。
实时数据处理:
处理用户行为数据,实时更新用户画像。
三、架构设计
完成了需求梳理后,我们总结了四大焦点功能,进而可以抽象出四个服务来分别完成上述功能,因此,我们可以简朴地绘制下业务架构图,如下:
图片
这里我做了一些简化:比如省略了
API
网关,客户端直接请求到推荐服务上获取响应。因为我们决定使用SpringCloud来搭建这个项目,所以我们的服务都注册到Eureka上,服务之间的调用则接纳Feign实现。
别的,分别使用Redis和Kafka来缓存用户画像和传递用户行为数据。
四、详细实现
通过需求梳理、技术选型、架构设计,我们已经完成了项目开发前的准备工作,现在就可以正式举行开发了。起首需要我们根据业务架构图完成项目的基础搭建。
项目搭建
使用IDEA通过maven-archetype-quickstart举行快速创建,如下:
图片
接下来通过同样的方式分别创建四大业务模块和Eureka服务模块,项目结构如下:
图片
此时,在父模块的pom.xml文件中就可以看到子模块都已经被管理起来,我们再引入SpringBoot和 SpringCloud的依靠(Ps:
版本
可根据喜好自行选择,我这里演示也无所谓了,就不消SpringBoot3了),如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itasass</groupId>
<artifactId>recommendation-system</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>eureka-server</module>
<module>user-service</module>
<module>video-service</module>
<module>recommendation-service</module>
<module>data-processing-service</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.boot.version>2.6.4</spring.boot.version>
<spring.cloud.version>2021.0.1</spring.cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring Boot Dependencies-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Dependencies-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
复制
代码
此时,我们就完成了项目的基础搭建,接下来开始编写各个服务的
代码
。
创建 Eureka 服务
各个服务都有本身的依靠需要导入,Eureka服务所需依靠如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.itasass</groupId>
<artifactId>recommendation-system</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>eureka-server</artifactId>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Eureka Server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
复制
代码
导入相关依靠后,可以创建 eureka-server 模块中的主类 EurekaServerApplication,如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication
{
public static void main( String[] args ) {
SpringApplication.run(Eure
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
天空闲话
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表