Flink集群鉴权(Kafka+Redis)

Flink集群鉴权(Kafka+Redis)

需求说明:

出于安全考虑,连接集群时会添加账号密码的校验,所以在Flink与数据源建立连接时需要传入账号和密码。

解决方案:

1、在构造Flink连接器时传入密码

Kafka

Properties proper = new Properties();
        proper.setProperty("zookeeper.connect", ZookeeperServers);      // zookeeper地址
        proper.setProperty("bootstrap.servers", srcBootstrapServers);   // kafka集群地址
        //Kafka鉴权信息配置
        proper.setProperty("security.protocol", "SASL_PLAINTEXT");  
        proper.setProperty("sasl.mechanism", "SCRAM-SHA-256");  
        //账号密码配置
        proper.setProperty("sasl.jaas.config", "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"admin\" password=\"admin\";");  
        // kafka生产者
        FlinkKafkaProducer010 producer = new FlinkKafkaProducer010<>(outTopic, new SimpleStringSchema(),proper);

在proper配置好鉴权的信息,但是出现问题:

因网络问题,从第一次发送消息到Kafka收到消息,有接近1分钟的延迟,期间会丢失很多消息。为了减少消息的丢失,需要对前1分钟的数据进行处理,所以使用了自定义的Sink。

@Override
public void invoke(String value, Context context) throws Exception {
        record = new ProducerRecord<>(topic, value);
        producer.send(record);
        if (flag < 10){
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            flag ++;
            System.out.println("第"+flag+"次尝试");
        }
        System.out.println("Kafka:"+value);
    }

前几条消息,每发一条,停顿10秒,测试下来,最多丢失8条数据

Redis

redis2.9开始有传入密码的构造函数,使用连接器时需要替换掉自带的redis,然后引入2.9版本。

连接器带有的ClusterConfigContainerBuilder不支持密码的传入,所以要重写这两个方法,生产出带有密码的Container

实现后仍旧存在网络堵塞的状况,所以还是使用自定义的Sink,来解决问题

2、自定义Sink,使用java的API构造

注意两点:

1、Kafak、Redis构造的位置,注意序列化问题

2、Redis不同数据类型的构造

轮子地址:

https://github.com/lemon9610/Flink-JQ.git

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值