Flink订阅Kafka消息队列实战案例

这篇具有很好参考价值的文章主要介绍了Flink订阅Kafka消息队列实战案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Kafka介绍

Kafka是一款开源的分布式消息系统,最初由LinkedIn公司开发并开源。它被设计用于处理海量的实时数据流,可以支持高吞吐量和低延迟的数据传输。

Kafka的设计主要目标是提供一个持久化的、高吞吐量的、可扩展的、分布式发布/订阅消息系统,以解决实时数据处理的需求。它基于发布/订阅模型,通过将消息发布到主题(Topic)并让订阅者订阅相关主题,实现了消息的生产者和消费者之间的解耦。

Kafka的架构和设计思想非常灵活,主要由以下几个核心组件组成:

Producer(生产者): 负责将消息发布到Kafka集群中的指定主题。

Consumer(消费者): 订阅并消费特定主题的消息。

Topic(主题): 消息的类别或者主题分类,消息被发布到特定的主题,消费者可以订阅感兴趣的主题。

Broker(代理): Kafka集群中的服务器节点,负责消息的存储和转发。

Partition(分区): 每个主题可以分为多个分区,每个分区都是有序且持久化的消息记录队列。

Producer API(生产者API)和Consumer API(消费者API): 提供了丰富的编程接口,方便开发者在应用程序中集成Kafka。

Kafka的特点包括:

高性能:Kafka可以支持每秒数十万条消息的高吞吐量处理。

可扩展性:Kafka的持久化消息存储和分区机制可以方便地进行水平扩展。

容错性:Kafka具备良好的容错机制,即使在某个节点故障的情况下,仍然可以保证消息的可靠传输。

消息保留:Kafka可以根据配置保留消息的时间或大小限制。

多语言支持:Kafka提供了多种编程语言的客户端,方便开发者使用不同语言来集成和使用Kafka。

Kafka广泛应用于各种领域,特别是大数据处理、实时流处理和日志收集等场景。

2、Flink介绍

Flink(Apache Flink)是一种开源的流处理和批处理框架,它提供了可靠、高性能、可伸缩的大数据处理能力。Flink最初由德国柏林工业大学(Berlin TU)的一个研究小组开发,并于2014年成为Apache软件基金会的顶级项目。

Flink的设计目标是实时流处理和批处理的无缝融合,它提供了统一的数据处理模型,使得开发人员可以方便地编写和运行具有低延迟和高吞吐量需求的大规模数据处理应用。

Flink的核心概念是流(Stream)和转换(Transformation)。应用程序通过定义数据流(DataStream)来描述输入数据和计算过程,并且可以应用各种转换操作(如过滤、转换、合并等)对数据流进行操作和处理。Flink提供了丰富的转换函数和算子,可以轻松地实现各种复杂的数据处理逻辑。

Flink具有以下特点:

低延迟和高吞吐量:Flink采用了基于内存的流式计算模型,能够实现毫秒级的实时响应。

Exactly-Once语义:Flink可以确保数据处理的精确一次性,即数据不会丢失也不会重复处理。

可容错性:Flink通过在集群中保存数据的一致性检查点(Checkpoint)来提供故障恢复和容错处理能力。

状态管理:Flink能够在处理过程中维护和管理状态,这对于处理窗口操作和流-流连接等场景非常重要。

可伸缩性:Flink可以方便地进行水平扩展,支持集群模式和分布式部署。

支持大规模数据处理:Flink可以处理海量数据,适用于大数据和实时流处理等场景。

Flink在实时流处理、批处理、连续查询、机器学习和图分析等领域得到了广泛应用。它提供了易于使用的API和丰富的生态系统,可以与主流的大数据存储和计算平台(如Hadoop、Kafka、Cassandra等)进行无缝集成,为用户提供了强大的数据处理能力和灵活性。文章来源地址https://www.toymoban.com/news/detail-614457.html

3、Flink订阅Kafka消息实战代码

import java.util.Properties

// 配置Kafka的属性
val properties: Properties = new Properties
// 设置服务
properties.setProperty("bootstrap.servers", "bigdata_server1:9092,bigdata_server2:9092,bigdata_server3:9092")
// 设置消费者组
properties.setProperty("group.id", "test_group")
// kafka反序列化消息是在消费端
properties.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
// 由于网络传输过来的是byte[],只有反序列化后才能得到生产者发送的真实的消息内容。
// 属性key.deserializer和value.deserializer就是key和value指定的反序列化方式
properties.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
// 指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下改如何处理。
properties.setProperty("auto.offset.reset", "latest")
import main.flink.com.bg.Config.Config
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode
import org.apache.flink.streaming.api.datastream.DataStream
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
import org.apache.flink.streaming.util.serialization.JSONKeyValueDeserializationSchema

val env: StreamExecutionEnvironment    // Flink执行环境
val topic : String                     // 话题

// 创建一个消费者,读取指定topic话题的消息
val consumer = new FlinkKafkaConsumer(
    topic,                                         // Kafka话题
    new JSONKeyValueDeserializationSchema(true),
    Config.getKafkaProperties()                   // Kafka配置,类型
)

// 将Kafka消费者添加到输入源
val stream = env.addSource(consumer)  // 返回DataStream[ObjectNode]类型
// 打印并执行消息
stream.print()
env.execute("flink kafka demo")

到了这里,关于Flink订阅Kafka消息队列实战案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化

    目标 : 实现FineBI访问MySQL结果数据集的配置 实施 安装FineBI 参考《FineBI Windows版本安装手册.docx》安装FineBI 配置连接 数据准备 小结 实现FineBI访问MySQL结果数据集的配置 目标 : 实现FineBI实时报表构建 路径 step1:实时报表构建 step2:实时报表配置 step3:实时刷新测试 实施 实

    2024年02月04日
    浏览(43)
  • 实战Flink Java api消费kafka实时数据落盘HDFS

    在Java api中,使用flink本地模式,消费kafka主题,并直接将数据存入hdfs中。 flink版本1.13 kafka版本0.8 hadoop版本3.1.4 为了完成 Flink 从 Kafka 消费数据并实时写入 HDFS 的需求,通常需要启动以下组件: 确保 Zookeeper 在运行,因为 Flink 的 Kafka Consumer 需要依赖 Zookeeper。 确保 Kafka Serve

    2024年01月24日
    浏览(51)
  • 【Flink实战系列】Hash collision on user-specified ID “Kafka Source”

    在使用 fromSource 构建 Kafka Source 的时候,遇到下面的报错,下面就走进源码,分析一下原因。

    2024年02月09日
    浏览(68)
  • Redis 消息队列和发布订阅

    采用redis 三种方案: ● 生产者消费者:一个消息只能有一个消费者 ● 发布者订阅者:一个消息可以被多个消费者收到 ● stream模式:实现队列和广播模式 Producer调用redis的lpush往特定key里放消息,Consumer调用brpop去不断监听key。 1、利用redis的链表,存储数据,实现队列模式

    2024年01月18日
    浏览(43)
  • 07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等

    7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户意向表 7.3.3.3 客户线索表 7

    2024年02月13日
    浏览(51)
  • 【深入浅出RocketMQ原理及实战】「消息队列架构分析」帮你梳理RocketMQ或Kafka的选择理由以及二者PK

    前提背景 大家都知道,市面上有许多开源的MQ,例如,RocketMQ、Kafka、RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知道二者之间的特点以及区别,但是在实际场景中,二者的选取有可能会范迷惑,那么今天笔者就带领大家分析一下

    2024年02月19日
    浏览(57)
  • Redis的发布订阅模式:实现消息队列和实时数据推送的利器

    当涉及到实时数据推送和消息队列时,Redis的发布订阅模式是一种非常有用的工具。Redis是一个开源的内存数据库,被广泛用于缓存、队列和实时数据处理等方面。 在本博客中,我们将重点介绍Redis的发布订阅模式,并且提供一些示例代码来帮助读者更好地理解这个模式以及如

    2024年02月12日
    浏览(92)
  • 【新星计划】Kafka分布式发布订阅消息系统

      目录 Kafka分布式发布订阅消息系统 1. 概述 1.1 点对点消息传递模式 1.2 发布-订阅消息传递模式 1.3 Kafka特点 1.4 kafka拓扑图 2. Kafka工作原理 2.1 Kafka核心组件介绍 2.2 Kafka工作流程分析 2.2.1 生产者生产消息过程 2.2.2 消费者消费消息过程 2.2.3 Kafka Topics 2.2.4 Kafka Partition 2.2.4 Kafka

    2024年02月08日
    浏览(46)
  • 【Spring Boot】集成Kafka实现消息发送和订阅

    最近忙着搞低代码开发,好久没新建spring项目了,结果今天心血来潮准备建个springboot项目 注意Type选Maven,java选8,其他默认 点下一步后完成就新建了一个spring boot项目,配置下Maven环境,主要是settings.xml文件,里面要包含阿里云仓库,不然可能依赖下载不下来 在maven配置没问

    2024年02月09日
    浏览(49)
  • Spring Boot进阶(62):Redis魔法:用发布订阅功能打造高效消息队列!

            话说,玩过MQ的同学可能都知道【发布订阅】模式,不就是一种消息传递方式嘛;如果没玩过,那也不打紧,下文我会简单做个科普。但是对于Redis如何实现MQ的【发布订阅】功能?这才是问题的关键,有的同学就说“压根没玩过呀!不造” ,哈哈,bug菌既然敢写便有

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包