09 | 线上服务:如何在线上提供高并发的推荐服务?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了搭建高并发推荐服务的关键技术和实践过程。文章首先强调了高并发推荐服务在推荐系统中的重要性,以及阿里、字节、腾讯等大型公司采用的负载均衡、缓存和服务降级机制来支撑整体架构。接着,文章详细介绍了使用Java嵌入式服务器Jetty搭建推荐服务器的过程,包括创建服务器、添加API接口以及实现Servlet服务的代码。作者强调了理解“造火箭”(即工业级推荐服务器的具体功能和高并发推荐服务的主要机制)和实践“拧螺丝”(即具体技术实现)两方面的重要性。最后,文章提出了课后思考问题,引发读者对负载均衡服务器的调度策略进行思考。整体而言,本文通过简洁清晰的语言,深入浅出地介绍了搭建高并发推荐服务的关键技术和实践过程,对于想要了解推荐系统工程实践的读者具有很高的参考价值。
《深度学习推荐系统实战》,新⼈⾸单¥68
全部留言(17)
- 最新
- 精选
- smjccj源地址哈希,或根据服务器计算能力加权随机分配,当出现大量节点利用率很低时,进行资源回收,减少虚拟机,当大部分节点都出现overload情况,进行扩容,增加虚拟机数量。
作者回复: 非常专业的回答,赞。
2020-10-23460 - 范闲1.如果硬件配置基本一样且部署服务一样,就采用轮询或者随机的负载均衡策略 2.如果硬件配置不同,可以根据硬件的计算能力做加权的负载均衡策略 3.同样也可以利用源地址hash做策略 4.关于扩容和缩容:可以根据系统负载情况做动态调整。
作者回复: 非常好了,基本就是主流的负载均衡策略。推荐其他同学学习。
2020-11-26234 - 那时刻请问老师,按照一些规则预先缓存好几类新用户的推荐列表,等遇到新用户的时候就直接返回,这算是冷启动策略么?
作者回复: 其实是非常好的冷启动策略,业界也有很多是这样做的。再优化一点,可以利用新用户有限的信息,比如ip,注册信息等做一个简单的聚类,为每个人群聚类产生合适的推荐列表提前缓存。
2020-10-29223 - Geek_04634b这个课199我都买,太值钱了,现在什么算法都是浮云,关键是落地
作者回复: 有兴趣的话你可以去看看一些价值4999的训练营内容,然后再评估一下到底应该值多少钱。
2021-01-12613 - 冻糕带我入门的师兄说推荐服务理论上限是100ms延迟,但实际上只会给你最多85ms的时间,超过就要必须优化。其中多路召回加重复过滤上限25ms,排序上限45ms 业务规则加生成json 上限10到15ms,请问老师这个延迟数据是否是业界通用的勒?
作者回复: 你师兄说的基本是业界通用指标。
2021-04-14211 - shenhuaze王老师,如果推荐服务选择java和jetty,那么如果要上线基于tensorflow或者pytorch训练的深度学习模型,是需要自己用java改写预测的代码吗?还是有什么现成的解决方案?
作者回复: 过几天会谈model serving的几种方式。一般选择请求tensorflow serving,或者embedding上线的方式。到时候我们可以再详细讨论。
2020-10-2559 - 雪焰🐻🥑王老师好,请问对于:“在一个成熟的工业级推荐系统中,合理的缓存策略甚至能够阻挡掉 90% 以上的推荐请求,大大减小推荐服务器的计算压力”,我理解每个用户的请求,在不同的时间,地点,context下是不一样的,这样千差万别的请求,数量级应该很大,不知道是如何把大部分都缓存起来的呢?谢谢
作者回复: 缓存服务一般都要指定ttl,就是过期时间,ttl要根据缓存的可用大小进行设定。 如果每次请求的变量确实完全不一样,就不用缓存了,因为没有意义。但在实际的应用中总是有优化的空间,比如电商网站,在没有产生新的历史行为的时候你没必要每次请求都产生不同的结果,就可以利用缓存来挡掉重复的请求。
2020-10-2448 - Geek_8197bf请问老师,工业界推荐算法的实现都是Java和C++吗?Python流行吗?我只会Python,在犹豫要不要做推荐
作者回复: python是离线部分的主流,但线上服务一般会用C++或java实现
2021-05-1424 - sljoai老师您好,本文中提供的服务降级方案是从业务功能上来说的,降低服务能力,那系统是如何感知到系统压力,同时反馈到实际服务能力的选择上的呢?另外,像Istio、SpringCloud、Dubbo这种服务框架中也包含服务降级的方案,与您文中提到服务降级方案相比较,有什么异同呢?这一块比较疑惑,希望老师能解答一下,谢谢!
作者回复: 现在开源的监控工具,包括成熟的监控SaaS解决方案都很多,比如cAdvisor,datadog等等。总的来说成熟的公司都会建立一套成熟的监控体系,包括服务器的延迟、cpu、内存的占有率等等,一旦发现异常会立即通过预警或警告的方式反馈服务器,然后服务器根据警告作出相应的服务降级操作,或其他操作。 你说的Istio,SpringCloud等是一些微服务的管理和实现框架,更多是从架构层面上考虑,而不是从推荐服务内部逻辑的层面考虑。 二者并不矛盾,可以并存。
2020-10-244 - 笑笑是个好孩子这里的缓存和把召回到的结果保存到abase之类的k-v存储中 是一样的吗
作者回复: 一般来说服务器各节点内部还有in memory缓存,k-v store一般会去存储公用的模型和数据
2021-06-233