在业务拓展阶段,新增和调整规则的情况很常见,这需要实时数仓团队不断修改代码来提供支持。这样的状况使得业务对接的工作量大大增加,迫切需要简化规则处理流程。
规则处理的现状困境
新增或调整规则,都需要研发团队实时数仓成员动手修改代码来达成。以电商业务为例,促销规则经常变动。这导致研发人员需频繁与业务部门沟通,花费不少时间和精力在规则调整上,使得工作效率难以提升。
这种工作方式使得研发部门承受了更大的压力,同时也影响了业务对市场变化的快速反应。当业务部门提出新的需求,研发部门必须先进行处理,这导致业务进展变得缓慢,有时甚至可能错过市场上的良机。
Flink CEP 任务改造
在第二阶段,我们针对 Flink CEP 的计算任务进行了调整。我们赋予其动态提交或更新规则的功能。这一调整十分关键,比如在金融交易领域,它能够迅速适应新的风险规则需求。
任务改造后,规则和计算任务完全分离。因此,当业务发生变动时,可以更便捷地调整规则,无需研发人员重新编写代码。这减少了两者之间的依赖,提升了系统的维护便捷度。
用户自主操作提升效率
用户可在该平台自主完成事件登记、预览、规则设定、调试及发布等各环节操作。在物流业务中,用户能依据订单状态变动来设定个性化规则。
用户自主操作大大提高了工作效率。业务人员可按需直接设置规则,无需编写代码,这降低了沟通成本和等待时间,使得业务调整更为快捷。
规则编译与运行机制
对用户下单后是否已付款进行检测,依据该规则生成的非确定有限自动机(NFA)具有特定表现形式。这种形式在监控在线教育课程购买过程中显得尤为实用。
在规则执行过程中,会将输入事件和中间匹配结果以表格形式记录至上下文环境。这类似于电商平台依据用户浏览商品和将商品加入购物车的行为来推荐商品,以此达到更精确的数据分析。
Broadcast Stream 的优势
与其他调整感知规则的方法相比,比如通过开启异步线程来定时检查规则,广播流模式展现出其独有的优点。这一点在游戏活动规则的变动中尤为明显。
一旦规则有所变动,Broadcast Stream 就能更轻松、更安全地处理 Flink 状态。比如在电商进行大规模促销活动并调整规则时,它能保障数据安全并维持系统的稳定运行。
多规则问题与解决办法
当计算任务执行多项规则时,可能会出现新的问题。比如,规则A需要根据用户的IP地址来指引事件。在社交平台的用户行为分析过程中,这种情况时常出现。
为了解决这一问题,我们在KeyGenOperator算子中加入了“事件筛选”功能。以直播带货为例,商家可以设定个性化的预警标准,以此精确地挑选出感兴趣的事件。经过实际测试,当单个任务在600Core和800并发的情况下,系统能够处理的商家简单规则数量超过了百万。
在实际应用中,Flink CEP 规则在哪些部分还有提升空间?