栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Flink双流connect的独特使用方式

Flink双流connect的独特使用方式

业务需求:可动态更新本地内存缓存信息

因有一些配置信息原来是存在redis中的,但是发现flink集群与redis集群网络有较大延迟,这样导致flink处理速度上不去,有消费挤压与连接报错等问题。

解决方案:通过双流connect连接两个kafka信息,一个做主数据流处理,一个做缓存信息更新处理,通过processBroadcastElement的广播特性,将redis信息更新至内存中,实现快速访问。

//初始化主 kafka消费者
FlinkKafkaConsumer myConsumer = new FlinkKafkaConsumer(topicList, new KafkaMsgDeserializationSchema(),
        RentReductionConsumerConfig.getPropertiesByPara(***,****,***));

//初始化redis-kafka消费者
List custPerConfigList = FlinkKafkaConsumerCommon.getTopicsList(***);
FlinkKafkaConsumer custPerConfigConsumer = new FlinkKafkaConsumer(custPerConfigList,
        new KafkaMsgDeserializationSchema(),
        RentReductionConsumerConfig.getPropertiesByPara222(***,****,***));

//主kafka数据源
DataStream stream = env.addSource(myConsumer);

//redis-kafka数据源
BroadcastStream custPerConfigStream = env.addSource(custPerConfigConsumer).map(kafkaMsgBo -> {
    return new String(kafkaMsgBo.getMessage(), "UTF-8");
}).broadcast(configStateDescriptor);

// connect above 2 streams 
DataStream> connectedStream = stream.connect(custPerConfigStream) .process(new ConnectedBroadcastProcessFuntion());

ConnectedBroadcastProcessFuntion extends BroadcastProcessFunction后实现processBroadcastElement方案
//定义全局缓存变量
private CustomerPerceptionConfig customerPerceptionConfig;

//广播配置消息处理
@Override
public void processBroadcastElement(String jsonStr, Context context, Collector> collector) throws Exception {
    //获取相应redis数据存入全局变量中
    initRedis();
}

此方案优缺点:

优点:解决频繁访问redis造成挤压、网络延迟等问题,提高flink实时校验处理速度。

缺点:本地内存大小有限制

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号