分布式发布订阅消息系统Kafka--

本文介绍了分布式发布订阅消息系统Kafka的基础知识,包括其起源、特点、应用场景、核心概念和架构。详细讲述了Kafka的部署,包括单节点单Broker和单节点多Broker的部署步骤,并进行了容错性测试。此外,还展示了如何在Scala-Maven的IDEA环境下使用Kafka Java API编程,以及结合Flume进行实时数据采集的实战案例。
摘要由CSDN通过智能技术生成

Kafka概述

在这里插入图片描述
Kafka最初是LinkedIn公司开发的MQ系统,未来的⽬目标是打造成⼀一站式流式数据处理理平台

  • kafka是世界著名作家的名字(弗兰兹·卡夫卡),代表作:《变形记》
  • 2010年年底,Kafka作为开源项⽬目在GitHub上发布。
  • 2011年年7⽉月,成为Apache的孵化器器项⽬目。
  • 2012年年10⽉月,Kafka从孵化器器项⽬目毕业。
  • 2014年年秋,原创团队离开LinkedIn,创办Confluent。
  • 最新版本:2.0.0,源码⽤用Scala开发
  • Apache⽹网址:http://kafka.apache.org
  • Confluent⽹网址:https://www.confluent.io

卡夫卡是用于构建实时数据管道和流媒体应用。它是水平可伸缩的,容错的,快速的,并运行在数千家公司的生产。

  • PUBLISH & SUBSCRIBE
    像消息传递系统一样读写数据流。
  • PROCESS
    编写可伸缩的流式处理应用程序,实时响应事件。
  • STORE
    存储数据流安全分布,复制。容错集群。

Kafka概述和消息系统类似

消息中间件:生产者和消费者

妈妈:生产者
你:消费者
馒头:数据流、消息

	正常情况下: 生产一个  消费一个
	其他情况:  
		一直生产,你吃到某一个馒头时,你卡主(机器故障), 馒头就丢失了
		一直生产,做馒头速度快,你吃来不及,馒头也就丢失了

	拿个碗/篮子,馒头做好以后先放到篮子里,你要吃的时候去篮子里面取出来吃

篮子/框: Kafka
	当篮子满了,馒头就装不下了,咋办? 
	多准备几个篮子 === Kafka的扩容  

流处理平台有三个关键功能:

  • 发布和订阅数据流,类似于消息队列或企业消息传递系统。
  • 以容错的持久方式存储记录流。
  • 处理实时产生的数据流。

名词解释

在这里插入图片描述

应用场景

在这里插入图片描述

  • 活动追踪:跟踪⽹网站⽤用户与前端应⽤用程序发⽣生的交互
    如:⽹网站PV/UV分析
  • 传递消息:系统间异步的信息交互
    如:营销活动(注册后发送券码福利利)
  • ⽇日志收集:收集系统及应⽤用程序的度量量指标及⽇日志
    如:应⽤用监控和告警
  • 提交⽇日志:将数据库的更更新发布到kafka上
    如:交易易统计

kafka的特点

Kafka是⼀一种分布式的,基于发布/订阅的消息系统

  • 集群模式:动态增减节点,伸缩性
  • 多个⽣生产者
  • 多个消费者
  • 消息持久化:基于磁盘的数据存储

通过横向扩展⽣生产者、消费者和broker,kafka可以轻松处理理巨⼤大的消息流,具有很好的性能和吞吐量量。

Kafka架构及核心概念

在这里插入图片描述
producer:生产者,就是生产馒头(老妈)
consumer:消费者,就是吃馒头的(你)
broker:篮子
topic:主题,给馒头带一个标签,topica的馒头是给你吃的,topicb的馒头是给你弟弟吃

首先是几个概念:

  • Kafka作为一个集群运行在一个或多个服务器上,这些服务器可以跨多个数据中心。
  • Kafka集群将记录流存储在称为topic的类别中。
  • 每个记录由一个key、一个value和一个 timestamp组成。

Kafka单节点单Broker部署之Zookeeper安装

kafka部署方式:

  • 单节点单Broker部署及使用
  • 单节点多Broker部署及使用
  • 多节点多Broker部署及使用

单节点单Broker部署

1、zk直接解压;配置环境变量(vi ~/.bash_profile)
在这里插入图片描述
修改ZK_HOME下的conf下的zoo.cfg
数据存储路径
2、下载解压kafka;配置环境变量
在这里插入图片描述
修改配置文件-$KAFKA_HOME/config/server.properties

broker.id=0
listeners		//监听的端口
host.name		//启动在本台机器ip
log.dirs		//日志存储路径
zookeeper.connect		//外部zk

启动Kafka

kafka-server-start.sh

USAGE: /home/hadoop/app/kafka_2.11-0.9.0.0/bin/kafka-server-start.sh [-daemon] server.properties [--override property=value]*

kafka-server-start.sh $KAFKA_HOME/config/server.properties

在这里插入图片描述

创建topic: zk

kafka-topics.sh --create --zookeeper hadoop000:2181 --replication-factor 1 --partitions 1 --topic hello_topic

查看所有topic

kafka-topics.sh --list --zookeeper hadoop000:2181

在这里插入图片描述
注意要分别在不同的控制台执行

发送消息: broker

kafka-console-producer.sh --broker-list hadoop000:9092 --topic hello_topic

消费消息: zk

kafka-console-consumer.sh --zookeeper hadoop000:2181 --topic hello_topic --from-beginning
--from-beginning的使用是从头消费
查看所有topic的详细信息:kafka-topics.sh --describe --zookeeper hadoop000:2181
查看指定topic的详细信息:kafka-topics.sh --describe --zookeeper hadoop000:2181 --topic hello_topic

在这里插入图片描述

单节点多Broker部署及使用

在这里插入图片描述
分别修改三个配置文件

server-1.properties
	log.dirs=/home/hadoop/app/tmp/kafka-logs-1
	listeners=PLAINTEXT://:9093
	broker.id=1

server-2.properties
	log.dirs=/home/hadoop/app/tmp/kafka-logs-2
	listeners=PLAINTEXT://:9094
	broker.id=2

server-3.properties
	log.dirs=/home/hadoop/app/tmp/kafka-logs-3
	listeners=PLAINTEXT://:9095
	broker.id=3

启动kafak

kafka-server-start.sh -daemon $KAFKA_HOME/config/server-1.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-2.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-3.properties &

测试:

//创建一个topic
kafka-topics.sh --create --zookeeper hadoop000:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
//生产端发送消息 
kafka-console-producer.sh --broker-list hadoop000:9093,hadoop000:9094,hadoop000:9095 --topic my-replicated-topic
//消费者消费消息
kafka-console-consumer.sh --zookeeper hadoop000:2181 --topic my-replicated-topic
//查看topic的消息
kafka-topics.sh --describe 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值