Lambda架构与推荐在电商网站实践

news/2024/5/15 13:11:33/文章来源:https://blog.csdn.net/weixin_34081595/article/details/85967547
王富平 
现为1号店搜索与精准化部门架构师,之前在百度从事数据挖掘相关工作,对实时处理有着深刻的研究。一直从事大数据相关研发工作,2013年开发了一款SQL实时处理框架,致力于建设高可用的大数据业务系统。
一、Lambda架构
Lambda架构由Storm的作者Nathan Marz提出。 旨在设计出一个能满足实时大数据系统关键特性的架构,具有高容错、低延时和可扩展等特性。
Lambda架构整合离线计算和实时计算,融合不可变性(Immutability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop,Kafka,Storm,Spark,HBase等各类大数据组件。
1.1 Lambda架构理论点
Lambda架构对系统做了如下抽象:
Query = Function(All Data)
简言之:查询是应用于数据集的函数。 data是自变量,query是因变量。
Lambda有两个假设
不可变假设:Lambda架构要求data不可变,这个假设在大数据系统是普遍成立的:因为日志是不可变的,某个时刻某个用户的行为,一旦记录下来就不可变。
Monoid假设: 理想情况下满足Monoid 的function可以转换为:
query = function(all data/ 2) + function(all data/ 2)
Monoid的概念来源于范畴学(Category Theory),其一个重要特性是满足结合律。如整数的加法就满足Monoid特性:(a+b)+c=a+(b+c)
不满足Monoid特性的函数很多时候可以转化成多个满足Monoid特性的函数的运算。如多个数的平均值avg函数,多个平均值没法直接通过结合来得到最终的平均值,但是可以拆成分母除以分子,分母和分子都是整数的加法,从而满足Monoid特性。
1.2 Lambda架构
三层架构:批处理层、实时处理层、服务层,如图1所示:

图1
批处理层:批量处理数据,生成离线结果
实时处理层:实时处理在线数据,生成增量结果
服务层:结合离线、在线计算结果,推送上层
1.3 Lambda架构优缺点
优点:
实时:低延迟处理数据
可重计算:由于数据不可变,重新计算一样可以得到正确的结果
容错:第二点带来的,程序bug、系统问题等,可以重新计算
复杂性分离、读写分离
缺点:
开发和运维的复杂性:Lambda需要将所有的算法实现两次,一次是为批处理系统,另一次是为实时系统,还要求查询得到的是两个系统结果的合并,可参考 http://www.infoq.com/cn/news/2014/09/lambda-architecture-questions
1.4 典型推荐架构
实时处理范式的需求
推荐系统的最终目的是提高转化率,手段是推送用户感兴趣的、需要的产品。为什么需要实时处理范式?
1号店会根据你实时浏览、加车、收藏、从购物车删除、下单等行为,计算相关产品的权重,把相应的产品立刻更新到猜你喜欢栏位。同样在亚马逊搜索浏览了《基督山伯爵》这本书,亚马逊首页很快增加一行新推荐:包含4个版本《基督山伯爵》
答案不言而喻:让推荐引擎更具时效性。如图2、图3所示:

图2

图3
Netflix推荐架构
Netflix推荐架构如图4所示

图4
批处理层:从Hive、pig数据仓库,离线计算推荐模型,生成离线推荐结果
实时处理层:从消息队列(Hermes、User Event Queue)实时拉取用户行为数据与事件,生成在线推荐结果
服务层:结合离线、在线推荐结果,为用户生成推荐列表
二、1号店推荐系统实践
2.1. 推荐引擎组件
目前共有6大推荐引擎:
用户意图:实时分析用户行为,存储短期内兴趣偏好
用户画像:用户兴趣偏好的长期积累(商品类目、品牌等),自然属性(年龄、性别),社会属性(居住地、公司)
千人千面:群体分析(某一大学、某一小区、公司、好友群)
情境推荐:根据季节、节日、天气等特定情境做推荐
反向推荐:根据商品购买周期等,方向生成推荐结果
主题推荐:分析用户与主题的匹配度(如:美食家、极客等),根据主题对用户进行推荐
产品架构如图5所示

图5
今天主要讨论其中的主题推荐
2.2 主题推荐
首先主题推荐有三个步骤
建立关系(主题与商品,用户与商品,用户与主题)
选品,建立主题选品池
推荐,根据用户与主题的关系,从选品池为用户进行推荐 用公式表示就是:Topic_recommend = topic_recommend_function(offline data) 仅仅完成上面步骤,不需要“实时处理范式”就可以完成 后来主题推荐加入了“增量推荐”功能,通过用户的实时行为,对推荐结果进行调整
根据用户在线行为(浏览、购买、评论)等,调整离线推送的主题推荐结果 用公式表示就是Topic_recommend= mege ( topic_recommend_function1(offline data), topic_recommend_function2(online data) )
显然这演变成了一个Lambda架构,如图6所示

图6
2.3 主题推荐存储设计
存储最重要的就是 “主题推荐结果表”,需要满足如下特性
KV查询,根据用户id查询推荐结果;
保留一定时间内历史推荐数据。
根据上述两个特点,我们决定选用HBase。HBase的kv、多版本属性满足上述需求。有如下两个要点
读写分离
我们使用HBase主从方式,来读写分离,采用HBase主从的主要原因是
在CAP理论里面HBase牺牲的是可用性保证强一致性,flush、split、compaction都会影响可用性。检测region server挂断、恢复region都需要一定时间,这段时间内region数据不可用。
离线任务大量读写,对region server造成压力(gc、网络、flush、compaction),影响前端响应速度。
Cache
为了进一步提高响应速度,我们在服务层增加了一级缓存,采用1号店内部分布式缓存ycache(与memcache的封装)。
产品效果如图7所示

图7
2.4 HBase的维护
热点均衡:不要指望预split解决一切问题,热点的造成不可避免,尤其随着业务数据的增长,一些冷region该合并就合并。
做好为HBase修复bug的准备,尤其是升级新版本。
三、Lambda的未来
与其说Lambda的未来,不如说“实时处理范式”与“批处理范式”的未来。工程实践中Lambda之前提到的缺点有不少体会
逻辑一致性。许多公共数据分析逻辑需要实现两套,并且需要保证一致性。换个角度来看就是公共逻辑提取费力。
维护、调试两套平台
Jay Kreps认为Lambda架构是大数据方案中的临时解决方案,原因是目前工具不成熟。 他提供了一个替代架构,该架构基于他在Linkedin构建Kafka和Samza的经验,他还声称该架构在具有相同性能特性的同时还具有更好的开发和运维特性。

图8
让我想起了Spark streaming既可以做实时处理,又很自然做批量。让我想起了Storm的DRPC,就是为了做离线处理。有人说streaming本质是批量方式,实际上“实时”没有绝对界限,关键在于延迟。你认为10s,我也可以认为2s内才算实时。
对于Lambda架构问题,社区提出了Kappa架构,一套系统满足实时、批处理需求。 目前看来,是朝着 “实时”框架去主动包含“批量处理”的方向发展
四、个人的两点思考
两种不同的需求,一个框架搞定,是不是很熟悉?我们都想搞大而全,一劳永逸的事情,但许多往往被证明是错的。
MR是不是过时了?we need more,期待着数据与逻辑更便捷、更深入的交集。
五、Q&A
Q1:HBase你们遇到最诡异的是啥问题?
因为hdfs客户端没有设置读超时,导致HBase lock hang住,最后集群宕机。
Q2:玩推荐引擎首先想到的是mahout,王老师是否也有这方面的涉猎?
mahout、mlib 这些东西都是数据挖掘框架,主要看算法好坏,选谁区别不大。
Q3:日志量多大?Kafka集群配置怎样broker、replica等?碰到什么坑吗?
1天2T多数据,Kafka是整个公司公用。Kafka还是比较稳定,我们这边几乎没遇到问题,Storm问题出了不少。Kafka集群replica有些是2、有些3,broker是10。遇到大量数据的时候Kafka每隔一阵可能出现CLOSE_WAIT的问题
Q4:千人千面引擎最后体现的效果是什么?用在什么地方?
千人千面效果,针对小区用户转化率提升100%
Q5:请问下推荐排序时使用了什么算法,以及大概多少人负责算法模块?
在app首页正在尝试逻辑回归和learn to rank,7~8人做算法
Q6:1号店对新登陆用户做什么推荐处理? 主题推荐人工介入量有多大?1号店对其推荐算法出过转化率外,从算法角度会关心哪些指标?
新用户冷启动,采用两个策略
数据平滑
热销优质商品补充
推荐最重要的是看排序效果,主要是推荐位置的转换率。
Q7:Storm都遇到哪些填好久都填不完的坑可以分享下么?
Storm在高tps时候容易消息堆积。之前读Kafka,拉的模式。实时推荐需要实时的反应用户的行为,用户明明下单了还在推荐。后来读取订单的行为用了自主研发的jumper,推的方式解决了快速得到订单行为,其他行为用Kafka。
资源分配、隔离不合理。其他任务出现内存泄露等问题会影响其他任务task。
Q8:HBase热点问题怎么解决的呢?是分析key的分布,然后写脚本split么?
基本思路一样,写工具检测。重点在request量,不在key的分布。
Q9:批处理层向服务层推送离线计算结果的周期是怎样的?会因数据量大而对线上的HBase造成冲击吗?
目前是一天一次,冲击不大。 1、错峰; 2、bulkload;3、读写分离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_710527.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[tools]python的mkdocs模块分分钟将md搞成一个网站

docusaurus: facebook出的一个文档生成器,用起来感觉没那么友善 hugo: 这个很棒 python的mkdocs模块: 用起来最简单 python的这个模块可以分分钟将一坨md假设成一个网站 参考: http://www.mkdocs.org/ 安装配置 pip install mkdocsmkdocs new my-project cd my-project只需要将…

hbuilder制作简单网页_企业信息化网站+营销服务之电子商务网站制作流程

爱美食爱技术网站制作流程,是指网站制作过程中必须遵循的工作顺序。每个成品网站都必须按标准流程进行建设。这类似于企业的产品生产线,一个工序一个工序地完成整个产品加工。很多人把网站制作与网页制作混为一谈,在他们的意识中,…

phphstudy运行不了网站_传统企业网站运营分析:这些弊端你了解吗

传统企业网站建设运营分析:对于企业来说,网站不仅仅只是在网络上展示的店铺,而是一个重要的网上营销手段,尤其是在网络营销概念遍布的时代。随着网络营销概念的不断加深,国内各行各业对于企业网站建设也越来越重视。传…

分析原因型思维模型框架_分析营销型网站优化效果不佳的主要原因

说到网站优化,相信大家都已是耳熟能详了,不少企业在营销型网站建设上线后,都会花费心思在优化工作上面,目的自然是希望自己网站关键词排名更好,以此来获得更多流量。但是企业在优化之后,往往发现无论自己怎…

实现ip数据包抓取并分析_一些网站https证书出现问题的情况分析

20200326下午,有消息说[1]github的TLS证书出现了错误告警。证书的结构很奇怪,在其签发者信息中有一个奇怪的email地址:346608453qq.com。明显是一个伪造的证书。为了弄清楚其中的情况,我们对这一事件进行了分析DNS劫持&#xff1f…

可以发外链的网站_可以发外链的地方有哪些?-top推

做SEO除了要更新网站的内容以外,还要去一些高权重的平台发外链,发的外链多并且质量高的话,网站的权重很容易上升,那么可以发外链的地方有哪些呢?不妨跟随本期的top推一起了解一下吧。一、权重高的博客。在外链建设中&a…

python“-o”命令更改存储位置_程序员的狂欢地一般人的超大存储免费空间和网站空间你要会用用...

程序员的狂欢地一般人的超大存储免费空间和网站空间你知道是什么么?怎么用么?程序员的狂欢地一般人的超大存储免费空间和网站空间是GitHub.什么是GitHub?GitHub是用于版本控制和协作的代码托管平台。它可以让您和其他人在任何地方协同工作。本教程教您GitHub基本知…

k-近邻算法-优化约会网站的配对效果

KNN原理 1. 假设有一个带有标签的样本数据集(训练样本集),其中包含每条数据与所属分类的对应关系。 2. 输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较。 a. 计算新数据与样本数据集中每条数据的距离…

一个网站大概多少钱_建一个外贸网站大概需要多少钱?角点科技总结建外贸网站的费用...

建一个外贸网站大概需要多少钱?小编经常遇到客户问:建一个网站需要多少钱;小编一般都是问:可以说说你的需求吗?是搭建什么类型呢?建站主要目的是什么? 因为小编一直认为网站的价格是看客户的需求…

大型网站技术架构(二)架构模式

2019独角兽企业重金招聘Python工程师标准>>> 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠…

移动端媒体尺寸_网络推广外包浅析提升移动端网站建设效率有哪些网络推广外包技巧-企服...

相信许多站长有所耳闻,在当下的谷歌浏览器搜索中,要求PC端网站具备移动端网站才能更好的促进网站优化运营,这也标志着当下网络市场中移动端网站建设的必要性。移动端网站与PC端网站设计不同,有很多开发细节需要站长掌握&#xff0…

不同网站不同网卡_弄清高端网站建设的独特不同之处才能做好网站

弄清高端网站建设的独特不同之处才能做好网站网站并不总是只是互联网上的一个虚拟目的地,有时它是一种独特的存在,它为客户提供了无与伦比的体验。这种体验令人难忘,而且毫不费力地为用户提供了他们需要的准确信息。高端网站建设和普通网站建…

怎么把一个网页作为背景套在另一个网页上_设计科技公司网站背景的六个小技巧...

我们都知道,任何网站的背景对于网站如何影响我们都至关重要,尤其是在设计科技公司网站的时候表现的更加明显。背景对访问者及其用户对网站的认知程度有多大影响。以前网站没有背景,内容被放置在纯白色背景上。但是随着时间的流逝,…

网站备案负责人_三分钟教你如何做好网站备案

根据国家的相关法律要求,若使用中国大陆地区服务器开办网站,或提供其他类似的网络信息服务,需要依法进行备案。通过域名访问网站、浏览网站内容时,此网站会被解析到某地的服务器上,每个网站背后需要有对应运营单位、单…

dedecms和php有什么关系,dedecms和用PHP自己编写的程序做网站有什么区别?哪一种更好一点...

Dedecms也称做DedeCMS以简单、健壮、灵活、开源几大特点占领了国内CMS的大部份市场,目前已经有超过35万个站点正在使用DedeCMS或基于DedeCMS核心开发,产品安装量达到95万(这个数字来自于官方统计可能远远不止这些)。织梦cms是开源的程序现在也有很多所谓…

wcf编程用什么工具_四个强大的自学编程网站工具,用的人都是学习欲望很强!...

今天给大家分享几个自学编程的网站工具,希望可以帮到正在努力自学的你!~~慕课网很多朋友都在想如何学习软件开发,这个自学开发的网站确实好用,一款专业的在线编程学习平台,早期的发展有很多免费的课程,对于…

window.open怎么设置title_企业seo怎么优化 都有那些策略?

seo怎么优化,做seo优化也需要讲究策略,策略不太对路的话,可能效果就差强人意。搜索引擎优化技术知识好掌控,但是如何灵活运用,并能做出效果,则是需要深入研究和实践的了。面对一个网站,seo怎么优…

seo 伪原创_seo伪原创工具(解析新云查新型伪原创模式工具)

现在内容为王,外链为皇的互联网时代大家对文章内容的质量越来越看重,SEOer们在做内容时原创文章内容时最好的,当然伪原创文章也是一大部分SEOer的选择。文章做伪原创的方法有的人是手动做伪原创,而有的人是依靠伪原创工具做伪原创…

idea中浏览器打开页面404_深圳网站建设中的404页面有什么用

通常我们访问网站时,遇到404页面会让人很扫兴,想想正在兴致勃勃的看新闻、找资料、看视频等等,突然出现一个巨大的404,告诉你找的东西不存在,是不是有种想砸键盘的冲动?可偏偏有很多404页面让你看到之后不仅…

无人机官方网站_无人机开发设计资料整理

无人机技术作为前沿技术,吸引了不少技术宅男的追捧。越来越多的人开始加入无人机技术的学习与研究中,然而却苦于找不到太多的相关资源。阿木实验室根据多年无人机的从业经验,为大家整理了一份资料。资料不全,欢迎大家留言补充。一…