kafka分析与单机使用记录是怎样的

70次阅读
没有评论

共计 3854 个字符,预计需要花费 10 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关 kafka 分析与单机使用记录是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1. 使用的系统环境

root@heidsoft:~# uname -a

Linux heidsoft 4.4.0-63-generic #84-Ubuntu SMP Wed Feb 1 17:20:32 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

2.JDK 环境

root@heidsoft:~# java -version

java version 1.8.0_131

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

3. 软件版本环境

4. 配置文件环境

kafka : server.properties 默认配置

zookeeper : zoo.cfg   默认配置

5. 启动应用

zookeeper: sh zkServer.sh start

kafka: bin/kafka-server-start.sh config/server.properties

6.kafka 测试

生产者测试 – 发送消息

echo Hello, World | bin/kafka-console-producer.sh –broker-list localhost:9092 –topic TutorialTopic /dev/null

消费者测试 – 接收消息

bin/kafka-console-consumer.sh –new-consumer –topic TutorialTopic –from-beginning  –bootstrap-server localhost:9092

7.ShowDemo

8. 概念认识

Broker
Kafka 集群包含一个或多个服务器,这种服务器被称为 broker

Topic
每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为 Topic。(物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个 broker 上但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)

Partition
Parition 是物理上的概念,每个 Topic 包含一个或多个 Partition.

Producer
负责发布消息到 Kafka broker

Consumer
消息消费者,向 Kafka broker 读取消息的客户端。

Consumer Group
每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)。

9. 框架认识

Kafka 是分布式发布 - 订阅消息系统。它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分。Kafka 是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。

在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了已在同时搞定在线应用(消息)和离线应用(数据文件,日志)Kafka 就出现了。Kafka 可以起到两个作用:

降低系统组网复杂度。

降低编程复杂度,各个子系统不在是相互协商接口,各个子系统类似插口插在插座上,Kafka 承担高速数据总线的作用。

10. 框架特点

同时为发布和订阅提供高吞吐量。据了解,Kafka 每秒可以生产约 25 万消息(50 MB),每秒处理 55 万消息(110 MB)。

可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如 ETL,以及实时应用程序。通过将数据持久化到硬盘以及 replication 防止数据丢失。

分布式系统,易于向外扩展。所有的 producer、broker 和 consumer 都会有多个,均为分布式的。无需停机即可扩展机器。

消息被处理的状态是在 consumer 端维护,而不是由 server 端维护。当失败时能自动平衡。

支持 online 和 offline 的场景。

12.Kafka 拓扑结构

如上图所示,一个典型的 Kafka 集群中包含若干 Producer(可以是 web 前端产生的 Page View,或者是服务器日志,系统 CPU、Memory 等),若干 broker(Kafka 支持水平扩展,一般 broker 数量越多,集群吞吐率越高),若干 Consumer Group,以及一个 Zookeeper 集群。Kafka 通过 Zookeeper 管理集群配置,选举 leader,以及在 Consumer Group 发生变化时进行 rebalance。Producer 使用 push 模式将消息发布到 broker,Consumer 使用 pull 模式从 broker 订阅并消费消息。

13.Kafka 的设计

1、吞吐量

高吞吐是 kafka 需要实现的核心目标之一,为此 kafka 做了以下一些设计:

数据磁盘持久化:消息不在内存中 cache,直接写入到磁盘,充分利用磁盘的顺序读写性能

zero-copy:减少 IO 操作步骤

数据批量发送

数据压缩

Topic 划分为多个 partition,提高 parallelism

负载均衡

producer 根据用户指定的算法,将消息发送到指定的 partition

存在多个 partiiton,每个 partition 有自己的 replica,每个 replica 分布在不同的 Broker 节点上

多个 partition 需要选取出 lead partition,lead partition 负责读写,并由 zookeeper 负责 fail over

通过 zookeeper 管理 broker 与 consumer 的动态加入与离开

拉取系统

由于 kafka broker 会持久化数据,broker 没有内存压力,因此,consumer 非常适合采取 pull 的方式消费数据,具有以下几点好处:

简化 kafka 设计

consumer 根据消费能力自主控制消息拉取速度

consumer 根据自身情况自主选择消费模式,例如批量,重复消费,从尾端开始消费等

可扩展性

当需要增加 broker 结点时,新增的 broker 会向 zookeeper 注册,而 producer 及 consumer 会根据注册在 zookeeper 上的 watcher 感知这些变化,并及时作出调整。

Kafka 的应用场景

1. 消息队列

比起大多数的消息系统来说,Kafka 有更好的吞吐量,内置的分区,冗余及容错性,这让 Kafka 成为了一个很好的大规模消息处理应用的解决方案。消息系统一般吞吐量相对较低,但是需要更小的端到端延时,并尝尝依赖于 Kafka 提供的强大的持久性保障。在这个领域,Kafka 足以媲美传统消息系统,如 ActiveMR 或 RabbitMQ。

2. 行为跟踪

Kafka 的另一个应用场景是跟踪用户浏览页面、搜索及其他行为,以发布 - 订阅的模式实时记录到对应的 topic 里。那么这些结果被订阅者拿到后,就可以做进一步的实时处理,或实时监控,或放到 Hadoop/ 离线数据仓库里处理。

3. 元信息监控

作为操作记录的监控模块来使用,即汇集记录一些操作信息,可以理解为运维性质的数据监控吧。

4. 日志收集

日志收集方面,其实开源产品有很多,包括 Scribe、Apache Flume。很多人使用 Kafka 代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或 HDFS)进行处理。然而 Kafka 忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让 Kafka 处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如 Scribe 或者 Flume 来说,Kafka 提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。

5. 流处理

这个场景可能比较多,也很好理解。保存收集流数据,以提供之后对接的 Storm 或其他流式计算框架进行处理。很多用户会将那些从原始 topic 来的数据进行阶段性处理,汇总,扩充或者以其他的方式转换到新的 topic 下再继续后面的处理。例如一个文章推荐的处理流程,可能是先从 RSS 数据源中抓取文章的内容,然后将其丢入一个叫做“文章”的 topic 中;后续操作可能是需要对这个内容进行清理,比如回复正常数据或者删除重复数据,最后再将内容匹配的结果返还给用户。这就在一个独立的 topic 之外,产生了一系列的实时数据处理的流程。Strom 和 Samza 是非常著名的实现这种类型数据转换的框架。

6. 事件源

事件源是一种应用程序设计的方式,该方式的状态转移被记录为按时间顺序排序的记录序列。Kafka 可以存储大量的日志数据,这使得它成为一个对这种方式的应用来说绝佳的后台。比如动态汇总(News feed)。

7. 持久性日志(commit log)

Kafka 可以为一种外部的持久性日志的分布式系统提供服务。这种日志可以在节点间备份数据,并为故障节点数据回复提供一种重新同步的机制。Kafka 中日志压缩功能为这种用法提供了条件。在这种用法中,Kafka 类似于 Apache BookKeeper 项目。

上述就是丸趣 TV 小编为大家分享的 kafka 分析与单机使用记录是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3854字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)