个性化推荐系统(四)--- 推荐系统服务端

 推荐系统怎样稳定高效提供服务,持续不断满足业务需求,持续不断面对技术挑战,是每一个服务端开发同学应该持续思考,和持续不断优化线上服务。

        以前我们开发的程序更多的是网站,并且以单体服务形式构建,好处是整个程序一次构建,维护方便,但当公司发展后,组织机构变大,程序由多个人维护,单体程序维护成本高,难于修改,难于持续升级问题就暴漏了出来。影响了线上业务持续发展,产品需求及时上线。

        为了应对大型机构,特别是大型电子商务系统,需要持续不断优化,将单体程序进行横向纵向拆分,每个组织只维护自己的服务,每个模块可进行不断持续的升级优化,微服务将系统拆分,整个系统复杂度降低,并且每个系统部分,根据自己流量情况动态调整资源,可以既保证资源最大化利用,又可以很好的应对618,双11等流量大促情况。

        对于大部分程序微服务已经能够很好的解决问题。当下个性化推荐系统面临问题和一般程序有一定差异性,一方面个性化意味着“千人千面”,每个用户用到数据都不一样,常规缓存策略失效,这就要求对程序不断优化已保证性能。 

        当下个性化推荐正由策略主导,转型到由机器学习算法,深度学习算法,这一过程对于服务端要求要支持更多数据拉取,个性化推荐服务比较核心指标召回率,准确率。所谓召回率是根据用户偏好,兴趣,热门等各种条件拉取文章或sku商品数量大小。准确率比较好理解是召回数据里面多少是用户愿意去点击的,带来多少点击量。       

        当前今日头条,淘宝等个性化推荐服务均是构建在微服务架构之上,整个流程是根据用户信息拉取分类召回集,过滤已经曝光过,已经购买过等分类召回集,根据分类召回集拉取素材,过滤相应曝光,已购买等素材信息,对数据进行品牌,品类分隔优化用户体验,这是原来常规逻辑。线上服务接入GBDT,深度学习DNN等模型后,需要根据素材信息,拉取用户,分类素材,用户素材交互特征,场景特征等多个维度几十个特征,这样特征需要每个用户实时拉取成千上万组,对于线上服务性能稳定性是极大挑战,换个角度看对于提升服务端技术水平也是很好机会。

        线上每分钟10万次访问系统实时拉取大量数据并且进行实时模型计算,是个很有挑战问题,面对问题我们怎么处理呢?首先我们处理这个核心思路是,职责拆分,将模型CTR计算拆为单独服务,召回集由60扩大到200。

       把线上素材特征召回集一下子由200扩大到1000,性能一下降到400ms,性能不可接受,经定位分析发现耗时为计算服务,怎么样才能优化GBDT模型计算性能呢?单个线程解决不了,那就多个线程,这时召回集扩大到一千单整个服务性能由原来400毫秒缩到到60毫秒,扩大召回集成功,线上点击率转换率得到提升,大家努力没有白费,还是很有成就感的。

       再一次扩大召回集,需要将服务拆成分布式,微服务节点只拉取分类召回集,素材找回集特征数据由模型计算节点处理。并分主从节点并由主节点,协调进行分布式计算,减少IO避免特征无用传输,仅返回有意义的数据素材排序,同时每个多线程利用多核计算,将召回集扩大到几千,上万完全满足线上需求。

        线上服务挑战会一直存在,什么样心态面对,会带来截然不同的结果。

微信搜索:debugme123

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WeTest质量开放平台团队的专栏

腾讯内部揭秘:游戏留存的隐藏杀手!

近日。在腾讯内部分享会上,游戏数据分析组的高级游戏测试工程师为我们分享了质量数据分析对于游戏留存的影响。让我们更加深入的了解游戏质量数据分析的重要地位。

763
来自专栏zzzz

DKhadoop大数据平台基础框架的简单介绍

大数据作为当下最为热门的事件之一,其实已经不算是很新鲜的事情了。如果是三五年前在讨论大数据,那可能会给人一种很新鲜的感觉。大数据作为当下最为重要的一项战略资源,...

672
来自专栏芋道源码1024

架构设计方法初探

架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有...

612
来自专栏程序猿DD

那些没说出口的研发之痛,做与不做微服务的几大理由

如果在诸多热门云计算技术中,诸如容器、微服务、DevOps等,找出一个最火的方向,那么非微服务莫属。在小数推荐的这篇文章里,做与不做微服务好像理由都很充分。另外...

3406
来自专栏腾讯移动品质中心TMQ的专栏

聊聊测试“左移”那些事

在目前互联网产品迭代过程中,可能会出现上一个版本的需求被推倒重来,甚至整个已经实现的需求砍掉等情况,这些现象站在敏捷研发角度可能是正常且难以避免的,因为研发团队...

2078
来自专栏Linyb极客之路

架构设计方法初探

架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有...

882
来自专栏北京马哥教育

数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径

马哥linux运维 | 最专业的linux培训机构 ---- 让业务搭乘大数据技术确实是件非常有吸引力的事情,而Apache Hadoop让这个诱惑来的更加的...

3285

用Spark做数据科学

我们与Exaptive的数据科学家Frank Evans就Spark在数据科学中的地位进行了非常愉快的交流。

1654
来自专栏IT大咖说

阿里构建实时大数据系统的秘诀——流计算

内容来源:2018 年 6 月 23 日,阿里巴巴云计算平台事业部产品经理郭华在“数据智能实践技术沙龙”进行《基于流计算构建实时大数据处理系统》演讲分享。IT ...

1262
来自专栏架构之美

转转推荐系统架构演进之路

1155

扫码关注云+社区