您现在的位置是:综合 >>正文
快手点赞评论平台 - 抖音浏览自助平台
综合8人已围观
简介01FlinkCEP简介FlinkCEP是基于FlinkRuntime构建的复杂风波处理库,它擅长处理跨多个风波的复杂规则匹配场景。例如检查用户下单后,是否超过半个小时没有发生支付行为;检测用户步入直 ...
01
Flink CEP 简介
Flink CEP 是快手基于 Flink Runtime 构建的复杂风波处理库,它擅长处理跨多个风波的点赞抖音复杂规则匹配场景。例如检查用户下单后,评论平台平台空间刷人气1万是浏览否超过半个小时没有发生支付行为;检测用户步入直播间后,是自助否有浏览商品随即加入购物车行为。
Flink CEP 有以下优势:
02
业务场景与挑战
随着抖音电商业务逐步趋向稳定和成熟,快手抖音电商实时数仓团队接到的点赞抖音实时数据规则类业务需求也逐渐增多,因此我们开始尝试使用 Flink CEP 来支持这种业务场景。评论平台平台
下面列出两个典型的浏览业务场景,并介绍一下 Flink CEP 在这种场景中遇见的自助一些挑战。
2.1 业务背景
第一是快手实时预警场景,它是点赞抖音十分典型的业务诉求,把用户看数据的评论平台平台形式从大屏“盯盘”转换为“根据规则检查结果,主动推送”,浏览这无疑对一些关键业务问题的自助发觉和洞察起到至关重要的作用。有如下三个具体案例:
第二是施行营销场景,它是基于实时数据驱动,根据定义的规则策略挖掘目标群体,并依照业务目标作出精准营销投放的营销活动。有如下三个具体案例:
2.2业务挑战
第一,在规则配置方面存在灵活性不足的问题。当前无论是新增还是更改规则,都须要实时数仓的研制朋友通过更改代码的形式来支持,这就造成研制朋友须要频繁的对接业务。在一些极端的场景,比如双十二大促期间,空间刷人气1万一个研制朋友常常须要同时应对接,二十多个营运朋友的规则创建或则更改的诉求。业务需求也因为人力的单点阻塞问题迟迟未能上线。
第二,规则与估算任务之间存在深度耦合。当每位规则都须要强制绑定一个估算任务时,就会造成估算任务的数目会随着规则的创建渐渐增多。大量的任务会导致极高的运维成本和巨大的资源浪费,使整个系统最终显得不可维护。以上面提及的店家自定义规则检查热卖商品的这个场景为例,考虑到当前抖音电商庞大的店家群体,最终创建规则的数目可能是巨大的,进而造成整个估算任务的数目也急剧爆燃。
第三,当前 Flink CEP 支持的规则语义不够丰富。列举两个典型的案例:
03
解决方案实践
整体我们分为四个阶段来解决上述的问题。
第一阶段,我们对 Flink CEP 规则的核心信息进行了提炼和具象,并设计了一套清晰易懂的规则 DSL。这样就可以让业务朋友自主配置业务规则,从而解决规则配置灵活性不足的问题。那么怎么让业务配置的规则运行上去?
第二阶段,我们对 Flink CEP 计算任务进行整修,让其支持动态递交规则或则更新规则的能力,从而实现规则与估算任务之间的彻底前馈。解耦以后,不再强制要求每一个规则必须对应一个估算任务来运行。也就是同一个估算任务可以同时接收递交的多条规则,实现收敛整体估算任务的数目,提升规则利用率的目标。
前面两个阶段要解决了规则配置的灵活性以及规则与其他任务的强绑定问题,但是依然没有解决规则本身的语义丰富性问题。因此,第三阶段,我们主要针对特定业务的场景的规则诉求、升级和拓展规则的语义。
经过前三阶段的升级和优化,前面提及的业务痛点早已基本得到了解决,但规则引擎在易用性和周边能力方面还有所缺乏。例如我们难以直观的查看当前系统运行的规则内容、注册风波数据;业务递交的规则与估算任务之间按照什么样的策略来进行分发;用户依然须要订阅规则引擎的输出数据进行格式转换、写入目标储存等操作。
因此在第四阶段,我们整合了上面的方案,并不断丰富周边能力生态,打造了一站式实时规则平台。支持用户在平台上进行风波注册、预览、规则配置、规则调试、规则发布等全流程的自主操作,进一步提高工作效率。
为了实现业务自主配置规则,规则的句型必须清晰易懂。我们设计规则 DSL 整体结合了 JSON 和基础 SQL 语法抖音浏览自助平台,利用 JSON 的高可读性来描述规则的元数据、规则匹配属性等信息,利用 SQL 的强悍抒发力来描述 CEP 匹配条件以及匹配结果的处理逻辑。
这里我们发觉了一个新的问题,如何通过 SQL 来抒发风波是否满足匹配条件?SQL 可以查询什么表?以一个具体的案例来回答这个问题。
假设要检查用户下单后是否发生了支付行为,那么规则编译生成的 NFA 可能是上图所示的样子。在规则运行时,我们将当前流入的风波以及当前规则的中间匹配结果,都以数据表的方式注册到上下文。当前流入的风波对应的表名称默认是 events,规则中间匹配结果对应的表名称和它的 PatternName 保持一致。
在这个案例中,每个 SQL 可查询到的表就是三张,分别是 events 表,表示当前流入的风波;create_order 表,表示当前早已匹配到的下单风波;pay_order 表,表示早已匹配到的支付风波。
在配置 SQL 时,就可以对早已注册到上下文的任意数据表进行查询。当 SQL 查询的结果非空时,就表示当前匹配条件判定通过。状态机经过 Take 边流转到下一个状态,并将风波保存到对应的表,否则都会到 Ignore 边,丢弃掉风波。
再来看一下这个案例对应的规则配置条件的完整配置。整体是一个字段的方式,数组中每位元素表示一个 pattern,第二个 pattern 与前一个 pattern 之间的联接类型是 FOLLOWED_BY。第一个 pattern 的匹配条件是从流中检查用户下单风波,第二个 pattern 匹配条件是从流入检查用户支付风波。
注意,这个支付风波的订单是上一步我们缓存出来的下单风波对应的那种订单。经过前面的改建实现了,只要稍稍有一些 SQL 基础的业务人员,都可以读懂并配置规则。
前面我们谈到,当前的 Flink CEP 计算任务不支持动态递交规则。主要诱因是在编译阶段 Flink CEP 规则估算逻辑就确定了,并且早已通过 NFACompiler 编译完毕。在运行时估算任务只能固定执行之前早已编译好的规则。那么我们是怎样改建的呢?
为了实现规则的动态发觉,我们引入了一个规则流,用户递交或更改的规则都可以发到这条流中。为了实现规则的动态注入,我们将规则流设计为 Broadcast Stream。当发觉新递交的规则时,广播分发到所有的 SubTask。
为了实现规则的在线加载执行,我们基于上面提及的规则 DSL,研发了一套基于规则的解析器。当 SubTask 收到分发的规则后,可以在线解析生成规则运行须要的组件。例如 NFA、规则匹配条件 SQL 对应的执行计划、匹配结果处理函数等。然后保存到 Flink State 中,持续监测和处理后续的风波。
解释一下为何采用 Broadcast Stream 来实现规则的动态注入。由于 Flink CEP 是有状态的估算,规则的更新/删除常常须要伴随 Flink States 的操作和处理。例如:当删掉规则时,连带当前规则关联的风波缓存等状态信息也须要一并删掉。对比通过其他方法感知规则变更,比如启动一个异步线程定时扫描规则,通过 Broadcast Stream 的形式优势是,当测量到规则变更,能够更方便安全的操作 Flink State。
上面的方案解决了一个估算任务动态递交规则的诉求,但当一个估算任务运行多条规则时,又带来了一个新的问题。
问题一,由于规则的风波分组逻辑可能不同。(比如规则 A 需要先对风波流根据"用户的 IP 地址"路由到同一 Task 后再进行 NFA 匹配估算。而规则 B 则须要对风波流按”用户的设备 ID“进行路由)。那么当这两个规则运行在同一个估算任务时,如何兼容呢?
为了解决这个问题,我们新增了 KeyGenOperator 算子。当测量到新的风波流入时抖音浏览自助平台,先依照每一条规则配置生成一个与之对应分组的 Key,然后按分组 Key 再进行下游的 Task 分发,这样就实现了对多条规则的不同风波分组逻辑的兼容。
问题二,由于同一个估算任务运行多条规则,就可能会带来规则估算冗余的问题。比如,规则 A 关注用户下单、支付等支付相关风波,而规则 B 关注用户的商品浏览、评论等流量相关的风波。如果同一个估算任务同时运行这两条规则,那么这个任务就必须同时消费这两类风波。也就是说规则 A 本不关注流量类的风波,但因为整个任务整体订阅了这类风波,就造成规则 A 也必须处理这类风波。
为了解决上述问题,我们在 KeyGenOperator 算子新增了“事件筛选”组件,实现针对同一输入风波不同规则里的个性化风波筛选。也就是说,针对新流入的风波,仅当规则关注这个风波的时侯,才会生成与之对应的分组 Key,并且进行后续的估算。
值得一提的是:在店家自定义预警的业务场景中,由于风波筛选的疗效是比较好的(也就是说,商家自定义的每位规则仅关注当前店家所属商品的相关风波),那么经过我们测试,单个任务(在 600Core、800 并发度的情况下)可以支持的店家简单规则数目可以超过百万。
当发生风波 A 后一段时间内,没有发生风波 B,其对应的伪代码可能是前面的这些方式。当前的 Flink CEP 不支持这些语义,因为可能导致没有风波触发这条规则,最终完成匹配的情况。
针对这个问题,我们在规则生成的 NFA 中引入一种 Pending 状态。当流入风波满足创建订单的条件以后,状态会急剧迁移到 Pending 状态等待超时。当 Flink CEP 任务的 watermark 向前推动时,会触发 Pending 状态的 NFC 进行估算,判断是否早已超时,如果超时都会触发 NFA,迁移到下一个 Final 状态。如果在这之前系统流入了订单支付风波,就会转移到 Stop 状态。
通过这些方法,我们实现了对发生风波 A 之后一段时间内,没有发生风波 B 类的语义的支持。
为了进一步提高规则引擎的应用性,我们整合上面的方案,拓展规则引擎的周边能力,研发了一站式规则平台。用户可以在平台上自助进行风波的注册、预览、规则配置、调试、发布等全流程的自助操作。
平台整个构架共分为四层,分别是:
事件层,例如看播风波、下单风波、物流风波、客服风波等。
计算层,负责动态的接收用户递交的 CEP 规则,并对规则进行解析,检测后续流入风波。计算层的核心是规则估算模块,也就是具体的 Flink CEP 计算任务。同时在估算层还有规则调度模块和规则解析模块,规则调度模块负责将新递交的规则分发到具体的 Flink CEP 计算任务,调度策略可以选择同风波源优先或则负载均衡优先。
触达层,负责估算层规则匹配结果的数据应用,主要包括延迟策略管理、维度数组扩展、推送目标管理等。
平台层,负责与用户交互以及任务运维等工作。
业务成效方面:
技术成效方面:
04
未来展望
未来我们计划在以下三个方面继续对规则引擎进行建设。
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“微博刷评兼职”。http://dynamic.bigcatprod.com/html/240b099757.html
相关文章
ks代刷网站推广链接免费,快手刷赞平台网站推广 - 秒刷网站24小时自助下单平台
综合ks代刷网站推广链接免费 ...
【综合】
阅读更多2023年的腊月廿八,再不写就是一年!
综合大家好呀!我是陪伴你的路,这是我的第10篇更文,让我们一起探索人生、赚取财富、完善自我。掐指一算,已有一个半月没写公众号更文了。其实,心里始终惦念着要写,可要么没时间,要么没心情。今天已是2023年的 ...
【综合】
阅读更多粉丝37个,卖光50亩池塘的小龙虾
综合作者|韩俊杰、MS来源|馒头商学院「ID:mantousxy」近两年,因为短视频直播市场的繁荣,一批网红达人从平台涌现。1个月涨粉百万,3个月涨粉千万,已经成为司空见惯的事。许多人也由于抖音、快手,生 ...
【综合】
阅读更多
热门文章
最新文章
免费刷赞平台全网+最低价啊qq空间 - 快手少量刷播放500
(小红书博主小红)用笑容治愈所有人的心灵
殑澶勭綒銆侟/p>
2銆佹墦寮€鎶栭煶锛岀偣鍑绘垜閫夐」銆?涔嬪悗鐐瑰嚮涓夋寜閿€?涔嬪悗鐐瑰嚮鍒涗綔鑰呮湇鍔′腑蹇冮€夐」銆?涔嬪悗鐐瑰嚮涓婄儹闂ㄦ寜閿€?涔嬪悗閫夋嫨鎴栧垯鎷嶄竴涓ソ涓€鐐圭殑瑙嗛銆侟/p>
3銆佲€滄湵涓ゅ彧鍚栤€濈湡姝g殑鐖嗗彂鏄粠鍘诲勾2鏈堝紑濮嬶紝杩炵画鐨勪綔鍝佺偣璧炵牬鐧句竾锛岃鈥滄湵涓ゅ彧鍚栤€濈殑绮変笣杩呴€熶笅闄嶃€傚嵆浣夸互鍚庣殑鍐呭涓嶅湪#鏄庡ぉ浣犳尐鎵撲簡鍚?绯诲垪锛岃€屼笖涓婚鐨勯鏍煎苟娌℃湁鍙樺寲銆侟/p>
4銆佸彲浠ラ€氳繃绀剧兢鏉ュ疄鐜帮紝鍦ㄧぞ缇ゆ椂甯稿彂鐐瑰皬绾㈠寘鑱氫汉姘斻€備负浣犱滑鏁寸悊浜嗕竴浠戒釜浜虹煡璇嗘彁楂樼殑瀛︿範璧勬簮锛屽寘鎷繖浜斿勾寰堢伀鐨勭煭瑙嗛鐩存挱甯﹁揣钀ヨ繍锛屽悇澶ф笭閬撳紩娴侊紝瑙嗛鍓緫鍜屾湁澹颁功绛夎祫婧愶紝姣忎綅鍒嗚〃鏍奸兘鏄笉鍚岀殑绫荤洰锛岄』瑕佸摢浜涘垏鎹㈠嵆鍙€侟/p>
5銆佹俯绮剧伒闈犵潃璁叉瀛愬啀鍒拌嚜宸辨媿娴嬭瘎缇庡锛岃€屼笖鑷垱璇濋锛屾児鐏埗浜茬殑涓€鐧剧鏂规硶鐖嗙伀锛岀煭鏈熷唴娑ㄧ矇鏃犳暟銆傚ぇ澶х殑鑰虫湹鎶栭煶绮変笣澧炲姞鐨刟pp锛屽皷灏栫殑榧诲瓙锛岀湅濂圭殑瑙嗛甯稿父浼氭悶绗戜笉姝紝鏈変簺瑙嗛杩拌鐨勪技涔庢槸娈靛瓙锛屼粩缁嗗墫鏋愬嵈涔熸湁鍏朵腑閬撶悊銆侟/p>
鏈夋病鏈夊厤璐圭殑杞欢娑ㄧ矇涓濈殑鍟?
鐨毊铏綼pp鍏嶈垂闄嶄綆绮変笣姝ラ濡備笅锛氫拱瀹跺彲浠ラ€氳繃璇磋寮曞鍗栧鍏虫敞搴楅潰锛屾瘮濡傚彲浠ュ憡鐭ュ叧娉ㄥ悗鍙互棰嗚鍒╁埜銆佹姌鎵g瓑锛岃鏈変竴浜涗笓灞炲埄鐩婄偣锛岃繖鏍锋槸鍙互鏇村ソ鐨勫墝婵€鍗栧鍏虫敞鐨勩€係hopee鍏虫敞绀兼槸鍙互甯姪涔板鏈夋晥鍚哥矇鐨勯噸瑕佹柟娉曘€侟/p>
鎶栭煶涓婅鏄姈闊虫槑澶╁彲浠ュ厤璐规定绮夋槸鍋囩殑锛涙姈闊筹紝鏄敱瀛楄妭璺冲姩瀛靛寲鐨勪竴娆鹃煶涔愬垱鎰忕煭瑙嗛绀句氦杞欢銆侟/p>
蹇墜鍒风矇涓?020骞村害鏈€缁欏姏鐨勫揩鎵嬫定绮夌鍣ㄣ€傛墍鏈夊埛绮変笣杞欢瀹屽叏鍏嶈垂锛岃鏇村蹇墜鐢ㄦ埛閫氳繃鏈〉闈㈡彁渚涚殑鍒风矇杞欢锛屽府鍔╀綘蹇€熸定绮夈€傝蒋浠朵娇鐢ㄤ究鎹风畝鍗曪紝蹇€燂紝瀹夊叏涓嶅皝鍙凤紝鍙互鏀惧績浣跨敤銆傛弧瓒充笉鍚屽揩鎵嬪钩鍙扮敤鎴蜂娇鐢?strong>鎶栭煶绮変笣澧炲姞鐨刟pp锛屽府鍔╀綘蹇€熸定绮夈€侟/p>
如何提高视频播放量?5种方法助你提升视频内容质量
qq刷会员平台全网最低价啊 - 快手播放在线刷业务平台24小时,24小时全自助下单网站
神秘大哥与高迪连麦,称我要花10亿捧你