58同城推荐系统架构设计与实现

author author     2022-10-06     389

关键词:

一、推荐系统架构介绍

推荐系统是一个微庞大的工程、算法与业务综合的系统,其主要分为三大子系统:

1)线下推荐子系统;

2)线上推荐子系统;

3)效果评估子系统;

后文将重点讨论以上三大子系统的设计与实现。

 

二、线下推荐子系统

线下推荐子系统又主要分为线下挖掘模块数据管理工具两大部分。

线下挖掘模块

技术分享图片

线下挖掘模块,是各类线下挖掘算法实施的核心,它读取各种数据源,运用各种算法实施线下数据挖掘,产出初步的挖掘结果,并将挖掘结果以一定格式保存下来。典型的,实施这些挖掘策略的是一些跑在hadoop平台上的job,并行实施策略,并将挖掘结果保存到hadoop上。

数据管理工具

数据管理工具,即DataMgrTools,它是一个工具(或者服务),它能够接受一些管理命令,读取某些特定格式的线下数据,将这些数据实时或者周期性的打到线上的redis或者内存中,供线上服务读取。

技术分享图片

数据管理工具是一个与业务无关的通用工具,它需要支持多种特定格式数据的上传,因为线下挖掘模块产出的数据可能存储在文件里,HDFS上,数据库里,甚至是特定二进制数据。

该工具的实现要点是:定义好线下数据格式,线上数据格式,通过上下游API做数据的迁移和转换。

 

三、线上推荐子系统

线上推荐子系统主要分为展示服务、分流服务、推荐内核、策略module服务等几个部分。

展示服务

展示服务,或者说是接入服务,它是整个推荐系统线上部分的入口,即整个推荐系统的接入层,它向上游提供接口,供上游业务方调用。

技术分享图片

展示服务是无状态的服务(线上子系统各个服务都是无状态的服务),可以任意水平扩展,该服务的实现要点是:定义好通用的接口格式。

分流服务

分流服务,它是推荐系统中一个非常有特色也非常重要的一个服务,它的作用是将上游过来的请求,按照不同的策略,以不同的比例,分流到不同的推荐算法实验平台(也就是下游的推荐内核)中去。

技术分享图片

分流服务如何判断上游过来的一个请求分配到那个推荐算法实验平台呢?答案是通过策略和配置。从架构图中可以看到,几乎所有的服务都需要读取数据(data)和配置(conf),这些data可能是在线的动态变化的数据(例如:从redis中读取的数据),亦可能是相对静态的数据(例如:城市列表),conf比较好理解,即一些配置(例如:所有请求80%流量必须走A算法实验平台)。通过这些策略和配置,配合请求带过来的参数,分流服务计算出流量分配到哪个实验平台。

该服务的实现要点是:实现通用的支持与或非关系的可配置的分流规则,与下游实验平台定义好通用的接口以实现将流量按需打往不同的实验平台。

推荐内核

推荐内核,是各类线上推荐算法实施的核心,它其实只是一个通用的实验平台容器,每个推荐服务内部可能跑的是不同类型的推荐算法。

技术分享图片

虽然推荐服务中跑着不同的推荐算法,但每个算法的实施步骤都是相同的,都需要经过:

(1)预处理;

(2)预分析;

(3)去重过滤;

(4)排序;

(5)推荐解释;

等五个步骤,每个步骤都可能存在多种不同的算法,不同的模型,各个步骤中的一种算法组合起来,完成一个完整的流程,构成一个“推荐算法实验平台”。

对于上述每个不同步骤中的不同模型,可能需要访问不同的外部module服务,例如:

推荐解释步骤,可能有两个模型,第一个模型在推荐解释阶段可能需要访问“解释-module1-服务”,第二个模型在推荐解释阶段可能需要访问“解释-module2-服务”,这些不同模型访问不同业务的需求,在架构层面都需要支持。

该服务的实现要点是:在一个推荐服务框架中跑多种策略,支持多个算法工程师在一个框架内并行开发/实验多个推荐算法,配合分流服务实现推荐算法实验平台。

策略服务

策略服务,又叫策略module服务,它实现了一个个推荐内核下游的推荐module。在推荐内核执行各个推荐步骤时,每个步骤中都可能存在不同的算法/策略,这些算法/和策略可能需要调用一些和策略绑定比较紧密的module服务,它们并不是通用服务,而是相对专有的服务。

技术分享图片

例如:排序module服务,需要有一套方便,高效,可扩展的排序服务。

该服务的实现要点是:实现一个通用的服务框架,让算法人员能够快速的生成module服务,并将自己的需求在module中实现,且能够在算法实验平台方便的进行module服务的调用。

 

四、效果评估子系统

效果评估子系统又分为推荐服务调用端浏览器上报端实施效果分析端

推荐服务调用端

调用推荐系统接口的58同城业务线,例如招聘业务线。

浏览器上报端

浏览器端js,调用招聘服务时,能够在页面展现出推荐系统中推荐出来的结果,并且能够知道哪些推荐结果被点击了,且会将这些被展示的与被点击的信息进行上报。

实时效果分析端

浏览器js将被展示的推荐结果,与被点击的推荐结果进行上报后,有一个实时效果观察的平台,第一时间得知上线后推荐算法/推荐策略的效果。

 

五、总体架构图

技术分享图片

综合前面章节所述,58同城推荐系统总体架构图如上。

推荐系统是一个工程、算法和业务的综合性系统,上线了推荐系统,从此58同城正式进入了智能数据推荐的时代。

 

关于-58同城推荐业务

58同城是一个用户与商户共依的平台,信息的推荐对58同城而言至关重要。以58同城的招聘业务线为例:在招聘用户端,为用户推荐更多很好的相关职位,能够增强用户的体验,也增加了58同城的PV;在招聘商家端,为商户推荐更多更好的相关简历,能够增强商家的体验,促进简历的下载量,从而增加58同城的收入。

 

以上内容均来自微信公众号“架构师之路”胡剑老师的文章,欢迎关注。

[2016-03-18][架构]读《58同城沈剑:好的架构不是设计出来的,而是演进出来的》

文章摘录:———————————————————————-58同城从小流量、中等规模流量、大流量,到更大的流量过程中,架构是 查看详情

flink在58同城的应用与实践

简介: 58同城的实时SQL建设以及如何从Storm迁移至Flink。本文整理自58同城实时计算平台负责人冯海涛在FlinkForwardAsia2020分享的议题《Flink在58同城应用与实践》,内容包括:实时计算平台架构实时SQL建设Storm迁移Flink实... 查看详情

基于go语言实现高并发推荐系统架构设计

...封幼林在QCon+大厂案例(2021冬季北京站)的分享《高并发推荐系统架构设计》。  作者|封幼林 编辑|贾亚宁 你好!我是封幼林,在小年糕负责推荐系统,主要从事服务架构相关工作。今天我要和你分享的话题是《高... 查看详情

好架构是进化来的,不是设计来的(58架构演进)

...进化而来的,不是设计出来的----58沈剑 核心内容:58同城流量从小到大过程中,架构是如何演进的?遇到了哪些问题?以及如何解决这些问题?核心观点:好的架构不是设计出来的,而是进化而来的。如何演进:站点流量在... 查看详情

flink在58同城的应用与实践

摘要:本文整理自58同城实时计算平台负责人冯海涛在FlinkForwardAsia2020分享的议题《Flink在58 同城应用与实践》,内容包括:实时计算平台架实时 SQL建设Storm迁移Flink 实践一站式实时计算平台后续规划一、实时计算平... 查看详情

flink在58同城的应用与实践

摘要:本文整理自58同城实时计算平台负责人冯海涛在FlinkForwardAsia2020分享的议题《Flink在58 同城应用与实践》,内容包括:实时计算平台架实时 SQL建设Storm迁移Flink 实践一站式实时计算平台后续规划一、实时计算平... 查看详情

流动的推荐系统——兴趣feed技术架构与实现

流动的推荐系统我们经常谈论的推荐系统(RecommenderSystem),从形式上看是比较“静态”的推荐,通常位于网页主要信息的周边,比如电商网站的“看了又看”、“买了又买”。这种推荐系统在大多数场景下无法独立撑起一款产... 查看详情

个性化推荐系统架构设计

推荐系统设计1.推荐系统要素2.推荐系统架构1.推荐系统要素UI和UE(前端界面)数据(Lambda架构)业务知识算法2.推荐系统架构推荐系统整体架构大数据Lambda架构由Twitter工程师NathanMarz(storm项目发起人)提出Lambda系统架构提供了一个结合... 查看详情

个性化推荐系统架构设计

推荐系统设计1.推荐系统要素2.推荐系统架构1.推荐系统要素UI和UE(前端界面)数据(Lambda架构)业务知识算法2.推荐系统架构推荐系统整体架构大数据Lambda架构由Twitter工程师NathanMarz(storm项目发起人)提出Lambda系统架构提供了一个结合... 查看详情

apacheflink2022新年大礼包

...进历程2021年网易云音乐实时计算平台发展和挑战Flink在58同城的应用与实践伴鱼:借助Flink完成机器学习特征系统的升级Flink在顺丰的应用实践ApacheFlink在京东的实践与优化SmartNews:基于Flink加速Hive日表生产的实践 查看详情

软件架构软件框架设计模式

...件的知识体,提升框架的设计水平。六.常见设计模式:推荐书籍《设计模式— 查看详情

对保温系统与电梯系统进行架构设计

一、 实验内容使用面向对象设计方法对保温系统与电梯系统进行架构设计。二、实验目的学会如何分析一个系统的架构并进行设计,学会用面向对象方法实现架构设计。三、实验过程问题C.保温系统(一)案例背景如果主开... 查看详情

1000个大数据/人工智能毕设选题推荐

前言正值毕业季我看到很多同学都在为自己的毕业设计发愁Maynor在网上搜集了1000个大数据的毕设选题,希望对大家有帮助~适合大数据毕业设计的项目,完全可以作为本科生当前较新的毕业设计题目选择方向。大数... 查看详情

java架构师大型分布式高并发电商项目实战,性能优化,集群,亿级高并发,web安全,缓存架构实战

...,“架构师之路”公众号作者。曾任百度高级工程师,58同城高级架构师,58同城技术委员会主席,58同城C2C技术部负责人。内容介绍1.大数据量时,数据库架构设计原则2.数据库水平切分架构设计方向3.用户中心,帖子中心,好友... 查看详情

微信小程序|基于chatgpt实现电影推荐小程序(代码片段)

文章目录**效果预览**1、根据电影明星推荐2、根据兴趣标签推荐3、根据电影名推荐一、需求背景二、项目原理及架构2.1实现原理(1)根据用户的兴趣标签(2)根据关联类似主题的题材(3)根据特定的电... 查看详情

基于hadoop的信息流推荐系统设计与实现开题报告

下载地址:https://download.csdn.net/download/qq_31293575/18338145一、研究或设计的目的和意义:因为高速发展的信息技术和不断壮大的教育规模,使得高校行政办公室和教学活动产生大量数据资源,各类文件、课本和其他信息的分享和交... 查看详情

系统设计与开发策略

1、系统实现过程业务逻辑的抽象、技术架构的细化、业务服务的实现、业务功能的验证、系统的整合、系统的扩展、系统的部署业务逻辑的抽象:沟通、建模与评审、工具(UML、便捷方法)【一般由产品经理、技术经理负责,... 查看详情

转载数据库软件架构设计些什么

...萧总邀请,上周五晚上在“高效运维1号群”内分享了《58同城数据库软件架构设计与实践》(这个topic今年在数据库大会上分享过),应组织方要求,发出纪要。一、基本概念二、数据库架构设计思路(1)可用性(2)读性能(3... 查看详情