flink 卡夫卡_卡夫卡简介

2023-10-13 13:40
文章标签 简介 flink 卡夫卡

本文主要是介绍flink 卡夫卡_卡夫卡简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

flink 卡夫卡

在IT世界中,Apache Kafka(以下简称Kafka)是当前最受欢迎的分布式消息传递或流数据平台。 任何可以处理任何类型的数据(日志,事件等)并且需要传输数据的应用程序,都可能会在其组件之间移动时进行转换,而这些应用程序都可以从Kafka中受益。 Kafka最初是LinkedIn上的一个项目,后来开源以促进其应用。 在过去的几年中,它一直作为一个开源项目继续发展,并且已经成熟了很多。 IT中的一些知名人士在其生产环境中使用它。

卡夫卡的一些基本组成部分是:

  • 代理:存储到Kafka的数据存储在Kafka代理中。 经纪人负责在数据到达时接收和存储数据。 代理还应要求提供数据。 许多卡夫卡经纪人可以共同努力,形成一个卡夫卡集群。 Kafka使用Apache ZooKeeper来存储有关集群的元数据。 代理使用此元数据来检测故障(例如,代理故障)并从中恢复。
  • 生产者:生产者是将数据发送到代理的实体。 有不同类型的生产者。 Kafka带有自己的用Java编写的生产器,但是还有许多其他的Kafka客户端库支持C / C ++,Go,Python,REST等。
  • 使用者:使用者是向经纪人请求数据的实体。 与生产者类似,除了内置Java使用者以外,还有其他开源使用者,这些使用者对非Java API感兴趣。

Kafka将数据存储在主题中。 生产者将数据发送到特定的Kafka主题,而消费者也从特定主题读取数据。 每个主题都有一个或多个分区。 发送给主题的数据最终存储在一个分区中,并且只有一个分区中。 每个分区由一个代理托管,并且不能在多个代理之间扩展。

Kafka在业界持续流行和采用的原因有很多:

  • 可扩展性: Kafka的两个重要功能为其可扩展性做出了贡献。
    • Kafka群集在运行时可以轻松扩展或收缩(可以添加或删除代理),而不会发生中断。
    • Kafka主题可以扩展为包含更多分区。 由于分区不能跨多个代理扩展,因此其容量受代理磁盘空间限制。 能够增加分区数量和代理数量,意味着单个主题可以存储多少数据没有限制。
  • 容错和可靠性: Kafka的设计方式是可以使群集中的其他代理检测到代理故障。 因为每个主题都可以在多个代理上复制,所以群集可以从此类故障中恢复并继续工作,而不会中断任何服务。
  • 吞吐量:经纪人可以高效,超快地存储和检索数据。

图1显示了一个简单的Kafka集群,其中包含四个代理。 三个主题t1,t2和t3存储在此群集中。 t1有一个分区,被复制了3次,t2和t3每个都有两个分区,被复制了2次。 从此图像可以清楚地看出,该群集可以在不丢失任何数据的情况下经受一次代理故障。 仅当经纪人1和4或经纪人3和4是失败对时,它才能在无损双经纪人失败中幸免。 任何其他故障对意味着某些数据将丢失。

图1.一个简单的Kafka集群
一个简单的卡夫卡集群

该群集可以使用多种生产者和使用者配置。 例如:

  • 客户1可以制作主题1(充当制作人)
  • 客户2可以针对主题2进行制作(充当制作人)
  • 客户端3可以阅读主题1和2,并写入主题3(既充当消费者又充当生产者)
  • 客户端4可以阅读主题3

在某些用例中,我们可以将实时和连续的数据流纳入其中的某些主题。 例如,主题1包含工厂中各种传感器的温度读数,而主题2包含有关这些传感器的详细信息。 然后,在上述配置中的客户端3将连续接收温度读数,将其与最新的传感器规格进行交叉检查,检测异常并在主题3中进行报告。在这种情况下,客户端3是一个简单的流应用程序,可从其中读取数据或更多Kafka主题,执行一些处理,并将输出实时写入另一个Kafka主题。

实时分析来自IoT设备或网站上用户操作的数据是Kafka Streams可以轻松处理的几个基本示例。 本文末尾引用的Kafka Streams文档中列出了一些其他用例。

由于上述功能,Kafka是流数据和ETL方案的流行选择。 实际上,Kafka Streams API是Kafka的一部分,有助于编写处理运动数据的流应用程序。 可以说,Kafka成为了批处理消息传递平台,现在已经成为最受欢迎的流处理平台。 Kafka Streams甚至还增加了另一个名为KSQL的开源项目,该项目大大简化了使用类似SQL的声明编写Kafka Streams应用程序的过程。

Kafka和Kafka Streams提供的功能远远超出本篇简短文章中所述。 以下参考资料更详细地描述了Kafka和Kafka流,并提供了编码示例。 强烈建议对希望更好地了解Kafka和Kafka Streams内部以及如何在实践中使用它们的任何人。


翻译自: https://www.ibm.com/developerworks/opensource/library/ba-kafka-intro/index.html

flink 卡夫卡

这篇关于flink 卡夫卡_卡夫卡简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203627

相关文章

Java Docx4j类库简介及使用示例详解

《JavaDocx4j类库简介及使用示例详解》Docx4j是一个强大而灵活的Java库,非常适合需要自动化生成、处理、转换MicrosoftOffice文档的服务器端或后端应用,本文给大家介绍Jav... 目录1.简介2.安装与依赖3.基础用法示例3.1 创建一个新 DOCX 并添加内容3.2 读取一个已存

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

SpringBoot整合Apache Flink的详细指南

《SpringBoot整合ApacheFlink的详细指南》这篇文章主要为大家详细介绍了SpringBoot整合ApacheFlink的详细过程,涵盖环境准备,依赖配置,代码实现及运行步骤,感兴趣的... 目录1. 背景与目标2. 环境准备2.1 开发工具2.2 技术版本3. 创建 Spring Boot

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添