阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下安装并(单节点)配置启动Kafka

425次阅读
没有评论

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

Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。也可以把它当作是分布式提交日志的发布 - 订阅消息,事实上 Kafka 官网上也是这么说明的。

关于 Kafk 你必须知道的几个关键术语

topics:Kafka 接收的各种各样的消息

producers:发送消息到 Kafka

consumers:从 Kafka 接收消息的订阅者

broker:一个或多个服务器组成的 Kakfa 集群

下图是一个生产者通过 kafka 集群发送给消费者的示例

Linux 下安装并(单节点)配置启动 Kafka

Linux 下安装并(单节点)配置启动 Kafka

Topics 和 Logs

一个 Topic 就是将发布的消息归类的过程,对于每一个 topic,Kafka 集群都会维护一个分区日志,如下图

Linux 下安装并(单节点)配置启动 Kafka

Linux 下安装并(单节点)配置启动 Kafka

每个分区都是有编号的,而且每个分区的消息也会根据提交的日志进行编号。分区中的消息会被分配一个唯一的编号,这个术语叫做 offset,用以识别分区中的消息。

Kafka 集群会保存所有的发布消息,无论这些消息在固定的时间内是否被消费者所消费。比如,消息日志设置的保存期间是 2 天,在消息发布的 2 天内,消费者可以消费,然后丢弃该条消息来释放空间。Kafka 的性能跟数据空间无关,因此保存大量数据对于 Kafka 来说不是问题。

实际上,在日志中保存每个消费者位置的元数据才是“offset”。offset 是由消费者控制的:一般来说,当消费者一行行读取消息时,offset 才起作用。但实际上,消费者可以以任意他们想要的方式读取消息,因为消费者可以重置已存在的 offset。

这种机制表明 Kafka 消费者是非常容易处理的 - 消息的处理对于集群或其它消费者来说几乎没有什么影响。比如,我们可以在命令行工具中使用“tail”topic 来处理消息而不用改变已经存在的消费者。

日志分区有几种不同的目的。首先,能够避免一台服务器上的日志文件过大。每个独立的分区肯定位于同一台服务器上,并且在同一台服务器上处理,但是一个 topic 可能有多个分区,这样能够保证处理大量的数据。其次, 分区可以作为并行处理的单元。

分布式

日志分布在 Kafka 集群中的不同分区上,每个服务器处理数据并请求共享分区。每个分区都是可以通过配置服务器的容错机制进行复制的。

每个分区都有一个服务器作为“leader(主节点)”,有 0 个或多个服务器作为“followers(从节点)”,主节点可以从分区中读写数据,但是从节点只能复制主节点的消息。如果主节点宕机,其中的一个从服务器会自动成为新的主服务器。主服务器处理一些分区的数据,从服务器处理其它服务器的数据,这样保存集群的平衡。

生产者(Producers)

生产者可以决定将消息发送到哪些 topic,而且生产者可以选择将 topic 内的消息发送到哪个分区。这种简单的循环负载均衡方式能够在语义分区时完成。这种分区通常在 1 秒内完成。

消费者(Consumers)

传统的消息队列有两种处理方式:顺序处理和发布 / 订阅处理。在顺序处理方式时,消费者是按照消息进入消息队列的顺序进行读取的。发布 / 订阅方式则是将消息广播给所有的消费者。Kafka 提供了一种抽象的方式 - 消费者分组(consumer group)来满足消息的以上两种处理方式。

每个消费者都有一个组名,只有订阅的消费者在对应的组中时,发布到 topic 中的消息才会传递给消费者对象。消费者对象可以在不同的进程或主机中存在。

如果所有的消费者对象的组名都相同,这就好比是传统的顺序队列,消费者平均分配这些消息。

如果所有的消费者对象的组名都不相同,这就好比是发布 / 订阅模式,消费者只接受订阅的消息。

通常来说,订阅某一主题(topic)的消费者在同一组的有多个,这是为了系统的稳定和容错。下图是一个具体的示例。

Linux 下安装并(单节点)配置启动 Kafka

Linux 下安装并(单节点)配置启动 Kafka

Kafka 比传统的消息队列拥有更高的排序可靠性。

传统的消息队列在顺序保存消息到服务器时,如果有多个消费者从队列中读取消息,服务器会顺序发送消息。但是,尽管服务器是顺序发送消息的,但是消费者是异步接收消息的,因此消费者接收到的消息可能并不是顺序的,但消费者并不知道消息是乱序的。为避免这种情况,传统的消息队列通常只允许一个进程读取消息,这也就意味着消息的处理是单向的,而不是并行的。

Kafka 在这方面有更好的处理方式,它通过在主题中使用分区完成了并行处理。Kafka 既保证了顺序输出又实现了消费者之间的平衡。通过给主题分配分区,将消息分给同组内的消费者,确保每一分区内的消费者是唯一的,并且是顺序读取消息。由于是通过分区来实现多个消费者对象的负载均衡,所以同一消费者组的消费者是不能超过分区的。

Kafka 仅仅实现了消息在一个分区内的排序,而不是同一主题不同分区内的排序。对于大多数应用而言,数据分区和分区内数据排序就足够了。如果你想要所有的消息都是顺序排列的,那就只能有一个分区,这意味着只能有一个消费者在一个消费者组内。这种情况下,消息的处理就不是并行的。

可靠性

消息会以生产者发送的顺序追加到主题的分区。例如,一个生产者发送同一个消息两次分别称为 M1,M2,M1 先发,那么 M1 将会有一个更小的偏移量,并且也会比 M2 早出现在日志中。

消费者以存储在日志中的顺序看见消息。

对于复制 N 倍的主题,即便 N - 1 台服务器出错,都不会使已经提交到日志的消息丢失

使用场景

消息代理

Kafka 可以替代一些传统的消息代理。消息代理有很多使用场景,比如与数据处理程序解耦,缓存未处理的消息等等。和大多数消息处理系统相比,Kafka 有更好的吞吐量,内建的分区,复制和容错能力,这使得 Kafka 能够很好的处理大规模消息应用。

活动追踪

Kafka 最初用来提供实时追踪网站用户行为的相关数据的能力,例如统计 PV,UV 等。

监控统计

Kafka 经常被用来操作监控数据,比如从分布式的应用中汇总统计数据。

日志收集

我们的服务通常部署在多台计算机上,服务器的运行日志也会分散打在各个机器上。Kafka 通常被用来从各个服务器上收集日志,然后统一打到 HDFS 或者其他离线存储系统,比如 Facebook 的 Scribe 在收集日志时就是用了 Kafka。

流处理

很多用户完成原始数据的阶段性汇总,加工等处理后,将操作结果转换为新的 topic 写入 Kafka 来进行更深入的处理。比如,文章推荐程序完首先是用爬虫从 RSS 中爬取用户订阅的文本内容,然后把这些内容发布到 articles topic 下。接下来的处理程序,将 articles topic 下的内容格式化后,发布到 format topic 下。最终的处理程序尝试将这些格式化的内容推荐给合适的用户。Storm 和 Samze 是处理这种业务的流行框架。

事件采集

业务状态的变化被按照时间顺序记录下来,这种程序设计方式被成为事件采集。Kafka 支持大规模的日志数据存储,这使得 Kafka 成为事件采集程序理想的后端模块。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2016-04/130018p2.htm

相关阅读

分布式发布订阅消息系统 Kafka 架构设计 http://www.linuxidc.com/Linux/2013-11/92751.htm

Apache Kafka 代码实例 http://www.linuxidc.com/Linux/2013-11/92754.htm

Apache Kafka 教程笔记 http://www.linuxidc.com/Linux/2014-01/94682.htm

Apache kafka 原理与特性 (0.8V)  http://www.linuxidc.com/Linux/2014-09/107388.htm

Kafka 部署与代码实例  http://www.linuxidc.com/Linux/2014-09/107387.htm

Kafka 介绍和集群环境搭建  http://www.linuxidc.com/Linux/2014-09/107382.htm

1. 从 Kafka 官网下载最新的 Kafka,目前最新版本为 0.9.0.1

2. 下载完毕后,上传到 Linux 服务器,并解压
tar -xzf kafka_2.11-0.9.0.1.tgz

3. 修改 Zookeeper 服务器配置,并启动
cd kafka_2.11-0.9.0.1
vi config/zookeeper.properties 
 
# 修改 ZooKeeper 的数据目录
dataDir=/opt/favccxx/db/zookeeper
 
# 配置 host.name 和 advertised.host.name 为 IP 地址,防止通过 Java 客户端连接时解析为 localhost
host.name=10.0.10.6
 
 
advertised.host.name=10.0.10.6
 
# 启动 Zookeeper 服务器
./zookeeper-server-start.sh /opt/favccxx/kafka_2.11-0.9.0.1/config/zookeeper.properties

4. 修改 Kafka 配置,并启动 Kafka 服务器
vi config/server.properties 
 
log.dirs=/opt/favccxx/kafka/kafka-logs
 
# 启动 Kafka 服务器
./kafka-server-start.sh /opt/favccxx/kafka_2.11-0.9.0.1/config/server.properties

5. 创建并查看 Topic
cd /opt/favccxx/kafka_2.11-0.9.0.1/bin/
./kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test
Created topic “test”.
 
# 查看刚才的 topic
./kafka-topics.sh –list –zookeeper localhost:2181
test

6. 使用生产者发送消息,每行是一条独立的消息
./kafka-console-producer.sh –broker-list localhost:9092 –topic test
This is a message
This is My mesage

7. 使用消费者接收消息
./kafka-console-consumer.sh –zookeeper localhost:2181 –topic test –from-beginning
This is a message
This is My me

Kafka 的详细介绍 :请点这里
Kafka 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-04/130018.htm

Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。也可以把它当作是分布式提交日志的发布 - 订阅消息,事实上 Kafka 官网上也是这么说明的。

关于 Kafk 你必须知道的几个关键术语

topics:Kafka 接收的各种各样的消息

producers:发送消息到 Kafka

consumers:从 Kafka 接收消息的订阅者

broker:一个或多个服务器组成的 Kakfa 集群

下图是一个生产者通过 kafka 集群发送给消费者的示例

Linux 下安装并(单节点)配置启动 Kafka

Linux 下安装并(单节点)配置启动 Kafka

Topics 和 Logs

一个 Topic 就是将发布的消息归类的过程,对于每一个 topic,Kafka 集群都会维护一个分区日志,如下图

Linux 下安装并(单节点)配置启动 Kafka

Linux 下安装并(单节点)配置启动 Kafka

每个分区都是有编号的,而且每个分区的消息也会根据提交的日志进行编号。分区中的消息会被分配一个唯一的编号,这个术语叫做 offset,用以识别分区中的消息。

Kafka 集群会保存所有的发布消息,无论这些消息在固定的时间内是否被消费者所消费。比如,消息日志设置的保存期间是 2 天,在消息发布的 2 天内,消费者可以消费,然后丢弃该条消息来释放空间。Kafka 的性能跟数据空间无关,因此保存大量数据对于 Kafka 来说不是问题。

实际上,在日志中保存每个消费者位置的元数据才是“offset”。offset 是由消费者控制的:一般来说,当消费者一行行读取消息时,offset 才起作用。但实际上,消费者可以以任意他们想要的方式读取消息,因为消费者可以重置已存在的 offset。

这种机制表明 Kafka 消费者是非常容易处理的 - 消息的处理对于集群或其它消费者来说几乎没有什么影响。比如,我们可以在命令行工具中使用“tail”topic 来处理消息而不用改变已经存在的消费者。

日志分区有几种不同的目的。首先,能够避免一台服务器上的日志文件过大。每个独立的分区肯定位于同一台服务器上,并且在同一台服务器上处理,但是一个 topic 可能有多个分区,这样能够保证处理大量的数据。其次, 分区可以作为并行处理的单元。

分布式

日志分布在 Kafka 集群中的不同分区上,每个服务器处理数据并请求共享分区。每个分区都是可以通过配置服务器的容错机制进行复制的。

每个分区都有一个服务器作为“leader(主节点)”,有 0 个或多个服务器作为“followers(从节点)”,主节点可以从分区中读写数据,但是从节点只能复制主节点的消息。如果主节点宕机,其中的一个从服务器会自动成为新的主服务器。主服务器处理一些分区的数据,从服务器处理其它服务器的数据,这样保存集群的平衡。

生产者(Producers)

生产者可以决定将消息发送到哪些 topic,而且生产者可以选择将 topic 内的消息发送到哪个分区。这种简单的循环负载均衡方式能够在语义分区时完成。这种分区通常在 1 秒内完成。

消费者(Consumers)

传统的消息队列有两种处理方式:顺序处理和发布 / 订阅处理。在顺序处理方式时,消费者是按照消息进入消息队列的顺序进行读取的。发布 / 订阅方式则是将消息广播给所有的消费者。Kafka 提供了一种抽象的方式 - 消费者分组(consumer group)来满足消息的以上两种处理方式。

每个消费者都有一个组名,只有订阅的消费者在对应的组中时,发布到 topic 中的消息才会传递给消费者对象。消费者对象可以在不同的进程或主机中存在。

如果所有的消费者对象的组名都相同,这就好比是传统的顺序队列,消费者平均分配这些消息。

如果所有的消费者对象的组名都不相同,这就好比是发布 / 订阅模式,消费者只接受订阅的消息。

通常来说,订阅某一主题(topic)的消费者在同一组的有多个,这是为了系统的稳定和容错。下图是一个具体的示例。

Linux 下安装并(单节点)配置启动 Kafka

Linux 下安装并(单节点)配置启动 Kafka

Kafka 比传统的消息队列拥有更高的排序可靠性。

传统的消息队列在顺序保存消息到服务器时,如果有多个消费者从队列中读取消息,服务器会顺序发送消息。但是,尽管服务器是顺序发送消息的,但是消费者是异步接收消息的,因此消费者接收到的消息可能并不是顺序的,但消费者并不知道消息是乱序的。为避免这种情况,传统的消息队列通常只允许一个进程读取消息,这也就意味着消息的处理是单向的,而不是并行的。

Kafka 在这方面有更好的处理方式,它通过在主题中使用分区完成了并行处理。Kafka 既保证了顺序输出又实现了消费者之间的平衡。通过给主题分配分区,将消息分给同组内的消费者,确保每一分区内的消费者是唯一的,并且是顺序读取消息。由于是通过分区来实现多个消费者对象的负载均衡,所以同一消费者组的消费者是不能超过分区的。

Kafka 仅仅实现了消息在一个分区内的排序,而不是同一主题不同分区内的排序。对于大多数应用而言,数据分区和分区内数据排序就足够了。如果你想要所有的消息都是顺序排列的,那就只能有一个分区,这意味着只能有一个消费者在一个消费者组内。这种情况下,消息的处理就不是并行的。

可靠性

消息会以生产者发送的顺序追加到主题的分区。例如,一个生产者发送同一个消息两次分别称为 M1,M2,M1 先发,那么 M1 将会有一个更小的偏移量,并且也会比 M2 早出现在日志中。

消费者以存储在日志中的顺序看见消息。

对于复制 N 倍的主题,即便 N - 1 台服务器出错,都不会使已经提交到日志的消息丢失

使用场景

消息代理

Kafka 可以替代一些传统的消息代理。消息代理有很多使用场景,比如与数据处理程序解耦,缓存未处理的消息等等。和大多数消息处理系统相比,Kafka 有更好的吞吐量,内建的分区,复制和容错能力,这使得 Kafka 能够很好的处理大规模消息应用。

活动追踪

Kafka 最初用来提供实时追踪网站用户行为的相关数据的能力,例如统计 PV,UV 等。

监控统计

Kafka 经常被用来操作监控数据,比如从分布式的应用中汇总统计数据。

日志收集

我们的服务通常部署在多台计算机上,服务器的运行日志也会分散打在各个机器上。Kafka 通常被用来从各个服务器上收集日志,然后统一打到 HDFS 或者其他离线存储系统,比如 Facebook 的 Scribe 在收集日志时就是用了 Kafka。

流处理

很多用户完成原始数据的阶段性汇总,加工等处理后,将操作结果转换为新的 topic 写入 Kafka 来进行更深入的处理。比如,文章推荐程序完首先是用爬虫从 RSS 中爬取用户订阅的文本内容,然后把这些内容发布到 articles topic 下。接下来的处理程序,将 articles topic 下的内容格式化后,发布到 format topic 下。最终的处理程序尝试将这些格式化的内容推荐给合适的用户。Storm 和 Samze 是处理这种业务的流行框架。

事件采集

业务状态的变化被按照时间顺序记录下来,这种程序设计方式被成为事件采集。Kafka 支持大规模的日志数据存储,这使得 Kafka 成为事件采集程序理想的后端模块。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2016-04/130018p2.htm

相关阅读

分布式发布订阅消息系统 Kafka 架构设计 http://www.linuxidc.com/Linux/2013-11/92751.htm

Apache Kafka 代码实例 http://www.linuxidc.com/Linux/2013-11/92754.htm

Apache Kafka 教程笔记 http://www.linuxidc.com/Linux/2014-01/94682.htm

Apache kafka 原理与特性 (0.8V)  http://www.linuxidc.com/Linux/2014-09/107388.htm

Kafka 部署与代码实例  http://www.linuxidc.com/Linux/2014-09/107387.htm

Kafka 介绍和集群环境搭建  http://www.linuxidc.com/Linux/2014-09/107382.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7573字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7959512
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...