通过 Flink 实现个推海量消息数据的实时统计

· jack · Created at · Last by j54733 Replied at · 1933 hits
434 1549005614

背景

消息报表主要用于统计消息任务的下发情况。比如,单条推送消息下发APP用户总量有多少,成功推送到手机的数量有多少,又有多少APP用户点击了弹窗通知并打开APP等。通过消息报表,我们可以很直观地看到消息推送的流转情况、消息下发到达成功率、用户对消息的点击情况等。

个推在提供消息推送服务时,为了更好地了解每天的推送情况,会从不同的维度进行数据统计,生成消息报表。个推每天下发的消息推送数巨大,可以达到数百亿级别,原本我们采用的离线统计系统已不能满足业务需求。随着业务能力的不断提升,我们选择了Flink作为数据处理引擎,以满足对海量消息推送数据的实时统计。

本文将主要阐述选择Flink的原因、Flink的重要特性以及优化后的实时计算方法。

离线计算平台架构

在消息报表系统的初期,我们采用的是离线计算的方式,主要采用spark作为计算引擎,原始数据存放在HDFS中,聚合数据存放在Solr、Hbase和Mysql中:

查询的时候,先根据筛选条件,查询的维度主要有三个:

  1. appId
  2. 下发时间
  3. taskGroupName

根据不同维度可以查询到taskId的列表,然后根据task查询hbase获取相应的结果,获取下发、展示和点击相应的指标数据。在我们考虑将其改造为实时统计时,会存在着一系列的难点:

  1. 原始数据体量巨大,每天数据量达到几百亿规模,需要支持高吞吐量;
  2. 需要支持实时的查询;
  3. 需要对多份数据进行关联;
  4. 需要保证数据的完整性和数据的准确性。

Why Flink

Flink是什么

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。目前主要还是依靠开源社区的贡献而发展。

对 Flink 而言,其所要处理的主要场景就是流数据。Flink 的前身是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了 ASF(Apache Software Foundation)的顶级项目之一。

方案对比

为了实现个推消息报表的实时统计,我们之前考虑使用spark streaming作为我们的实时计算引擎,但是我们在考虑了spark streaming、storm和flink的一些差异点后,还是决定使用Flink作为计算引擎:

针对上面的业务痛点,Flink能够满足以下需要:
1. Flink以管道推送数据的方式,可以让Flink实现高吞吐量。

  1. Flink是真正意义上的流式处理,延时更低,能够满足我们消息报表统计的实时性要求。

  2. Flink可以依靠强大的窗口功能,实现数据的增量聚合;同时,可以在窗口内进行数据的join操作。

  3. 我们的消息报表涉及到金额结算,因此对于不允许存在误差,Flink依赖自身的exact once机制,保证了我们数据不会重复消费和漏消费。

Flink的重要特性

下面我们来具体说说Flink中一些重要的特性,以及实现它的原理:

1)低延时、高吞吐

Flink速度之所以这么快,主要是在于它的流处理模型。

Flink 采用 Dataflow 模型,和 Lambda 模式不同。Dataflow 是纯粹的节点组成的一个图,图中的节点可以执行批计算,也可以是流计算,也可以是机器学习算法。流数据在节点之间流动,被节点上的处理函数实时 apply 处理,节点之间是用 netty 连接起来,两个 netty 之间 keepalive,网络 buffer 是自然反压的关键。

经过逻辑优化和物理优化,Dataflow 的逻辑关系和运行时的物理拓扑相差不大。这是纯粹的流式设计,时延和吞吐理论上是最优的。

简单来说,当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。

2)Checkpoint

Flink是通过分布式快照来实现checkpoint,能够支持Exactly-Once语义。

分布式快照是基于Chandy和Lamport在1985年设计的一种算法,用于生成分布式系统当前状态的一致性快照,不会丢失信息且不会记录重复项。

Flink使用的是Chandy Lamport算法的一个变种,定期生成正在运行的流拓扑的状态快照,并将这些快照存储到持久存储中(例如:存储到HDFS或内存中文件系统)。检查点的存储频率是可配置的。

3)backpressure

back pressure出现的原因是为了应对短期数据尖峰。

旧版本Spark Streaming的back pressure通过限制最大消费速度实现,对于基于Receiver 形式,我们可以通过配置spark.streaming. receiver.maxRate参数来限制每个 receiver 每秒最大可以接收的记录的数据。

对于 Direct Approach 的数据接收,我们可以通过配置spark.streaming. kafka.maxRatePerPartition 参数来限制每次作业中每个 Kafka 分区最多读取的记录条数。

但这样是非常不方便的,在实际上线前,还需要对集群进行压测,来决定参数的大小。

Flink运行时的构造部件是operators以及streams。每一个operator消费一个中间/过渡状态的流,对它们进行转换,然后生产一个新的流。

描述这种机制最好的类比是:Flink使用有效的分布式阻塞队列来作为有界的缓冲区。如同Java里通用的阻塞队列跟处理线程进行连接一样,一旦队列达到容量上限,一个相对较慢的接受者将拖慢发送者。

消息报表的实时计算

优化之后,架构升级成如下:

可以看出,我们做了以下几点优化:

  1. Flink替换了之前的spark,进行消息报表的实时计算;
  2. ES替换了之前的Solr。

对于Flink进行实时计算,我们的关注点主要有以下4个方面:

  1. ExactlyOnce保证了数据只会被消费一次
  2. 状态管理的能力
  3. 强大的时间窗口
  4. 流批一体

为了实现我们实时统计报表的需求,主要依靠Flink的增量聚合功能。

首先,我们设置了Event Time作为时间窗口的类型,保证了只会计算当天的数据;同时,我们每隔一分钟增量统计当日的消息报表,因此分配1分钟的时间窗口。

然后我们使用.aggregate (AggregateFunction af, WindowFunction wf) 做增量的聚合操作,它能使用AggregateFunction提前聚合掉数据,减少 state 的存储压力。之后,我们将增量聚合后的数据写入到ES和Hbase中。

流程如下所示:

同时,在查询的时候,我们通过taskID、日期等维度进行查询,先从ES中获取taskID的集合,之后通过taskID查询hbase,得出统计结果。

总结

通过使用Flink,我们实现了对消息推送数据的实时统计,能够实时查看消息下发、展示、点击等数据指标,同时,借助FLink强大的状态管理功能,服务的稳定性也得到了一定的保障。未来,个推也将持续优化消息推送服务,并将Flink引入到其他的业务线中,以满足一些实时性要求高的业务场景需求。

共收到 21 条回复
1Floor Deleted
2Floor Deleted
3Floor Deleted
4Floor Deleted
5Floor Deleted
6Floor Deleted
7Floor Deleted
8Floor Deleted
9Floor Deleted
10Floor Deleted
11Floor Deleted
8438 1596904482
9478yyk · #12 ·

桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php
人氣留言板【Telegram:kkk141】或【Skype:xc7794】
選妃:http://www.ny076699.com/forum.php
雙北直接看照選妃:https://t.me/kpk183
新竹直接看照選妃:https://t.me/jhy147
中部直接看照選妃:https://t.me/gghj11
南部直接看照選妃:https://t.me/gg4y1
北中南影片:https://t.me/yk958
高品質口碑素質好茶:http://www.ny076699.com/forum.php
熱門推薦好康半價茶:http://www.ny076699.com/forum.php
私房菜新妹妹下海咯客評可見:妹妹自己要求內射她哦 吃魚喝茶台灣茶魚全台灣外送茶台北外送茶台北外約茶莊無套茶莊台中外送茶高雄外送茶新竹彰化台南送茶留言板一夜情找小姐援交妹台灣本土妹妹兼職下海蘿莉學生雙胞胎3p爆乳單親媽媽高檔空姐麻豆小模藝人旅館愛愛全套服務口交愛愛按摩洗澡無套內射肛交後門口爆吞精LG舌吻69現金消費看照約妹約炮網站加入帳號立減現金1-5k多買多送免費加入會員桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

#今日約咩優惠公告
??單身男神套餐-單身狗看過來可以帶女友去玩??
優惠規則: ?必須是單身狗 ?被催婚/沒女友/沒炮友 ?拒絕毒客/酒客/澳客
優惠內容:
?一次性消費5k以上可帶回家吃飯-限時3h
?一次性消費8k以上可帶出去約會 看電影-限時4h
?一次性消費10k以上 可伴遊一天+聚會-限時5h
?一次性消費15k以上 可一天一夜呆一起
?一次性消費20k以上 可2天伴遊+回家吃飯+聚會
?包夜一次 免費陪三天三夜+回家吃飯+住你家
優惠期間【8/8/810號有效】
PS:不收紅包 不發紅包 免費陪睡 注:限額15個
注:限額15個! 注:限額15個 ! 注:限額15個!
??男神約咩紅包活動
?今日約咩 不限價位 免費送福袋一個-5k優惠券
?新客加節消費 終身半價 3次半價試車
?熟客消費15k以上 一夜情免費伴遊24h
?一次性買四節以上 免費陪酒 免費約會
?包夜一次 免費送空姐一夜情 處女
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

推薦一個緊急求助急需試車的妹妹
【蘿莉 158/21歲/46kg/Bcup】
家裡急需用錢。今天面試今天就下海、為了能趕快賺到錢妹妹還把本人照片給我讓我po出來
具體為什麼那麼缺錢妹妹不想跟我說.但是看妹妹的一些動作表情感覺很急的樣子.
服務:無套口交 帶套做/可以清水溝/可以揉 奶吸奶那是粉色的/鮑魚也可以 我跟 妹妹只有短暫的接觸。
聲音蠻可愛的.而且大眼也很可愛 給人的感覺像想是有錢人的孩子不知道妹妹經歷了什麼這麼急需用錢
所以喜歡這種類型的來約她吧價位你出我跟妹妹談
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

心雅 164cm/E奶/27歲
類型: #性感 #大奶+美腿白皙 配合高,騷B-騷癢難耐,太久沒被幹過了動賴6p889怎麼姿勢都會配合唷現在好想找個人痛痛快快的幹一炮不知道哪位哥哥開滿足她主動型 健談
職業:性感 火辣/風騷,加節更好玩
#服務:配合度超高,敢玩 尺度大 豪放 性欲強 超騷
#特殊:角色扮演,私下還會給拍照哦,無套吹,69互舔

桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

全程無套 口爆 肛交玩超大重口味推薦
藝名:汁畫 【寂寞少婦】
身材密碼:162/大D/27歲 【免費送你絲襪一雙】
PS:考慮到有的哥哥帶套玩的不舒服 無套插的才爽
特別面試她來兼職滿足各位大大的需求 什麼都玩
可吸可舔可69 可吞精 還可後門價位很便宜
人人都吃的起的優質好茶 歡迎哥哥來品嘗
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

私房菜好茶私下看照好久沒有推薦騷妹了
#絕對絕對淫蕩騷貨妹
#超級超級刺激的騷妹
彎彎 162 Dcup 24歲
昨天客人約的正妹 配合高 優質高 品質高
外貌素質高 重點什麼都可以配合玩 CP高
水多外粉內嫩穴很敏感很容易高潮喜歡玩法姿勢多變態度親切無刺青
不抽煙 很貼心 完全不會的喲
她絕對是您最佳的選擇 配合度高 敢玩
貨真價實淫蕩正慢功夫茶想挑戰嗎~
#約就送以下福利享受:
福利:正妹一週都會找免費的炮友
福利:享受正妹家的服務
福利:享受永久半價
福利:享受永久免費旅館
福利:可玩3P或是群P{vip}
福利:無套內射永久免費體驗
桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

茵茵 162/D/23歲
年輕的單親媽媽求救 下海只是為了
尋求一份生活費 你可以來幫幫她嗎?
生孩子不久 據推斷應該還有乳汁
因為家裡就她自己在帶寶寶 所以的話
可能說去旅館跟哥哥愛愛的時候 要帶上自己的寶寶喲

不介意的哥哥可以找我喲(如果介意的話 那我可以交代妹妹 把寶寶交給其他人照顧)
可以陪你玩你想要的尺度 當然 前提還是不變態 不SM喲 配合好的話會給你1H/2S
加節的話會適當的給肛交和中出喲
不是每個妹妹都會配合的桃子外送茶約妹約炮Line:jk163 或福利特價賴9478yy
桃子外送茶熱門推薦選妃:http://www.ny076699.com/forum.php

96
j54733 · #13 ·

又騷又緊的單親媽媽~ 賴:j54733
穎兒是我在嬰兒用品店裡遇見的,當時我陪朋友一起幫他的孩子選購奶瓶,穎兒原來和我的朋友認識,透過聊天發現她生活上遇到困難也挺可憐的,當下我們就交換了聯絡方式,也就開始慢慢的了解彼此。這段時間下來和穎兒聊的挺好,個性上也很和的來,她是個很善良的女孩,更善解人意,但也因此發現了她有出來下海兼職,最主要的原因就是她是個單親媽媽,年紀小的時候被騙懷孕了,後來男生跑了,留下她自己撫養孩子,穎兒想要給孩子一個更好的生活環境,所以下海兼職。我跟她也約過很多次,配合的很好,她的服務態度超讚,很主動性慾很強,重點是外貌也很漂亮,身材保持的很好,一直都有健身運動的習慣。平時在家帶完孩子做完家事,會趁著休息的時間做做有氧或是重訓。穎兒的身體是很敏感也容易高潮,雖然生過小孩,但是穴穴還是很緊,很粉。奶泡 吸奶 舔鮑 後背式 觀音坐蓮 泡澡 LG 還有更多想要嘗試的姿勢 可配合情趣用品【看配合fu】這是我發現的小秘密。也可以跟她約看電影或是外出玩,如果喜歡的話可以加賴聊一聊,因為小弟一直國外長期出差,疫情這段期間無法幫助她,在盡我最大努力的之下在這裡介紹她,希望你們能多幫助她,小弟在這裡謝謝你們了。她的賴:j54733 身材密碼:164 D 24歲 阿傑介紹

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up