推荐系统架构改进初稿

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

推荐系统架构优化初稿张益军推荐系统后端分成2个阶段第1阶段:IOphase通过网络服务获取用户&视频维度关系数据。优化方向:系统规划减少网络调用,简化调用流程.第2阶段:CPUphase,将推荐数据聚类、排序、按推荐条件输出。优化方向:优化热点代码.整个推荐系统特点:读高并发,低写入,低一致性.博客推荐网络请求量memcache_get(uk_pid)-hbase_get(uk_pid)#根据参数(pid/uid/yid)获取ukeymemcache_get(his_uid)#根据参数(id/ukey)获取获取观看记录memcache_get(dirtyvid_vid)#获取dirty视频memcache_set(dirtyvid_vid)#不存在dirty视频,设置空集永久有效#随机排列获取推荐结果[memcache_get(mc_ukey)-hbase_get(ukey)#判断个性化,若存在查hbasememcache_get(learn_ukey)#获取机器学习推荐memcache_get(mm_ukey)#获取矩阵推荐memcache_get(hotvidgroup)#获取随机vid组结果memcache_get(hotgroupvid)#获取随机组vid结果memcache_get(mo_vid)#获取博客实时矩阵]memcache_get(du_ukey)#判断是否为dirty用户推荐计算逻辑现有推荐系统数据分布ukey协同个性化矩阵个性化热点视频追剧个性化视频小矩阵机器学习视频大矩阵现有推荐系统调用流程请求分析参数解析参数:uid,yyid,passport解析ukey[热点代码]ukey使用ukey判断用户个性化[热点代码]MemCache(8GB)MemCache-Hbase(8GB)用户关系推荐个性化(协同,矩阵,追剧)Hbase(500+GB)[负载过高]视频关系推荐(大/小)矩阵,机器学习Hbase(10+GB)MemCache(200+MB)热点数据热点视频MemCache(100+MB)推荐系统调用流程请求分析参数解析参数:uid,yyid,passport解析ukeyukey使用ukey判断用户个性化BloomFilter用户关系推荐个性化(协同,矩阵,追剧)localCache-Hbase视频关系推荐大矩阵localCache-memCloud视频关系数据热点视频localCache-memCloud-Hbase大矩阵,机器学习localCache-HbaselocalCache-memCloud集中式缓存memcache在推荐系统中的使用1):memcache作为反向缓存,为hbase拦截请求2):memcache作为storage(ps:redis更适合).改进:1):迁移memcache到memcloud,可用性&容灾.2):优化反向代理cache提供bloomFilter3):为memcloud提供前端缓存迁移到memcloud新推荐数据原有memcache实例memCloud集群Zookeeper切换通知双写切换JAVA节点Java_Server更瘦还是更胖?瘦节点:变成command(get/set/sql…)搬运工.胖节点:敏捷性,状态.引入多级别缓存:进程内缓存(L1):微妙级分布式缓存(L2):毫秒级LocalCache[heap-offheap-disk]实现一:使用自己实现的LongReferenceSafeHashMap(淘宝航旅系统中使用)优点:压缩内存占用小,缩减内部引用,结构简单,小巧.缺点:cache功能实现不全,inheap架构,gc负担.只能存储少量数据实现二:采用TerracottaBigMemory,已加入到ehcache企业版优点:成熟稳定,可全量缓存推荐数据,最大4TB空间,offheap架构,无gc负担缺点:BigMemoryMAX集群版收费,BigMemoryGO单机32Gb版本free.实现三:采用ApacheDirectMemory,优点:目前比较新的offheap开源实现,最新稳定版0.2,维护比较活跃.缺点:项目比较新,heap+offHeap的方式,大量对象存在gc问题.功能较弱.LocalCache策略LocalCacheofOffheapbigMemory1:GC友好,不占heap空间AllinOffheap2:序列化,持久化,Offheap内存管理等优化3:offHeap32G–free4:完善的统计模块5:无源码,需要license.keyApacheDirectMemory1:keyinheapvalueinOffheap2:有源码.3:没有统计模块4:最新可用版0.2LocalCache策略ip_hash请求LocalCacheLocalCache....LocalCache策略优点:1:2KB左右缓存,10w+的get/putQPS(thinkpadx220),无网络latency2:每个JVMdirectMemotySize10G,单节点约缓存500W+推荐结果,整个集群缓存nodes*500W.3:利用web_server自身的内存,运维成本很低.缺点:1:一致性2:重复缓存3:易失性nginx负载均衡策略•从RR策略迁移到ip_hash策略有什么影响?扩展性与容错•扩展性:节点对外无状态.加入进程内缓存把io密集向cpu密集转移,减轻后端压力和瞬间带宽.•容错集中式缓存由memcloud保证java节点crash,只对localCache有影响,(rebuild/reload).为什么放弃本地bloomfilterBloomFilterBloomFilterBloomFilter....新推荐数据1:新推荐数据需要广播到所有节点,而且是集中爆发.2:本地bloomFilter很难保证各节点一致性,监控困难.3:用缓存(memcache+offheap)做bloomfilter,更省内存,方便维护Memcache_Byte_BloomFilter集中式BloomFilter增量更新推荐数据LocalCacheLocalCacheLocalCache....请求LocalCacheMemCloud/Hbase节点crash,请求backup到其他节点.LocalCache请求LocalCacheMemcloudHbaseLocalCacheMemcloudLocalCacheHbase获取ukey逻辑获取热剧,机器学习等推荐获取用户个性化大视频等推荐最后推荐系统:定时调度接口监控,zookeeper客户端推荐流程自定义memCloud:客户端latency,报警.提供cache,storge不同选择统一clientapi系统级别监控(tsar),分片迁移方案加入redis.

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功