Apache Kafka 服务配置

概述

什么是消息系统

消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它。分布式消息传递基于可靠消息队列的概念。消息在客服端应用程序和消息传递系统之间异步排队。

有两种类型的消息模式可用:1、点对点;2、发布–订阅(pub–sub)消息系统

点对点消息系统

在点对点消息系统中,消息被保留在队列中。
一个或多个消费者可以消耗队列中的消息,但是特定消息只能由最多一个消费者消费。
一旦消费者读取队列中的消息,它就从该队列中消失,该系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但多个订单处理器也可以同时工作。

发布–订阅消息系统

在发布–订阅系统中,消息被保留在主题中。
与点对点消息系统不同,消费者可以订阅一个或多个主题并使用该主题中但所有消息。消息生产者称为发布者,消息使用者称为订阅者。
一个现实生活但离职是Dish电视,它发布不同但渠道,如运动、电影、音乐等,任何人都可以订阅自己的频道集,并获得他们订阅的频道时可用。

什么是Kafka

Apche Kafka 是一个分布式发布–订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。

  • Kafka作为一个集群,运行在一台或者多台服务器上.
  • Kafka 通过 topic 对存储的流数据进行分类。
  • 每条记录中包含一个key,一个value和一个timestamp(时间戳)。
相关组件和说明
  • Topics(主题): 属于特定类别的消息流称为主题;数据存储在主题中;主题被拆分城分区;对于每个主题,Kafka 保存一个分区的数据。每个这样的分区包含不可变有序序列的消息;分区被实现为具有相同大小的一组分段文件。
  • Partition(分区): 主题可能有许多分区,因此它可以处理任意数量的数据。
  • Parttion offset(分区偏移): 每个分区消息具有称为“offset”的唯一序列标识。
  • Replicas of partition(分区备份): 副本只是一个分区的“备份”;副本从不读取或写入数据;他们用于防止数据丢失。
  • Brokers(代理): 代理是负责维护腹部数据的简单系统。每个代理中每个主题可以具有零个或多个分区。
  • Cluster(集群): Kafka 有多个代理被称为Kafka集群。可以扩展Kafka集群,无需停机。这些集群用于管理消息数据的持久性和复制。
  • Produces(发布者): 发布者是发送一个或多个 Kafka 主题的消息的生产者者。发布者向 Kafka 经纪人发送消息;每当生产者将消息发布给代理时,代理只需将消息附加到最后一个段文件。实际上,该消息将被附加到分区。生产者还可以向他们选择的分区发送消息。
  • Consumers(消费者): 消费者从经纪人除读取数据。消费者订阅一个或多个主题,并通过从代理中提取数据来使用已发布的消息。
  • Leader(领导者): 负责给定分区的所有读取和写入的节点;每个分区都有一个服务器充当Leader。
  • Follower(追随者): 跟随领导者指令的节点被称为Follower。如果领导失败,一个追随者将自动称为新的领导者;跟随者作为正常消费者,拉去消息并更新其自己的数据存储。
  • ZooKeeper: ZooKeeper用于管理和协调 Kafka 代理;主要用于通知生产者和消费者;
    在这里插入图片描述
Kafka有四个核心的API:

The Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。
The Consumer API 允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理。
The Streams API 允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换。
The Connector API 允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。

发布–订阅消息的工作流程
  • 生产者定期向主题发送消息。Kafka 代理存储为该特定主题配置的分区中的所有消息。它确保消息在分区之间平等共享。如果生产者发送两个消息并有两个分区,Kafka 将在第一分区中存储一个消息,在第二分区中存储第二消息。
  • 消费者订阅特定主题。一旦消费者订阅主题,Kafka 将向消费者提供主题的当前偏移,并且还将偏移保存在Zookeeper系统中。
  • 消费者定期请求 Kafka(如100Ms) 新消息。一旦 Kafka 收到来自生产者的消息,它将这些消息转发给消费者。
  • 消费者将收到消息并进行处理。一旦消息被处理,消费者将向 Kafka 代理发送确认。一旦 Kafka 收到确认,它将偏移更正为新值,并在 Zookeeper 中更新它。
  • 以上流程将重复,知道消费者停止请求。消费者可以随时退费/跳到所需到主题偏移量,并阅读所有后续消息。
Zookeeper 的作用

Apache Kafka 的一个关键依赖是 Apache Zookeeper,它是一个分布式配置和同步服务,是 Kafka 代理和消费者之间的协调接口。Kafka 服务器通过 Zookeeper 中存储基本元数据,例如关于主题,代理,消费者偏移(队列读取器)等的消息。

安装

官方文档参考http://kafka.apachecn.org/
安装时会依赖 ZooKeeper,同时也需要 Java,否则会在启动 ZooKeeper 时遇上"Error: JAVA_HOME is not set and java could not be found in PATH."

安装 JAVA

$ tar -zxf jdk-8u241-linux-x64.tar.gz
$ sudo su
$ mkdir /opt/jdk
$ mv /data/software/jdk1.8.0_241/ /opt/jdk/
$ vi ~/.bash_profile
## 添加 export JAVA_HOME=/opt/jdk/jdk1.8.0_241
## PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
## export PATH
$ source ~/.bash_profile
$ update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_241/bin/java 100 
$ java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

安装 ZooKeeper

下载 kafka 和 ZooKeeper
$  wget -c https://downloads.apache.org/kafka/2.4.0/kafka-2.4.0-src.tgz
$  wget -c https://downloads.apache.org/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7.tar.gz
提取tar文件
$ tar -zxf apache-zookeeper-3.5.7.tar.gz
$ cd apache-zookeeper-3.5.7
启动 Zookeeper 服务器
$ cp conf/zoo_sample.cfg conf/zoo.cfg
$ bin/zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/software/apache-zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... FAILED TO START

卧槽,FAILED TO START

解决 “FAILED TO START”

“尝试了各种方法,发现 zookeeper 还是启动不成功,因此将 zookeeper 降低版本,使用 zookeeper 3.4.14 ,zookeeper 则正常启动。”找不到出处了。

重新下载安装
$ wget -c https://downloads.apache.org/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
...
...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值