作者回复: 谢谢你的经验分享!
作者回复: 谢谢你的提问!没错,这也是Lambda架构的一个缺点,开发者必须要把同样的逻辑在两个地方维护,特别是当技术栈不一样的时候会很头疼。
作者回复: 谢谢你的经验分享!
作者回复: 谢谢你的经验之谈!
作者回复: 谢谢你的经验分享!
是的啊,有时候不知不觉就会发现自己原来就已经在使用了某个特定技术。这让我想起设计模式,早期阶段在代码中自己已经在实现某个设计模式了,但是因为那时候还没有系统地去学习设计模式,没察觉到而已。
作者回复: 您好,谢谢提问!可以的,Lambda架构不仅仅可以应用在在线学习上,有非常多应用场景都可以应用上。
作者回复: 谢谢你的提问!之前有另外一个同学让我讲述一下广告精准投放的实际例子,我就引用一下那个回答吧。
广告投放预测这种推荐系统一般都会用到Lambda架构。一般能做精准广告投放的公司都会拥有海量用户特征、用户历史浏览记录和网页类型分类这些历史数据的。业界比较流行的做法有在批处理层用Alternating Least Squares (ALS)算法,也就是Collaborative Filtering协同过滤算法,可以得出与用户特性一致其他用户感兴趣的广告类型,也可以得出和用户感兴趣类型的广告相似的广告,而用k-means也可以对客户感兴趣的广告类型进行分类。这里的结果是批处理层的结果。在速度层中根据用户的实时浏览网页类型在之前分好类的广告中寻找一些top K的广告出来。最终服务层可以结合速度层的top K广告和批处理层中分类好的点击率高的相似广告,做出选择投放给用户。
作者回复: 您好,谢谢提问!
其实Lambda架构的应用场景最终还是会去服务同一种业务,毕竟流处理结果是对批处理结果延时的一种补偿。即便用到的算法不尽相同,但是合并的时候,最后存储的模型或者是存储数据的Schema都还是要一致的。
作者回复: 谢谢你的经验之谈!
作者回复: 谢谢你的分享!Bingo,我觉得是完全正确的!以前在读技术文章的时候就看到过一种说法是:完整的数据集 = λ (实时数据) * λ (历史数据)。
作者回复: 谢谢你的提问!我也是第一次接触这个名词,查了一下这本书,解释是“Reactive Design Patterns is a clearly written guide for building message-driven distributed systems that are resilient, responsive, and elastic.”。像message-driven或者event-driven其实就类似Pub/Sub messaging。虽然我没有读过这本书,但是我感觉里面应该会涉及到专栏中一些架构思想。
作者回复: 谢谢你的留言!能有收获就好。
作者回复: 谢谢你的留言!是的,你说的这个例子是可以将Lambda应用在里面的。
作者回复: 谢谢你的留言!哈哈,这个观点我也很赞同!
作者回复: 谢谢你的提问!是的呢,你的理解是正确的。Batch层因为拥有历史数据,所以Batch层的结果可以不断校对Speed层的误差。
作者回复: 谢谢你的提问!
我觉得各种大数据平台层出不穷,要每个都学肯定也学不完的。学习哪一个的话可能还要看具体情况。如果你的公司里已经是在使用某一个框架了,而且技术迁移成本很高,需求又来得很快,那当然是以你们公司已有的框架为主来学了。如果你是新手,因为批流统一是一个大的趋势,我觉得Apache Beam和Apache Flink都不错。现在Google里的大数据处理基本上全部都由Apache Beam来支撑了,所以Apache Beam这个框架的能力是毋庸置疑的。当然我作为Google的其中一员,也会觉得有必要推广自家的产品。而Apache Flink的话,现在整套API的底层思想都采用了Google的Dataflow Model,所以也是一个很好的alternative。
作者回复: 谢谢你的经验分享!
作者回复: 谢谢你的经验分析!
那在这里抛砖引玉说一下精准广告投放预测。这里广告投放预测其实相当于一个推荐系统,一般能做精准广告投放的公司都会拥有海量用户特征、用户历史浏览记录和网页类型分类这些历史数据的。业界比较流行的做法有在批处理层用Alternating Least Squares (ALS)算法,也就是Collaborative Filtering协同过滤算法,可以得出与用户特性一致其他用户感兴趣的广告类型,也可以得出和用户感兴趣类型的广告相似的广告,而用k-means也可以对客户感兴趣的广告类型进行分类。在速度层中可以根据用户浏览的网页类型在之前分好类的广告中寻找一些流行的广告出来,最终投放给用户。当然在实际应用当中,精准广告投放预测肯定会比我所说的复杂得多了,我相信架构里面不可避免地也会运用上Lambda架构。