CN112948450B - 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 - Google Patents
用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN112948450B CN112948450B CN202110215212.1A CN202110215212A CN112948450B CN 112948450 B CN112948450 B CN 112948450B CN 202110215212 A CN202110215212 A CN 202110215212A CN 112948450 B CN112948450 B CN 112948450B
- Authority
- CN
- China
- Prior art keywords
- model
- user
- term
- recommended
- short
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012545 processing Methods 0.000 title claims abstract description 38
- 238000004364 calculation method Methods 0.000 claims abstract description 79
- 230000007774 longterm Effects 0.000 claims abstract description 75
- 238000004422 calculation algorithm Methods 0.000 claims description 32
- 230000015654 memory Effects 0.000 claims description 30
- 230000002688 persistence Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 13
- 238000005094 computer simulation Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 7
- 230000004044 response Effects 0.000 description 16
- 230000006399 behavior Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 7
- 230000002085 persistent effect Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000003066 decision tree Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007477 logistic regression Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种用于实时推荐的Flink流式处理引擎方法、装置及计算机设备,属于大数据推荐技术领域,方法包括:根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,分布式存储层存储有预先获取的长期特征;在接收到来自消息队列的事件时,从分布式存储层中读取待推荐用户的长期特征以及短期特征;根据预测模型文件、待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果;将待推荐用户的偏好预测结果写入分布式存储层中。本申请能够实现推荐系统中近线流式推荐的功能需求,同时兼顾推荐系统工作过程中可能出现的消息可靠性、容灾、性能、事务性等问题。
Description
技术领域
本申请涉及大数据推荐技术领域,尤其涉及一种用于实时推荐的Flink流式处理引擎方法、装置及计算机设备。
背景技术
随着用户体验的升级,推荐的实时性要求也相应的越来越高。传统的两层式推荐架构(应用层、离线层)会导致应用层功能复杂、响应超时以及数据不一致的现象产生。此外,在离线层实现推荐虽然快速但推荐时间精度只能到天;而由于用户的兴趣一般随着时间衰减急剧减小,如果不能在第一时间推送给用户感兴趣的物品则会导致转化率下降乃至用户流失。这使得构建一套能够实时分析用户行为并进行预测的实时推荐系统,使系统能够及时响应就变得非常有价值。
实时推荐指的是可以实时感知用户行为的变化,并且根据用户实时产生的用户行为给用户推送精准的内容。目前典型的推荐系统分为三层架构,即:在线、近线和离线。通过离线或者近线的模型训练,近线的实时特征工程以及召回、排序,最后由在线层进行业务强制干扰以及兜底,充分体现了其在海量场景高速响应方面的价值。
基于流式处理的推荐算法引擎则在近线部分处于核心地位,而传统做法例如有使用STORM或者SPARKSTREAMING来实现,存在着如下问题:
1)缺乏对最新的用户行为数据的利用,不能对用户特征模型进行更新,故无法实时感知用户兴趣的实时变化;
2)无法同时兼具消息可靠性、容灾性、性能、通用性,导致算法模型部署困难难以完成实时响应;
3)使用JAVA或PYTHON语言进行开发技术细节过多,导致开发缓慢,难以及时响应业务需求。
发明内容
为了解决上述背景技术中提到的至少一个问题,本申请提供了一种用于实时推荐的Flink流式处理引擎方法、装置及计算机设备。本申请的技术方案如下:
第一方面,提供了一种用于实时推荐的Flink流式处理引擎方法,包括:
根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,所述分布式存储层存储有预先获取的长期特征;
在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征;
根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果;
将所述待推荐用户的偏好预测结果写入所述分布式存储层中。
进一步地,所述根据计算模型文件对消息队列中的日志进行短期特征计算之前,所述方法还包括:
获取配置文件,所述配置文件中包含配置参数;
从模型仓库中加载所述配置参数对应的预先训练好的模型文件,将所述模型文件发送至所述Flink流式处理引擎的各个分布式节点,所述模型文件包括所述计算模型文件及所述预测模型文件。
进一步地,所述获取配置文件,包括:
从分布式配置集群中同步至少一个配置文件,并将至少一个所述配置文件加载至内存中。
进一步地,所述从模型仓库中加载所述配置参数对应的模型文件,包括:
从所述配置参数中读取预先配置的模型标识参数,所述模型标识参数包括命名空间、模型名称以及模型版本;
从模型仓库中加载所述模型标识参数对应的模型文件。
进一步地,所述根据计算模型文件对消息队列中的日志进行短期特征计算,包括:
通过各个所述分布式节点根据所述计算模型文件对所述日志进行短期特征计算;
所述根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果,包括:
通过各个所述分布式节点根据所述预测模型文件,生成预测模型;
将所述待推荐用户的长期特征以及短期特征输入到所述预测模型进行实时预测,得到所述待推荐用户的偏好预测结果。
进一步地,所述分布式存储层包括缓存组件和持久化组件,所述在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征,包括:
通过各个所述分布式节点从本地缓存中读取所述待推荐用户的长期特征以及短期特征;
若所述本地缓存读取失败,则从所述缓存组件中读取所述待推荐用户的长期特征以及短期特征;
若所述缓存组件读取失败,则从所述持久化组件中读取所述待推荐用户的长期特征以及短期特征,并通过异步方式将读取到的特征写入所述缓存组件中。
进一步地,所述计算模型文件为SQL模型文件,所述预测模型文件为PMML模型文件。
第二方面,提供了一种用于实时推荐的Flink流式处理引擎装置,包括:
算法计算模块,用于根据计算模型文件对消息队列中的日志进行短期特征计算;
数据推送模块,用于将计算得到的短期特征存储到分布式存储层,所述分布式存储层存储有预先获取的长期特征;
特征查询模块,用于在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征;
所述算法计算模块,还用于根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果;
所述数据推送模块,还用于将所述待推荐用户的偏好预测结果写入所述分布式存储层中。
进一步地,所述装置还包括:
配置同步模块,用于获取配置文件,所述配置文件中包含配置参数;
模型加载模块,用于从模型仓库中加载所述配置参数对应的预先训练好的模型文件,将所述模型文件发送至所述Flink流式处理引擎的各个分布式节点,所述模型文件包括所述计算模型文件及所述预测模型文件。
进一步地,所述配置同步模块具体用于:
从分布式配置集群中同步至少一个配置文件,并将至少一个所述配置文件加载至内存中。
进一步地,所述模型加载模块具体用于:
从所述配置参数中读取预先配置的模型标识参数,所述模型标识参数包括命名空间、模型名称以及模型版本;
从模型仓库中加载所述模型标识参数对应的模型文件。
进一步地,所述算法计算模块具体用于:
通过各个所述分布式节点根据所述计算模型文件对所述日志进行短期特征计算;
所述算法计算模块具体还用于:
通过各个所述分布式节点根据所述预测模型文件,生成预测模型;
将所述待推荐用户的长期特征以及短期特征输入到所述预测模型进行实时预测,得到所述待推荐用户的偏好预测结果。
进一步地,所述分布式存储层包括缓存组件和持久化组件,所述特征查询模块具体用于:
通过各个所述分布式节点从本地缓存中读取所述待推荐用户的长期特征以及短期特征;
若所述本地缓存读取失败,则从所述缓存组件中读取所述待推荐用户的长期特征以及短期特征;
若所述缓存组件读取失败,则从所述持久化组件中读取所述待推荐用户的长期特征以及短期特征,并通过异步方式将读取到的特征写入所述缓存组件中。
进一步地,所述计算模型文件为SQL模型文件,所述预测模型文件为PMML模型文件。
第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下操作步骤:
根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,所述分布式存储层存储有预先获取的长期特征;
在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征;
根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果;
将所述待推荐用户的偏好预测结果写入所述分布式存储层中。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下操作步骤:
根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,所述分布式存储层存储有预先获取的长期特征;
在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征;
根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果;
将所述待推荐用户的偏好预测结果写入所述分布式存储层中。
本申请提供的技术方案至少具有如下有益效果:
1.消息可靠性保障与扩缩容:分布式流式引擎Flink本身带来了精确一次的消息可靠性和灵活的扩缩容能力,平时可以减少资源消耗而大促时增加资源以应对峰值流量;
2.降低算法开发难度:算法人员更多的使用SQL、Python、机器学习等语系,而非JAVA语系,本申请使用了SQL和PMML通用语言标准,从而降低了算法的开发难度与耗时,并解决了很大一部分技术问题;
3.降低响应时长:使用离线的算法响应时长通常在小时级别,并且通常无法保障运行时间,而使用本引擎基础的响应时间为毫秒级别,从而使实时推荐和特征工程成为可能;
4.一站式的模型部署:由离线训练所得到的模型可存储于通用的模型仓库中,然后指定本引擎读取给定坐标的模型,引擎便会自动启动部署,而无需大量的部署操作,减少失误和时间成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的流式处理引擎与相关组件之间的数据交互示意图;
图2为本申请提供的Flink流式处理引擎的结构示意图;
图3为本申请提供的一种用于实时推荐的Flink流式处理引擎方法流程图;
图4为本申请提供的模型文件的加载流程图;
图5为本申请提供的三级缓存特征读取流程图;
图6为本申请提供的一种集群部署架构图;
图7为本申请实施例提供的一种计算机设备的内部结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1为本申请提供的流式处理引擎与相关组件之间的数据交互示意图。如图1所示,黑色线箭头表示数据流,灰色线箭头表示文件流,长期特征由离线数据同步器(LongTerm Feature Synchronizer)101推送至至少包含持久化组件(Persistence)和缓存组件(Cache)的NOSQL存储层102中。流式处理引擎(Stream Engine)103从分布式配置集群(Configuration Zookeeper)104读取配置文件,并从模型仓库(Model Repository)105加载预先训练好的模型文件(例如,SQL模型文件及PMML模型文件)。流式引擎(StreamEngine)103使用消息队列(MQ Kafka)106中的日志进行短期特征工程,计算后将数据存入NOSQL存储层102中的持久化组件和缓存组件后,向消息队列106回写事件。此后,预测用流式引擎103受此事件触发,从NOSQL存储层102中获取长期特征及短期特征,并使用已加载的模型文本及脚本进行实时预测,最后将结果写入NOSQL存储层102中的持久化组件(Persistence)和缓存组件(Cache)。从而构成读写分离的流式结构。在实际应用中,上述的流式处理引擎采用Flink组件,在消息保障性、开发量、吞吐量上均优于Storm。分布式配置集群采用Zookeeper,可以可与Hadoop集群结合。消息队列采用Kafka,具有高吞吐低时延的特点,符合日志式和消息触发场景。持久化存储组件采用HBase,具有分布式、写高读低、存储容量大、列可扩展的特点。缓存组件采用Redis,具有分布式、读高写高、存储容量小的特点,符合应用场景。
图2为本申请提供的Flink流式处理引擎的结构示意图。如图2所示,Flink流式处理引擎(Stream Engine)包含以下模块:配置同步模块(Configuration Synchronizer)、模型加载模块(Model Loader)、MQ连接模块(MQ Connector)、特征查询模块(Queryer)、算法计算模块(Algorithm Calculation)、数据推送模块(Data Pusher)。其中,配置同步模块、模型加载模块、MQ连接模块可以位于一调度机上,特征查询模块(Queryer)以及算法计算模块可以位于分布式集群中的各个分布式节点上,调度机可以与各个分布式节点进行信息交互。
配置同步模块用于从分布式配置集群上同步各种不同类型的配置文件并加载至内存中,为推荐系统提供必要的参数配置,包括不限于模型超参、特征权重和推荐结果数量限制等,例如根据用户配置参数从模型仓库中选择相应推荐算法进行预测,业务人员还可以通过系统配置页面对可配置的推荐结果进行一定的干预。
模型加载模块用于从模型仓库中加载SQL模型文件或PMML模型文件,并利用分布式文件缓存的原理将文件发送至各个分布式节点,以供分布式任务使用。
MQ连接模块用于从消息队列MQ中获取日志数据,以便通过算法计模块进行短期特征计算,还用于从消息队列中获取事件,以便算法计模块基于事件从NOSQL存储层获取长期特征及短期特征,此外还用于将算法计模块返回的响应事件写入消息队列MQ中,以供下游系统使用。
特征查询模块用于从NOSQL集群中单条或批量的查询特征数据。由于处于大数据场景下,对特征数据读取的要求是响应既要短又能大批量读取并可持久化。为了达到性能要求,可以使用三层缓存加读写分离机制的方式。
算法计算模块位于各个分布式节点上,其使用由模型加载模块预先加载的模型文件,在接收到来自消息队列的事件后,使用原生的流式SQL计算功能计算特征或使用PMML预测功能预测结果。
数据推送模块将结果数据同时写入持久化组件和缓存组件,并获得持久化组件和缓存组件的响应后将触发事件写入消息队列中,从而供下游使用。
为了能够实现推荐系统中近线流式推荐的功能需求,同时兼顾推荐系统工作过程中可能出现的消息可靠性、容灾、性能、事务性等问题,本申请通过分布式流计算框架Flink确保对全局和局部状态的存储管理和精准一次的可靠性保障,通过使用通用的模型仓库客户端以及符合SQL和PMML标准的模型文件进行预测计算,实现自动化的模型加载,解决了算法模型部署困难难以实时响应的问题;通过特征数据仓库的读写分离和三层缓存机制,保证海量数据读取的快速与可靠性。
下面通过多个实施例来进一步说明本申请的技术方案。
在一个实施例中,提供了一种用于实时推荐的Flink流式处理引擎方法,参照图3所示,该方法可以包括步骤:
301,根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,分布式存储层存储有预先获取的长期特征。
其中,消息队列是消息中间件的一种实现方式,例如kafca消息队列,消息队列中存储有日志数据,日志数据可以包括预设时间段内的用户行为操作产生的行为数据,行为操作例如预设时间段内用户对于某个APP页面上的某个商品对象的浏览、点击、收藏、分享等。其中,预设时间段可以根据实际需要进行设定,例如设置为1天、3天或7天等,此外本申请对日志数据的来源不作限定,例如日志数据可以来自于应用APP。
其中,分布式存储层可以采用NOSQL存储层(非关系型的数据库),包括缓存组件和持久化组件,缓存组件可以采用缓存组件Redis,具有分布式、读高写高、存储容量小的特点,可以存放一段时间内(例如一年内)的数据;持久化组件可以采用持久化存储组件HBase,具有分布式、写高读低、存储容量大、列可扩展的特点,可以存放过期时间较长(例如超过一年)的数据。其中,缓存组件和持久化组件均可以用于存储与用户操作行为相关的长期特征和短期特征。
上述的长期特征用于反映用户关于指定商品长期偏好情况,包括用户基础题特征、用户长期行为特征以及其他特征,其中,用户基础特征,例如用户年龄、性别、年龄、性别、职业、居住地、爱好等;用户行为特征,指一段时间内在电商平台的购物行为统计值,例如30天、90天、180天内用户在某个商品类目下的操作行为的统计特征。长期特征可以从用户数据中进行提取出,例如利用经过离线数据训练好的长期模型从用户数据中提取出用户的长期特征,本申请实施例对此不作具体限定。
上述的短期特征用于反映用户关于指定商品的短期偏好情况,可以从用户在预设时间段内产生的行为操作数据中提取得到,例如近7天内产生的行为操作数据。
具体地,Flink流式处理引擎可以按照预设时间间隔从消息队列获取日志数据,利用预设获取的计算模型文件对日志数据中的用户行为数据进行短期特征计算,并将计算得到的短期特征分别存储至分布式存储层中的缓存组件和持久化组件。其中,预设时间间隔可以根据实际需要进行设定,例如设置为10s。可以采用机器学习算法对样本用户的原始数据进行训练生成短期模型,得到短期模型的计算模型文件。其中,机器学习算法可以采用迭代决策树、逻辑回归或支持向量机,本申请实施例对此不作限定。
302,在接收到来自消息队列的事件时,从分布式存储层中读取待推荐用户的长期特征以及短期特征。
其中,Flink流式处理引擎将用户的短期特征存入分布式存储层中的持久化组件和缓存组件后,会向消息队列回写事件。
具体地,Flink流式处理引擎在确定到消息队列成功接收到事件后,受该事件触发可以从分布式存储层中的缓存组件和持久化组件获取待推荐用户的长期特征及短期特征。其中,待推荐用户的数量可以是一个或多个,本申请实施例对此不作限定。
其中,上述待推荐用户可以是指需要推荐感兴趣内容的用户,这里的内容可以是商品信息,其中可以基于预设的用户标识确定待推荐用户。
303,根据预测模型文件、待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果。
其中,待推荐用户的偏好预测结果可以包括待推荐的商品对象。
具体地,Flink流式处理引擎可以根据预先获取的预测模型文件生成预测模型,根据预测模型对待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果。
其中,可以预先基于样本用户的长期特征、短期特征以及样本用户的偏好商品对象作为训练样本,采用机器学习算法进行训练生成预测模型,得到预测模型的预测模型文件。其中,机器学习算法可以采用迭代决策树、逻辑回归或支持向量机,本申请实施例对此不作限定。
本实施例中,由于预测模型文件是通过用户的长期特征与短期模型进行训练学习得到的,不但利用了用户长期的特征数据,而且兼顾了用户近期(最新)的特征数据,因此能够更准确地预测出待推荐用户的偏好商品对象,有效地提高用户推荐内容的精确度以及可靠性。
304,将待推荐用户的偏好预测结果写入分布式存储层中。
具体地,Flink流式处理引擎可以将待推荐用户的偏好预测结果同时写入分布式存储层中的缓存组件和持久化组件,并在获取到缓存组件和持久化组件返回的响应结果后,将触发事件写入消息队列中,以将待推荐用户的偏好预测结果供下游系统使用。
本申请实施例提供一种用于实时推荐的Flink流式处理引擎方法,通过分布式流式引擎Flink本身带来了精确一次的消息可靠性和灵活的扩缩容能力,因此能够保证系统的消息可靠性以及扩缩容能力,平时可以减少资源消耗而大促时增加资源以应对峰值流量;使用离线的算法响应时长通常在小时级别,并且通常无法保障运行时间,而使用本引擎基础的响应时间为毫秒级别,从而使实时推荐和特征工程成为可能,由此有效地降低了响应时长。
在一个实施例中,上述步骤301根据计算模型文件对消息队列中的日志进行短期特征计算之前,方法还可以包括:
获取配置文件,配置文件中包含配置参数;
从模型仓库中加载配置参数对应的预先训练好的模型文件,将模型文件发送至Flink流式处理引擎的各个分布式节点,模型文件包括计算模型文件及预测模型文件。
其中,上述获取配置文件,可以包括:
从分布式配置集群中同步至少一个配置文件,并将至少一个配置文件加载至内存中。
具体地,可以从Flink流式处理引擎中的配置同步模块从分布式配置集群中同步不同类型的配置文件,并将配置文件发送至位于各个分布式节点的算法计算模块,以使算法计算模块将配置文件加载到的分布式节点的内存中。
其中,上述从模型仓库中加载配置参数对应的模型文件,可以包括:
从配置参数中读取预先配置的模型标识参数,并从模型仓库中加载模型标识参数对应的模型文件,模型标识参数包括命名空间、模型名称以及模型版本。
在一个具体示例中,如图4所示,上述模型文件的加载过程可以包括步骤:
a.在Flink流式处理引擎的应用提交阶段,初始化模型仓库客户端;
b.将模型文件及相关脚本配置文件下载至Flink流式处理引擎所在的设备;
c.由该设备使用分布式文件缓存提交模型及相关文件至各个分布式节点;
d.各个节点在Task加载时加载模型仓库客户端,并根据配置获取需使用的模型加载至内存中,并生成相应的UDF;
e.预测时使用内存中的模型文件进行预测。
本实施例中,在离线训练的模型文件提交至模型仓库中后,通过配置参数中的所需使用模型文件的模型标识参数即可自动加载模型至流式处理引擎并运行,从而能够避免算法模型部署困难难以完成实时响应,实现了一站式模型的自动启动部署,而无需大量的部署操作,减少失误和时间成本。
在一个实施例中,上述步骤301根据计算模型文件对消息队列中的日志进行短期特征计算,可以包括:
通过各个分布式节点根据计算模型文件对日志进行短期特征计算。
上述步骤303根据预测模型文件、待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果,可以包括:
通过各个分布式节点根据预测模型文件,生成预测模型;
将待推荐用户的长期特征以及短期特征输入到预测模型进行实时预测,得到待推荐用户的偏好预测结果。
本申请,利用FLINK本身分布式消息响应的特性,最大化的利用其并行能力扩增计算能力同时缩短预测时间。
在一个实施例中,分布式存储层包括缓存组件和持久化组件,在接收到来自消息队列的事件时,上述步骤302中从分布式存储层中读取待推荐用户的长期特征以及短期特征,可以包括:
通过各个分布式节点从本地缓存中读取待推荐用户的长期特征以及短期特征;若本地缓存读取失败,则从缓存组件中读取待推荐用户的长期特征以及短期特征;若缓存组件读取失败,则从持久化组件中读取待推荐用户的长期特征以及短期特征,并通过异步方式将读取到的特征写入缓存组件中。
具体地,每个分布式节点通过特征查询模块(Queryer),基于预先获取的配置参数进行读取NOSQL存储层中的不同特征。
更为具体地,参照图5所示的三级缓存特征读取流程图,特征查询模块先从本地一级缓存中读取,如命中则直接返回,未命中则从分布式二级缓存中读取,二级缓存命中返回,未命中从持久层中读取,并使用数据同步器通过异步的方式将结果回写至二级缓存以备下次使用。
其中一级缓存为本机内存,只保留相关数据,容量比较小、过期时间较短(应根据业务配置)、使用LRU策略。二级缓存为分布式缓存,保存部分数据,容量稍大、过期时间稍长(应根据业务配置),同样适用LRU策略,同时为防止雪崩效应对过期时间进行一定范围的随机增减。三级为持久化,保留全量数据,可以设置一年或者更长的时间再过期,如需保留更长时间可以交换至离线数仓中。而数据同步器拥有一个队列,调用cache方法只是简单的放入队列;可以单独起一个线程,然后再由该线程消耗该队列中数据进入分布式缓存。
本实施例中,通过三级缓存机制的保障,能够大大降低特征数据的丢失,或者因为特征数据加载过程中出错导致推荐结果出错的可能,因此能够同时保障特征数据读取的性能和可靠性,从而提高了整个系统的健壮性。
在一个实施例中,计算模型文件为SQL模型文件,预测模型文件为PMML模型文件。
本实施例中,流式处理引擎是基于FLINK和PMML技术上实现的,其能够使得算法人员在不具备Java语言能力的基础下,使用通用模型仓库中的流式SQL及PMML模型文件即可完成对特征实时处理及实时模型预测,从而解决了使用JAVA或PYTHON语言进行开发技术细节过多而导致开发缓慢,难以及时响应业务需求的问题。
图6为本申请提供的一种集群部署架构图,该集群部署架构用于实现上述实施例中的用于实时推荐的Flink流式处理引擎方法,具体地,该集群部署架构可以通过如下方式进行部署:
1.准备Zookeeper集群:具体的Zookeeper集群部署方式已很成熟,可以按照图中推荐模式进行部署或自行调优。但需要注意,Hadoop相关的Zookeeper可以使用一套,而Kafka的需要使用另外一套。
2.准备Hadoop集群:具体Hadoop集群部署方式已很成熟,这里不再赘述,建议使用物理机而非虚机,并需要在集群上安装HBase和Flink组件。
3.准备Redis集群:建议采用部署模式为3台sentinel,与N*2组服务器,其中N为master节点数量,具体N需根据业务规模确定,一主一备所以为N*2。具体Redis集群部署方法已很成熟,这里不再赘述,但建议与计算节点靠近,最好在一个路由之内,确保较低的网络时延。
4.准备Kafka集群:具体的Kafka集群部署方式已经很成熟,这里不再赘述,可以参考官网。
5.准备一台调度机:安装Hadoop、Flink组件,用于提交引擎应用。
6.启动Zookeeper、HDFS、YARN、Kafka、Redis集群。
7.在HDFS上新建模型仓库,并将已训练好的模型发布到仓库中。
8.在调度机上使用Flink提交脚本并指定命令行参数,其中模型的坐标为必须参数,其余可选。
在一个实施例中,提供了一种用于实时推荐的Flink流式处理引擎装置,该装置可以包括:
算法计算模块,用于根据计算模型文件对消息队列中的日志进行短期特征计算;
数据推送模块,用于将计算得到的短期特征存储到分布式存储层,分布式存储层存储有预先获取的长期特征;
特征查询模块,用于在接收到来自消息队列的事件时,从分布式存储层中读取待推荐用户的长期特征以及短期特征;
算法计算模块,还用于根据预测模型文件、待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果;
数据推送模块,还用于将待推荐用户的偏好预测结果写入分布式存储层中。
在一个实施例中,装置还包括:
配置同步模块,用于获取配置文件,配置文件中包含配置参数;
模型加载模块,用于从模型仓库中加载配置参数对应的预先训练好的模型文件,将模型文件发送至Flink流式处理引擎的各个分布式节点,模型文件包括计算模型文件及预测模型文件。
在一个实施例中,配置同步模块具体用于:
从分布式配置集群中同步至少一个配置文件,并将至少一个配置文件加载至内存中。
在一个实施例中,模型加载模块具体用于:
从配置参数中读取预先配置的模型标识参数,模型标识参数包括命名空间、模型名称以及模型版本;
从模型仓库中加载模型标识参数对应的模型文件。
在一个实施例中,算法计算模块具体用于:
通过各个分布式节点根据计算模型文件对日志进行短期特征计算;
算法计算模块具体还用于:
通过各个分布式节点根据预测模型文件,生成预测模型;
将待推荐用户的长期特征以及短期特征输入到预测模型进行实时预测,得到待推荐用户的偏好预测结果。
在一个实施例中,分布式存储层包括缓存组件和持久化组件,特征查询模块具体用于:
通过各个分布式节点从本地缓存中读取待推荐用户的长期特征以及短期特征;
若本地缓存读取失败,则从缓存组件中读取待推荐用户的长期特征以及短期特征;
若缓存组件读取失败,则从持久化组件中读取待推荐用户的长期特征以及短期特征,并通过异步方式将读取到的特征写入缓存组件中。
在一个实施例中,计算模型文件为SQL模型文件,预测模型文件为PMML模型文件。
关于基于流式处理的用户推荐装置的具体限定可以参见上文中对于用于实时推荐的Flink流式处理引擎方法的限定,在此不再赘述。上述基于流式处理的用户推荐装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该服务器包括通过系统总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与其他设备通过网络连接通信。该计算机程序被处理器执行时以实现一种用于实时推荐的Flink流式处理引擎方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,分布式存储层存储有预先获取的长期特征;
在接收到来自消息队列的事件时,从分布式存储层中读取待推荐用户的长期特征以及短期特征;
根据预测模型文件、待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果;
将待推荐用户的偏好预测结果写入分布式存储层中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,分布式存储层存储有预先获取的长期特征;
在接收到来自消息队列的事件时,从分布式存储层中读取待推荐用户的长期特征以及短期特征;
根据预测模型文件、待推荐用户的长期特征以及短期特征进行实时预测,得到待推荐用户的偏好预测结果;
将待推荐用户的偏好预测结果写入分布式存储层中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种用于实时推荐的Flink流式处理引擎方法,其特征在于,包括:
根据计算模型文件对消息队列中的日志进行短期特征计算,将计算得到的短期特征存储到分布式存储层,所述分布式存储层存储有预先获取的长期特征;
在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征;
根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果;
将所述待推荐用户的偏好预测结果写入所述分布式存储层中;
其中,所述根据计算模型文件对消息队列中的日志进行短期特征计算之前,所述方法还包括:
获取配置文件,所述配置文件中包含配置参数;
从模型仓库中加载所述配置参数对应的预先训练好的模型文件,将所述模型文件发送至所述Flink流式处理引擎的各个分布式节点,所述模型文件包括所述计算模型文件及所述预测模型文件;
其中,所述从模型仓库中加载所述配置参数对应的模型文件,包括:
从所述配置参数中读取预先配置的模型标识参数,所述模型标识参数包括命名空间、模型名称以及模型版本;
从模型仓库中加载所述模型标识参数对应的模型文件。
2.根据权利要求1所述的方法,其特征在于,所述获取配置文件,包括:
从分布式配置集群中同步至少一个配置文件,并将至少一个所述配置文件加载至内存中。
3.根据权利要求1所述的方法,其特征在于,
所述根据计算模型文件对消息队列中的日志进行短期特征计算,包括:
通过各个所述分布式节点根据所述计算模型文件对所述日志进行短期特征计算;
所述根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果,包括:
通过各个所述分布式节点根据所述预测模型文件,生成预测模型;
将所述待推荐用户的长期特征以及短期特征输入到所述预测模型进行实时预测,得到所述待推荐用户的偏好预测结果。
4.根据权利要求1所述的方法,其特征在于,所述分布式存储层包括缓存组件和持久化组件,所述在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征,包括:
通过各个所述分布式节点从本地缓存中读取所述待推荐用户的长期特征以及短期特征;
若所述本地缓存读取失败,则从所述缓存组件中读取所述待推荐用户的长期特征以及短期特征;
若所述缓存组件读取失败,则从所述持久化组件中读取所述待推荐用户的长期特征以及短期特征,并通过异步方式将读取到的特征写入所述缓存组件中。
5.根据权利要求1至4任一所述的方法,其特征在于,所述计算模型文件为SQL模型文件,所述预测模型文件为PMML模型文件。
6.一种用于实时推荐的Flink流式处理引擎装置,其特征在于,包括:
算法计算模块,用于根据计算模型文件对消息队列中的日志进行短期特征计算;
数据推送模块,用于将计算得到的短期特征存储到分布式存储层,所述分布式存储层存储有预先获取的长期特征;
特征查询模块,用于在接收到来自所述消息队列的事件时,从所述分布式存储层中读取待推荐用户的长期特征以及短期特征;
所述算法计算模块,还用于根据预测模型文件、所述待推荐用户的长期特征以及短期特征进行实时预测,得到所述待推荐用户的偏好预测结果;
所述数据推送模块,还用于将所述待推荐用户的偏好预测结果写入所述分布式存储层中;
配置同步模块,用于获取配置文件,配置文件中包含配置参数;
模型加载模块,用于从模型仓库中加载配置参数对应的预先训练好的模型文件,将模型文件发送至Flink流式处理引擎的各个分布式节点,模型文件包括计算模型文件及预测模型文件;
所述模型加载模块,还用于从配置参数中读取预先配置的模型标识参数,模型标识参数包括命名空间、模型名称以及模型版本;
所述模型加载模块,还用于从模型仓库中加载模型标识参数对应的模型文件。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一所述的方法。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110215212.1A CN112948450B (zh) | 2021-02-25 | 2021-02-25 | 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 |
CA3150183A CA3150183C (en) | 2021-02-25 | 2022-02-25 | Flink streaming processing engine method and device for real-time recommendation and computer equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110215212.1A CN112948450B (zh) | 2021-02-25 | 2021-02-25 | 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948450A CN112948450A (zh) | 2021-06-11 |
CN112948450B true CN112948450B (zh) | 2023-04-14 |
Family
ID=76246402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110215212.1A Active CN112948450B (zh) | 2021-02-25 | 2021-02-25 | 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112948450B (zh) |
CA (1) | CA3150183C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115499303A (zh) * | 2022-08-29 | 2022-12-20 | 浪潮软件科技有限公司 | 一种基于Flink的日志分析工具 |
CN116049190A (zh) * | 2023-01-18 | 2023-05-02 | 中电金信软件有限公司 | 基于Kafka的数据处理方法、装置、计算机设备和存储介质 |
CN116156263A (zh) * | 2023-03-06 | 2023-05-23 | 四川长虹电器股份有限公司 | 一种用户实时追剧处理方法 |
CN116628274B (zh) * | 2023-07-25 | 2023-09-22 | 浙江锦智人工智能科技有限公司 | 一种针对图数据库的数据写入方法、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126641A (zh) * | 2016-06-24 | 2016-11-16 | 中国科学技术大学 | 一种基于Spark的实时推荐系统及方法 |
CN111897861A (zh) * | 2020-06-30 | 2020-11-06 | 苏宁金融科技(南京)有限公司 | 一种内容推荐方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635204A (zh) * | 2018-12-21 | 2019-04-16 | 上海交通大学 | 基于协同过滤和长短记忆网络的在线推荐系统 |
-
2021
- 2021-02-25 CN CN202110215212.1A patent/CN112948450B/zh active Active
-
2022
- 2022-02-25 CA CA3150183A patent/CA3150183C/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126641A (zh) * | 2016-06-24 | 2016-11-16 | 中国科学技术大学 | 一种基于Spark的实时推荐系统及方法 |
CN111897861A (zh) * | 2020-06-30 | 2020-11-06 | 苏宁金融科技(南京)有限公司 | 一种内容推荐方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CA3150183A1 (en) | 2022-08-25 |
CA3150183C (en) | 2024-02-27 |
CN112948450A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112948450B (zh) | 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 | |
CN108958796B (zh) | 业务请求处理方法及装置、业务请求处理系统 | |
US9208189B2 (en) | Distributed request processing | |
US8200610B1 (en) | System and method for supporting the utilization of machine learning | |
EP3353671A1 (en) | Distributed data processing method and system | |
US20200379837A1 (en) | Automated recovery of webpage functionality | |
CN111078659B (zh) | 模型更新方法、装置、计算机可读存储介质和计算机设备 | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
CN110427258B (zh) | 基于云平台的资源调度控制方法及装置 | |
US20180302268A1 (en) | Systems and Methods for Real Time Streaming | |
CN111367792A (zh) | 一种测试方法、装置、存储介质及电子设备 | |
CN111752945B (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和系统 | |
CN112235396A (zh) | 内容处理链路调整方法、装置、计算机设备和存储介质 | |
CN107992354B (zh) | 用于降低内存负载的方法以及装置 | |
CN113220657A (zh) | 数据处理方法、装置及计算机设备 | |
US20140059162A1 (en) | Distributed information synchronization | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
CN115454420A (zh) | 人工智能算法模型部署系统、方法、设备及存储介质 | |
CN116911588A (zh) | 业务流程执行方法、装置、设备及存储介质 | |
CN115168384A (zh) | 数据一致性处理方法、装置、服务器及存储介质 | |
CN114756362A (zh) | 资源配额管理方法及系统、智能终端、存储介质 | |
CN115686811A (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
CN113918098A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN113377500B (zh) | 一种资源调度方法、装置、设备及介质 | |
CN115048564B (zh) | 分布式爬虫任务调度方法、系统和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 834, Yingying building, No.99, Tuanjie Road, yanchuangyuan, Jiangbei new district, Nanjing, Jiangsu Province Patentee after: Nanjing Xingyun Digital Technology Co.,Ltd. Address before: Room 834, Yingying building, No.99, Tuanjie Road, yanchuangyuan, Jiangbei new district, Nanjing, Jiangsu Province Patentee before: Suning financial technology (Nanjing) Co.,Ltd. |