Kafka入门

Kafka入门

1.定义
Kafka 是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。
2.消息队列
传统的消息队列的应用场景如下:
在这里插入图片描述
使用消息队列的好处:

  1. 解耦
    允许我们独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
  2. 可恢复性
    系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
  3. 缓冲
    有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
  4. 灵活性&峰值处理能力
    在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
  5. 异步通信
    在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
    消息队列的两种模式:
  6. 点对点模式
    点对点,即一对一,消费者主动拉取数据,消息收到后消息清除。消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
  7. 发布/订阅模式
    即一对多,消费者消费数据之后不会清除数据。消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。

3.Kafka基础架构
Kafka架构图
以下是各个组件的介绍:
1.Producer:消息生产者,就是向 kafka broker 发消息的客户端。
2.Consumer:消息消费者,向 kafka broker 取消息的客户端。
3.Consumer Group:消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
4.Broker:一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic。
5.Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic。
6.Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个partition,每个 partition 是一个有序的队列。
7.Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower。
8.leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。
9.follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 follower。
4.Kafka集群的搭建
1.官网下载安装包并解压

 tar -zxvf kafka_2.11-0.11.0.0.tgz -C  /opt/module/

2.重命名文件夹

 mv kafka_2.11-0.11.0.0/ kafka

3.修改配置文件

 cd config/
 vi server.properties

我们使用三台机器来搭建kafka集群,需要保证每台机器的broker.id是不同的数字,同是修改zookeeper.connect为对应的zookeeper集群的值。

broker.id=0
zookeeper.connect=oushum1:2181,oushum2:2181,oushus1:2181

以上的步骤需要在集群中的每台机器上操作,只需注意不同的机器需要配置不同的broker.id即可。
4.启动集群,在三台机器上依次执行如下命令:

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

5.创建topic

bin/kafka-topics.sh --zookeeper oushum1:2181 --create --replication-factor 3 --partitions 1 --topic first

选项说明:
–topic 定义 topic 名
–replication-factor 定义副本数
–partitions 定义分区数
6.发送消息

 bin/kafka-console-producer.sh --broker-list oushum1:9092 --topic first
>hello world
>atguigu atguigu

7.消费消息

 bin/kafka-console-consumer.sh --zookeeper hadoop102:2181 --topic first

8.关闭集群
在三台机器上执行如下命令:

bin/kafka-server-stop.sh stop

5.使用可视化工具搭建集群
偶数科技是一家中国本土的AI和大数据产品和解决方案提供商,产品介绍网站为http://oushu.io/docs/ch/,使用他们公司开发的lava数据中台可以轻松的添加和管理hdfs,zookeeper,spark,kafka等集群。下面我们来介绍如何使用lava来添加kafka集群。
1.首先在网站http://yumazure.oushu-tech.com:12000/oushurepo/yumrepo/test/kafka/centos7/2.2.0/下载kafka的rpm安装包
2.在lava的tar包解压文件中新建kafka目录,并执行如下命令:

cd /kafka
createrepo ./

3.之后我们进入/etc/yum.repos.d目录,执行如下命令:

vim oushu.repo

参考文件中其他repo的写法将kafka的repo写到最后,可按照如下写法:

[oushu-wasp]
name=oushu-wasp
baseurl=http://oushum1/oushu/wasp
gpgcheck=0

保存并退出,将此文件分发到集群其他机器上
4.现在执行如下命令重新设置仓库

/oushu-software-full-x.x.x.x/setup_repo.sh
yum clean all
yum makecache

5.现在我们在网页上打开lava管理页面找到部署Kafka集群的菜单,创建新的集群并一直点击下一步直到部署完成。之后我们便可以在页面上轻松地管理集群!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值