KAFKA 1.0 文档(一):快速入门

1.1、简介

ApacheKafka®是一个分布式流媒体平台。 这到底是什么意思呢?
- 它可以让你发布和订阅消息流。 在这方面,它类似于消息队列或企业消息传递系统。
- 它允许您以容错方式存储消息流。
- 它可以让你处理产生的流式消息。

Kafka的优势在哪里?
- 在系统或应用程序之间构建可靠的实时数据流管道
- 构建实时流应用程序,可以转换或响应数据流

要理解kafka必须要了解一下概念:
- Kafka在一个或多个服务器上的集群运行。
- Kafka集群以叫做主题(topic)的类别存储记录流。
- 每个记录(消息)由一个键,一个值和一个时间戳组成。

Kafka有四个核心API:
1. Producer API允许应用程序将一组记录发布到一个或多个Kafka主题。
2. Consumer API允许应用程序订阅一个或多个主题并处理产生给他们的消息流。
3. Streams API允许应用程序充当流处理器,从一个或多个主题中消费输入流,并将输出流生成为一个或多个输出主题,从而将输入流有效地转换为输出流。
4. Connector API允许构建和运行可重复使用的生产者或消费者,将Kafka主题连接到现有的应用程序或数据系统。 例如,连接到关系数据库的连接器可能会捕获对表的每个更改。

kafka-apis.png
在Kafka中,客户端和服务器之间的通信是通过一个简单的,高性能的,与编程语言无关的TCP协议完成的。 这个协议是版本化的,并保持与旧版本的向后兼容性。 我们为Kafka提供了一个Java客户端,但客户端可以使用多种语言。

主题和日志

让我们先深入kafka为消息流提供的一个核心抽象- 主题(topic)。
Topic是消息发布到哪一个类别或者提要的名称。Kafka的主题可以是多订阅模式的,也就是说一个主题可以有0个、1个或者多个消费者去消费写入该主题的数据。

对于每个主题,Kafka集群维护一个分区日志,如下所示:
image.png
每个分区是一个有序的,不可变的消息序列,不断追加到结构化的提交日志(文件)中。 分区中的每个消息分配一个连续的id号,称为偏移量(offset),用于唯一标识分区内的每条消息。
Kafka集群使用可配置的保留期限来保留所有已发布的消息(无论是否已被使用)。 例如,如果保留策略设置为两天,则在消息发布后的两天内,消息可以可供使用,之后将被丢弃以腾出空间。Kafka性能对数据大小不敏感,所以长时间存储数据不成问题。
image.png
实际上,以消费者为单位保留的唯一元数据是消费者在日志中的偏移或位置。这个偏移量是由消费者控制的:消费者通常会在读取记录时线性地推进其偏移量,但事实上,由于消费者的位置是由消费者控制的,所以它可以以任何喜欢的顺序消费记录。例如,消费者可以重置为较早的偏移量以重新处理过去的数据,或者跳至最近的记录并从“现在”开始消费。

这些功能的组合意味着Kafka的消费者非常轻便 - 他们可以来来去去,对集群或其他消费者没有太大的影响。例如,您可以使用我们的命令行工具来“tail”任何主题的内容,而不会更改任何现有消费者使用的内容。

日志中的分区有几个用途。 首先,它们允许日志的大小超出适合单个服务器的存储限制。 每个单独的分区必须适合存放它的服务器,但是一个主题可能有许多分区,因此它可以处理任意数量的数据。 其次,更重要的是,它们是作为并行处理的单位。

分布式

日志的所有有分区被分发到集群中的服务器上,每个服务器处理全部分区中的部分分区数据和请求。为了容错,每个分区都被复制到一定数量(可配置)的不同服务器上。

每个分区(有多个副本)都有一台服务器作为“leader”,大于等于0台服务器做为”followers”。”leader”服务器处理分区的所有读写操作。”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值