CBA

超級APP手機百度怎么做云端架構設計和個

2020-01-19 06:58:56来源:励志吧0次阅读

超级APP百度怎么做云端架构设计和个性化

2015 年 6 月 28 日下午,百度与 InfoQ 携手举办了百度云和端技术实践沙龙活动这是百度首次公开超级 App 背后的技术知识活动分云端和客户端技术两个会场同时举办,吸引了众多技术爱好者前来学习交流现场人数爆满,气氛热烈

百度产品总经理,百度副总监黎科峰出席会议并简要介绍了百度的业务状况和讲师团队成员他谈到,百度作为百度在移动互联时代的亿级用户流量入口,不仅支撑着百度内部产品,更希望打造一个开放平台,支撑众多第三方行业及应用的发展,从连接人与信息拓展到连接人与服务比如打开百度就可以看到9块9 上门推拿服务百度的未来应用前景拥有很大的想象空间,在云端和移动客户端技术业务的实现上也积累了很多宝贵经验和创新实践!

下面是此次技术沙龙活动云端分会场的主题演讲概要总结:

主题一:个性化在百度中的实践(兰田)

百度是一个超级 app , 不仅为用户提供搜索服务,而是覆盖了用户生活的各个方面挑战是非常多的,首先用户获取信息成本不断增高,在时间和流量有限的情况下,如何能够满足使用各种垂类信息(小说,视频),各种团购,各种app, 各种O2O服务然后是用户多种多样,需要对不同的用户进行场景化和个性化的运营和推送主题先介绍了个性化任务在手百上的愿景:希望每个用户的百度都是独一无二的,用户可以最快捷,最有效的发现此时此刻最适合自己的信息和服务主题从移动用户的画像(Profile)谈起,进而介绍了传统的推荐算法,然后探讨了移动端给推荐带来的机会,之后以百度生活频道采用的推荐作为案例讲解,最后展望了手百个性化系统的未来

手百个性化在设计的时候就考虑了精准丰富的用户标签,包括用户本身的信息,如性别、年龄、职业、教育与消费等,还有用户的目的如兴趣、关注、需求丰富的标签在手百的实际使用中起到很重要的作用,可以进行卡片推荐,帮助个性化解决冷启动问题,帮助产品更加了解用户的需求,帮助运营选择特定兴趣用户并进一步推荐相关运营活动兰田给出了对95后用户行为分析的例子,展现了95后用户对游戏和动漫更感兴趣,而95前用户则对购物和美食等话题更感兴趣

主题接下来介绍了传统的推荐系统,从用户行为出发,根据用户和用户,item和item之间的各种关联为用户做出推荐,主要有两种形式,一个是相关推荐,另一个是列表推荐,目前在手百上的应用主要是视频和小说两个垂直应用特别地,兰田讲解了相似性这一推荐系统的基石,从亚马逊2003年提出的协同过滤入手,简要介绍了空间中相距近的点具有相同性质这一朴素概念,并给出了概率解释随后他介绍了常用的相似度量,分析了优缺点如基于用户的计算量大,但可以带来新颖的推荐,基于item的计算量相对小,是大多数推荐系统采用的度量方式,而基于内容的可解决冷启动问题,但需要专家知识目前手百采用的是item+内容相结合的度量方式

主题接下来给出了手百推荐系统的现有架构如下图:

从图中可以看出整个架构非常灵巧松散,模块之间都是通过API连接,可以进行比较灵活的配置底层机器学习和数据挖掘相关方法构建在Hadoop之上,输入有统计和行为数据,而输出则通过推荐算法的计算由推荐API给出

手百推荐系统有两大难点,一是用户数量极大,离线训练模型规模大,一周有千万数量级二是需要整合多个资源方的内容,需要在数据合并和清洗上做大量工作,保证资源的质量但与此同时,手百具有相当大的两个优势,一是百度内部机器学习资源丰富,有易用的并行框架处理过亿的三元组,可以在10分钟内搞定二是百度有大量的用户搜索数据和用户画像数据,可以帮助用户更好的进行冷启动

与传统的pc端相比,移动端对推荐系统的需求更大,比如由于屏幕小,显示空间有限等原因,就需要更精准的推荐另外,用户信息更容易收集,因为无需登录,且使用频率很高,各方面数据的反馈都更加及时以及,移动端固有的特点可以为推荐系统引入更多的纬度,如时间地点和使用场景等

主题随后介绍了推荐系统的演变,从单纯的评分到排序,到页面优化最后到基于上下文的推荐,越来越多地引入更多的特征,以寻求更加精准的推荐结果主题还进一步介绍了一些推荐算法,如Point-wise、Pairwise 等排序学习的算法

接下来,主题给出了一个推荐系统在O2O领域的尝试,试图通过手百建立人和服务的连接,所采用的资源来自糯米,地图和直达号等多个第三方服务,给出的实例框架图如下:

针对在推荐系统中使用场景的问题,主题给出了人工匹配规则,修正然后作为特征加入学习算法的技术方案具体来讲,人工配置规则 (专家知识),由 PM和运营人工配置了近百条规则,由规则引擎根据场景和用户画像进行匹配人工规则作为先验概率,和热门推荐点击率相当,用户实际点击和常识并不一样然后利用用户实际点击情况修正规则将用户实际点击修正先验概率,效果比人工配置提高 0.5% 左右最后将场景作为特征,融入到机器学习算法中机器学习算法还涉及到一个特征选择问题,目前手百所用的特征包括但不限于用户、物料和场景等特征,而采用的算法除了常用的逻辑回归以外,还有最近业界尤其是图像领域常用的深度学习络模型根据模型输出的概率值对推荐结果进行重新排序,在融入场景特征后,发现效果提升了 2%

主题接下来探讨了从推荐向个性化发展的问题推荐只是个性化的一种形式,不是所有的个性化都是推荐(买电影票的时候,帮助我选择我经常订的位置 )现有推荐系统大多是帮助用户发现某种商品/服务,个性化有更广泛的产品含义,可以具体到背景皮肤的选择,产品 tag 的位置这方面手百以个性化卡片为入口做了一些尝试,产品目的是丰富百度首屏的内容,将用户日常关注的内容用卡片的形式展现出来通过个性化的推荐引导用户添加和传统的推荐不同,卡片数目少,且兴趣点基本上是热点兴趣(传统推荐是头部+长尾)卡片之间关联关系弱,无法进行协同过滤会根据PM 和运营需求,随时添加卡片,需要把这个卡片推送给最合适的用户需要不断的挖掘用户新的特征需要挖掘用户的兴趣,最近的意图,人生阶段等各个方面因此需要通过用户画像和产品属性进行规则匹配

主题最后对手百推荐和个性化的未来做了展望,更完善的推荐系统框架及时反馈,更迅速的响应用户的行为做出最及时的推荐更好的推荐效果展示和算法控制平台进一步研究场景在推荐系统中的作用引入更多的机器学习 model,研究深度学习在推荐系统中的应用甚至提到了更远的类似 Google Now 的个人生活助手产品

主题二:百度云端架构设计与实践(韩超 黎博)

主题主要介绍了手百云端在实际开发过程中一些工程化的运用,尤其是涉及传统PHP工程师做web站和超级APP的技术转型和深化的过程

主题首先分析了目前手百云端所面对的问题,鉴于手百非纯粹客户端,而是浏览器和CS模式混合的产品,所面对的主要可分为三个问题:软件高并发、大容量,需要高灵活性和可靠性,然后还需要解决由于定制化程度高而带来的兼容性问题对此,主题给出了一个多层解决方案,底层包含资源的云端聚合、不同功能的Cache和多种DB中间层包含动态界面展示、用户账户状态承载、多协议多平台支持和信息主动送达上层则包括配置和运营,H5和NA并存支持以及客户端的动态更新传统的Web站的构建中,LAMP架构中的PHP+MySql+缓存已经有了成熟理论和实践作为超级APP的服务器工程师,需要继承Web站的技术底蕴,并针对自身特性做出改进这种改进主要来自三方面:性能优化、兼容扩展性和云端控制性

主题开始讲解了性能优化的部分,性能是任何服务器设计必须考虑的问题,面对超级APP带来的高QPS、峰值的高并发、不确定的写请求,系统不可能无限制地扩容,软件设计要先行Web站性能优化的N种武器,要换一种方式用起来需要考虑两方面的因素,一是服务器的容量,服务器端有限的CPU、IO和内存会面对无限的客户端,压力会传递给数据存储、缓存、后端服务,云端的每一个环节都有可能被压垮二是用户体验,从前做Web站,现在做Native客户端Native并非天然就比Web站快,因为浏览器和服务器的优化手段已经很成熟性能优化部分本主题讲的比较深入,主要涉及了Page缓存、缓存协商和请求合并等,具体读者可参考幻灯片

主题接下来分享了兼容和扩展性方面的内容,一个超级APP的服务器,它所面临开发模型并不是一个点对点的开发,而是一个基于时间轴的矩阵,这就涉及两方面内容,一个方面客户端本身在升级,因此服务器在升级的时候,需要兼容历史所有的客户端,并且还要向未来进行展望更复杂的是客户端本地还有丰富的存储,升级过程中也需要考虑,里面包含了一些不可控的因素,尤其是这种多版本多平台的情况下手百在这方面有几个策略,首先服务端被动兼容的条件是客户端的特性可知,通过客户端自身的信息进行兼容,例如:操作系统、版本号、渠道等然后是代码分支方式,把稳定基础性功能分成不同的模块,找到逻辑上需要区分的地方,由上层代码对基础功能组合调用再有资源获取,调整后端请求、持久化存储、缓存的获取顺序,便于排列组合和再处理还有特制化逻辑,了解客户端的现实分布和业务情况,利用参数预处理筛选功能,对结果通过用个性化参数进行调整、过滤和合并最后是缓存策略,提高Cache的命中率和Cache使用效率;

主题最后一部分讨论了云端可控性的问题由于客户端APP的固有特点,不可强制要求用户手中的客户端版本,从超级APP的功能上,要突破此瓶颈,在客户端不升级的情况下,实现云端可控的特性主要包括三方面,一是动态展示,根据需要将最新的数据、样式、界面送达给用户二是动态事件和行为,服务端产生的事件可送达客户端(客户端拉取或服务端推送),可控制客户端的各种行为三是动态的配置和策略,服务器上具有动态配置和策略,客户端通过获得之后,根据自身的情况进行实施

主题给出了手百云端的技术架构如下图,主要解决了几个业务特性带来的挑战一个是软件生命周期较长二是高并发且流量不均三是资源链接众多且不稳定四是需求比较复杂更多关于云端开发调试的手段和技巧可参见后续视频与幻灯片资料

主题三:百度前端探索之路(夏艺天)

主题主要分享了手百的前端探索之路,从开发到工程,再到发布的整个过程典型的小团队开发,利用Zepto、OpenJs等类库,在合理的组织下,撑起了手百的前端开发

第一部分是开发环节主要介绍了SASS框架,讲解了手百如何针对SASS进行改造和定制,并开发了模拟客户端的环境在基础类库方面,Zepto是用的比较多的构件基础部分还包括了基于EMD模块的实现,以及模块间、事件和跨域通信等其他类目包括UI组件、监控、统计和运营等等在此基础上,手百前端团队对一些常见的东西给出了解决方案,一个是前端的模板,二是本地缓存方案,三是SPA(单页面应用解决方案)

第二部分是工程化所谓的工程化,一开始前端可能做的功能化是类似于手动的去压缩代码,现在有了很多工程化的解决方案,百度工程化是用公司统一的FIS集成方案,同时对FIS的插件进行改造,通过这些东西可以完成以上的全部的工作,以及更多的比如依赖分析、代码检测,按需加载,代码检测代码的规范,还有缓存、压缩、合并最后达到整个模板编印的效果整个构建化流程,有一个线下的系统,线下构建去完成前端代码的压缩以及拼接,完成这部分功能后,首先会把其它资源打个包,然后在发布的时候这个静态资源会发布到CDN服务器上,同时线下的构建工具会去生成一个类似于资源地图的东西,记载每一个模块每一个JS文件的依赖,它大概是一个表,整个文件去生成记录所有模块与模块依赖的一个表然后在访问的时候,template根据页面所需要的模块,在资源地图,完成拼接过程,交给用户,这就是整个工程化构建的流程

第三部分是发布主要是利用Tiny快速搭建平台,通过上线系统进行配置管理,然后通过模块化的接口提供API,并利用MDP设备画像平台进行监控统计

主题还对前端发展的未来进行了展望,即更加的混合模式的开发例如,不在利用络来请求前端代码,而是直接预装到APP,以及React Native模式等

关注ITBear科技资讯公众号(itbear365 ),每天推送你感兴趣的科技内容

特别提醒:本内容转载自其他媒体,目的在于传递更多信息,并不代表本赞同其观点其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容本站不承担此类作品侵权行为的直接及连带如若本有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕

幼儿口臭
安阳癫痫病医院
上海牛皮癣医院
分享到:
  • 游泳
  • 法甲
辽中县为209个社区村免费建网站奢侈品市场和消费