CDP中的Kafka概览+ 查看更多
CDP中的Kafka概览
+ 查看更多
发布日期:2020-12-25 14:58
Apache Kafka 是一个高性能、高可用性、冗余的流消息平台。
一、Kafka简介
Kafka 的功能很像发布/订阅消息系统,但具有更高的吞吐量、内置分区、复制和容错能力。对于大规模消息处理应用程序来说,Kafka 是一个很好的解决方案。它通常与 Apache Hadoop 和 Spark Streaming 一起使用。
您可能会将日志视为按时间排序的文件或数据表。随着时间的推移,较新的条目将从左到右追加到日志中。日志条目号可以方便地替换时间戳。
Kafka 将这种独特的抽象与传统的发布/订阅消息传递概念(例如生产者、消费者和经纪人),并行性和企业功能集成在一起,以提高性能和容错能力。
Kafka 最初的用例是跟踪网站上的用户行为。网站活动(页面浏览、搜索或用户可能执行的其他操作)被发布到中心主题,每种活动类型一个主题。
Kafka 可用于监视操作数据、聚合来自分布式应用程序的统计信息以生成集中的数据馈送。它还适用于日志聚合,具有低延迟和很方便支持多个数据源。
Kafka 提供以下内容:
- 具有 O(1)磁盘结构的持久消息传递,这意味着 Kafka 算法的执行时间与输入的大小无关。执行时间是恒定的,即使存储了数TB的消息也是如此。
- 高吞吐量,即使使用适度的硬件,也可以每秒支持数十万条消息。
- 明确支持通过 Kafka 服务器对消息进行分区。它在消耗器集群上分配消耗量,同时保持消息流的顺序。
- 支持将并行数据加载到 Hadoop。
二、Kafka架构
了解 Kafka 的架构及其与理想的发布-订阅系统的比较。
理想的发布-订阅系统很简单:发布者 A 的消息必须到达订阅者 A,发布者 B 的消息必须到达订阅者 B,依此类推。

理想的系统具有以下优点:
- 无限回溯。新的订户 A1 可以在任何时间点读取发布者 A 的流。
- 消息保留。没有消息丢失。
- 无限的存储空间。发布-订阅系统具有无限制的消息存储。
- 无停机时间。发布-订阅系统永远不会崩溃。
- 无限扩展。发布-订阅系统可以以恒定的消息传递延迟来处理任意数量的发布者和/或订阅者。
但是,Kafka 的体系结构偏离了此理想系统。一些主要区别是:
- 消息传递是在复制的分布式提交日志之上实现的。
- 客户端具有更多功能,因此,责任更大。
- 消息传递针对批处理而不是单个消息进行了优化。
- 消息即使被消耗也将保留;它们可以再次被使用。
这些设计决策的结果是:
- 极高的水平可扩展性
- 吞吐量极高
- 高可用性
- 不同的语义和消息传递保证
三、Kafka术语
当涉及到基本构建模块和关键概念时,Kafka 使用自己的术语。这些术语的用法可能与其他技术有所不同。以下提供了 Kafka 最重要概念的列表和定义:
- 代理(Broker):代理是一台服务器,用于存储发送到主题的消息并服务于消费者请求。
- 主题(topic):主题是由一个或多个生产者编写并由一个或多个消费者阅读的消息队列。
- 生产者(producer):生产者是将记录发送到 Kafka 主题的外部过程。
- 消费者(consumer):消费者是一个外部进程,它从 Kafka 集群接收主题流。
- 客户端(client):客户端是指生产者和消费者的术语。
- 记录(record):记录是发布-订阅消息。记录由键/值对和包含时间戳的元数据组成。
- 分区(Partition):Kafka 将记录分为多个分区。可以将分区视为某个主题的所有记录的子集。
分享到:
推荐精彩博文