大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

35 | Facebook游戏实时流处理Beam Pipeline实战(上)

整体数据流水线逻辑
Options接口
Composite Transform
数据流水线逻辑步骤
定义UserScoreInfo类
使用crontab定时执行Beam数据流水线
输出数据
输入数据
积分排位
更新时间
面向的群体
窗口、触发器和累加模式
延迟
实现方案
假设
实时流处理
不足之处
Apache Beam数据流水线
好友积分排名比拼
吸引各年龄层玩家
风靡北美
管理各种小游戏
分享动态图片和视频
用户发送消息给好友
窗口、触发器和累加模式的赋值
游戏积分排行榜实现
糖果传奇游戏
Facebook平台
分享主题:Facebook游戏实时流处理Beam Pipeline实战
思考题
蔡元楠
糖果传奇游戏的实时流处理是怎样实现的?

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
今天我要与你分享的主题是“Facebook 游戏实时流处理 Beam Pipeline 实战”。
Facebook 这个社交平台我相信你一定早有耳闻。它除了能够让用户发送消息给好友,分享自己的动态图片和视频之外,还通过自身的 App Center 管理着各式各样的小游戏。许多游戏开发商借助 Facebook 的好友邀请机制让自己的 App 火了一把。
曾经有一段时间,在 Facebook 上有一款名为糖果传奇(Candy Crush Saga)的游戏风靡了整个北美。各个年龄层的玩家都会在空闲的时间拿出手机,过五关斩六将,希望尽快突破更多的关卡,并且获得高分。
当然了,除了消除游戏本身带来的乐趣以外,可以在 Facebook 里和自己的好友进行积分排名比拼也是另外一个能吸引用户的地方。
想要一个类似 Facebook 这样的好友间积分排行榜,你可以有很多种实现方式以及各种优化方法。那么,如果我们要利用 Apache Beam 的话,该怎样实现一个类似的游戏积分排行榜呢?
今天我就来和你一起研究,要如何利用 Apache Beam 的数据流水线来实现一个我们自定义的简单游戏积分排行榜。
为了简化整个游戏积分排行榜案例的说明,我们先来做几个方面的假设:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何利用Apache Beam的数据流水线实现一个类似Facebook游戏积分排行榜的实时流处理。作者首先阐述了游戏积分排行榜的需求和假设,然后深入讲解了实现的步骤和技术细节。文章提到了使用Composite Transform来模块化数据流水线,以及利用无边界数据集进行实时数据处理来缩短延迟。此外,文章还提供了具体的Java代码示例,帮助读者更好地理解实现过程。总的来说,本文通过实际案例向读者展示了如何利用Apache Beam进行实时流处理,对于对实时数据处理感兴趣的读者具有一定的参考价值。文章还提到了实时流处理中需要用到窗口、触发器和累加模式,为读者提供了思考和讨论的空间。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • suncar
    老师您好,请问一下可不可以将这种案例放一份到github上。我们可以拉到本地进行调试。在这个过程中避免不了出现各种异常,以方便更好的解决和深入了解。谢谢
    2019-07-16
    12
  • 之渊
    源码https://gitee.com/oumin12345/daimademojihe/tree/master/cloudx/bigdata/src/main/java/test/beam/facebook 新手先自己试着写出来。再参考。这样才是实战啊,毕竟工作是没有抄的
    2020-08-24
    1
  • Fiery
    第一个问题是,为什么pipeline里面没有针对每个关卡的aggregation?难道默认只处理一个关卡吗?那candy crush有好几百的关卡,总不能每一个关卡单独copy一份这样的代码吧?! 第二个问题是,在第5步的Composite Transform中,用Top Transform算出每个用户的Top score,输出难道不应该是PCollection<KV<string, long>>吗(Key是user id,Value是score)?而且既然已经用Top得到了每个用户的最高分,直接针对这个PCollection<KV<string, long>>进行第二次Top Transform不就能得到前100名用户的ID的分数了?为什么还要多一个中间转换产生PCollection<KV<string, UserScoreInfo>>呢?
    2020-03-15
  • wang
    思考题:窗口值也就是事件处理阶段=》startBoundary 和 endBoundary 的值 触发器也就是计算触发的时间=》30min 一个点 累加模式=》丢弃
    2020-01-08
  • bingo
    老师你好,我有个疑问。这里的用户数据可不可以全部放在Hbase里。 由于好友之间的排名查询涉及的数据量少,所以直接查询Hbase。而全局的总排名要涉及到所有的玩家,数据量大,这个使用流水线处理
    2019-09-21
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部