暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

Kafka简介

原创 简单 2022-09-16
932

image.png
Apache Kafka是一个基于分布式流处理的软件平台。它是一个发布订阅的消息系统,使得应用,服务器,处理器可以交换数据。Kafka最初由Linkedin开发,随后捐赠给Apache软件基金会。Apache Kafka解决了发送方和接收方之间数据通信的问题。

kafka架构

架构包含了 —

主题

它是表示相似类型数据的通用名字或标题。在Apache Kafka中,一个集群中可以有多个主题。每个主题指定不同类型的消息。
image.png

分区

数据或消息被划分为更小的部分,称为分区。每个分区中数据都有一个偏移量(offset)。数据以顺序方式写入。我们可以有无限多的分区,有无限多的偏移量。然而,我们不能保证信息将被写入哪个分区。

副本

Apache Kafka是大数据领域的分布式软件系统。因此数据有很多份拷贝。在Kafka中,每一个Broker包含一系列数据,但是如果Broker或机器宕机了呢?数据就会丢失。为防患于未然,Apache Kafka启用了复制的特性,以避免数据的丢失,即使在Broker故障的情况下。要做到这一点,需要为Broker中的主题设置副本因子(replication factor)。

生产者

它们是使用生产者的API向集群内的主题写入/发布数据的应用程序。生产者可以在主题或主题内指定分区上写入数据。

消费者

它们是使用消费API从集群内的主题中读取/消费数据的应用程序。消费者可以读取主题的或主题内指定分区的数据。

Broker

Broker是维护和管理已发布的消息的软件进程。Broker管理消费者的偏移量,并负责将消息传递给正确的消费者。

Zookeeper

zookeeper用于监控Kafka集群并协调每个Broker。它以键值对的形式保存所有与Kafka集群相关的元数据信息。

Kafka如何工作的?

Kafka是一个分布式系统,由服务器和客户端组成,通过高性能的TCP网络协议进行通信,并部署在任何虚拟机和云环境中。

服务器

Kafka以一个或多个服务器集群的形式运行,可以跨越多个数据中心或云区域。其中一些服务器形成了存储层,称为Broker。其他的服务器运行Kafka Connect,不断地导入和导出数据到流事件。

客户端

它们允许编写分布式应用和微服务,这些应用和微服务可以并行地、大规模地读取、写入和处理事件流,即使在网络问题或机器故障的情况下也能以容错的方式进行。

Kafka特性

image.png

伸缩性

Apache Kafka可以扩展数据生产者、数据Broker和数据消费者。无论你是由几个数据生产者创建很大的数据集,然后发送给许多消费者组,还是以其他方式,Kafka都能满足你的需求。

扩展性

Kafka在过去几年非常流行,也促进了大量应用程序开发与Kafka的集成。 这使得新功能的添加变得很容易,比如说以插件集成到应用程序中。

容错

Kafka Streams建立在Kafka内部原生集成的容错能力上。Kafka分区是高度可用和复制的,所以当流数据被持久化到Kafka时,即使应用程序失败并需要重新处理,它也是可用的。Kafka Stream中的任务利用了Kafka消费者客户端提供的容错能力来处理故障。如果一个任务运行在一台有故障的机器上,Kafka Streams会自动在应用程序的一个剩余运行实例中重新启动该任务。

减少了对多种整合的需求

生产者生产的所有数据都要经过Kafka。因此,我们只需要创建一个Kafka的集成,就可以自动将每个生产者和消费进行集成。

分布式系统

Apache Kafka是个分布式架构,具有可扩展性。分区和复制是分布式系统下的两种能力。

实时处理

Kafka近乎实时地监控所有的数据通信,以实现访问控制,检测异常,并提供安全通信。这种架构能够与没有连接的遗留系统整合,以收集传感器数据,但也确保外部系统不能访问不安全的机器。

Kafka使用场景

image.png

消息

Kafka有更强的吞吐量,内置分区、复制和容错功能,这使它成为处理大规模消息应用的解决方案。

网站活动追踪

Kafka最初的使用场景是重建用户活动追踪管道,作为实时发布-订阅的消息流。

度量

Kafka用于运维监控数据。这涉及到从分布式应用中聚合统计数据,以产生集中的运维数据。

日志聚合

许多人使用Kafka作为日志聚合解决方案的替代品。日志聚合通常收集服务器上的物理日志文件,并将它们放在一个中心位置(也许是文件服务器或HDFS)进行处理。Kafka抽象了文件的细节,并给日志或事件数据的消息流创建了一个更简洁的抽象。

流式处理

许多使用Kafka的用户在多个阶段组成的管道中处理数据,原始输入数据在Kafka主题中被消耗,丰富组合或转化后发给新的主题。

事件溯源

事件溯源是一种应用程序的设计风格,将状态变化记录成一个时间序列记录。Kafka支持日志数据的海量存储,这使得它成为该风格应用程序后端的出色选择。

Apache Kafka应用

Linkedin

2010年,LinkedIn开发了Apache Kafka。由于Kafka是一个发布-订阅的消息系统,因此在LinkedIn的各种产品,如LinkedIn Today和LinkedIn Newsfeed都使用它来消费消息。

Uber

Uber使用Kafka作为消息总线来连接生态系统的不同部分。Kafka帮助乘客和司机满足彼此的匹配。它从乘客的应用程序以及司机的应用程序中收集信息,然后将这些信息提供给各种下游的消费者。

Twitter

由于Kafka满足了数据复制和持久性的需求,Twitter已经成为Apache Kafka的最佳应用/用户之一。采用Kafka使Twitter节省了高达75%的大量资源,很好地降低了成本。

Netflix

Netflix在Keystone Pipeline下使用Kafka。Keystone是一个统一的收集、事件发布和路由基础设施,用于流处理和批处理。

结论

Kafka支持低延迟的消息传递,并在机器出现故障时提供容错保证。它可以处理大量不同的消费者。Kafka的速度非常快,可以达到200万次/秒的写入速度。

原文标题:Introduction to Kafka
原文作者:Mohd Uzair
原文地址:https://blog.knoldus.com/introduction-to-kafka/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论