你们公司在使用 Flink 吗?

你是不是经常体验或看到以下这些场景?

小田,你看能不能做个监控大屏实时查看促销活动销售额(GMV)?


小朱,搞促销活动的时候能不能实时统计下网站的 PV/UV 啊?


小鹏,我们现在搞促销活动能不能实时统计销量 Top5 啊?


小李,怎么回事啊?现在搞促销活动结果服务器宕机了都没告警,能不能加一个?


小刘,服务器这会好卡,是不是出了什么问题啊,你看能不能做个监控大屏实时查看机器的运行情况?


小赵,我们线上的应用频繁出现 Error 日志,但是只有靠人肉上机器查看才知道情况,能不能在出现错误的时候及时告警通知?


小夏,我们 1 元秒杀促销活动中有件商品被某个用户薅了 100 件,怎么都没有风控啊?


小宋,你看我们搞促销活动能不能根据每个顾客的浏览记录实时推荐不同的商品啊?

。。。


那这些场景对应着什什么业务需求呢?我们来总结下,大概如下:

640?wx_fmt=jpeg


初看这些需求,是不不是感觉很难?那么我们接下来来分析一下该怎么去实现?


从这些需求来看,最根本的业务都是需要实时查看数据信息,那么首先我们得想想如何去采集这些实时数据,然后将采集的实时数据进行实时的计算,最后将计算后的结果下发到第三方。大概会有以下三个方面:


  • 数据实时采集

  • 数据实时计算

  • 数据实时下发


本文从日常老板的需求口吻来讲解现在越来越多的实时性要求高的需求,并将这些需求做了个归纳统计,然后从需求里面得到了该如何去实现这类需求,是需要实时采集、实时计算、实时下发,并用图片把需求完成后的效果图展示了出来。


接着我们分析了对实时性要求高的计算这块,然后将离线计算与实时计算进行了对比,批处理与流处理进行对比,离线计算的特点与实时计算的特点,加上我自己的调研结果,归纳了实时计算的四种使用场景,提出了使用实时计算时要面临的挑战,因为各种需求,也就造就了现在出现不断的实时计算框架,接着看了下市场上所有的实时框架,但是因为这类对比的文章网上比较多,因此我只介绍了 Flink 的特性和其 API。


通过这篇文章的学习,你可以知道实时计算有哪些场景,你的公司这些场景是不是也可以换成 Flink 来做?同时也知道了实时计算与离线计算的区别,并初步认识了一下这个好玩好用的实时计算框架——Flink。


限于篇幅,感兴趣的同学可以扫描下方二维码继续查看完整全文


640?wx_fmt=jpeg

后面系列 Chat 文章中我们通过多个实战和大型案例来讲解 Flink,也欢迎大家订阅后在读者圈交流沟通你们公司是不是也在使用 Flink?使用 Flink 遇到什么坑?大概哪些场景使用到了 Flink?有没有更多的场景可以使用 Flink?


点击阅读原文,订阅本场 Chat ,查看完整全文

Flink中创建和使用广播流主要是为了在流处理中将某些变化不频繁的数据(如配置信息、静态字典等)广播到所有并行的任务实例。这样做可以使得每个任务实例都可以访问到最新的广播状态数据。以下是创建和使用广播流的基本步骤: 1. 准备广播数据:首先,你需要准备需要广播的数据。这些数据通常存储在一个集合或者文件中,比如使用List或者自定义的类来存储。 2. 创建广播状态:在Flink中,可以通过`BroadcastStateDescriptor`来描述广播状态,它需要指定状态的名字和数据类型。 ```java BroadcastStateDescriptor<String, String> broadcastStateDescriptor = new BroadcastStateDescriptor<>("broadcast-state", Types.STRING); ``` 3. 构建广播流:使用`BroadcastStream`来构建广播流,需要将上述创建的广播状态描述符与原始的数据流结合。 ```java DataStream<String> sourceStream = ...; // 原始数据流 BroadcastStream<String> broadcastStream = sourceStream .broadcast(broadcastStateDescriptor); ``` 4. 使用广播流:通过`connect`方法将广播流与主流连接起来,并定义如何处理主流和广播流的数据。`CoProcessFunction`用于处理连接后的数据,其中可以分别处理来自主流和广播流的事件。 ```java DataStream<String> nonBroadcastStream = ...; // 非广播数据流 ConnectedStreams<String, String> connectedStreams = nonBroadcastStream.connect(broadcastStream); DataStream<String> resultStream = connectedStreams .process(new MyBroadcastProcessFunction()); ``` 5. 发布广播流:最后,通过执行环境的`execute`方法启动流处理作业,广播流就会开始工作。 ```java executionEnv.execute("broadcast-stream-example"); ``` 在使用时,广播流会不断地将状态数据发送给所有的并行任务实例,每个实例都会维护一份状态的本地副本。Flink的`BroadcastState`可以在运行时动态更新,而无需重新部署整个作业。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值