没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
14页
本文档提供了对Kafka这一分布式消息系统的全面解析,从基本概念到实际应用,涵盖了其在日志收集、消息系统、用户活动跟踪等方面的使用场景。首先介绍了Kafka的核心概念,如Broker、Topic、Producer、Consumer等,随后详细阐述了Kafka的安装步骤、配置过程以及其与Zookeeper的交互。通过对Kafka生产者和消费者的代码示例分析,文档展示了消息的发送和接收过程,同时探讨了Kafka集群的搭建和运维,包括主题创建、分区管理、消息复制和容错处理等核心功能。此外,本文还探讨了Kafka的Java客户端访问方式,并且介绍了Spring Boot与Kafka的整合方法。整体上,文档提供了对Kafka架构深度的理解,同时通过实例代码展示了其在实际应用中的强大功能和灵活性。
资源推荐
资源详情
资源评论
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协
调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系
统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,
Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
Kafka的使用场景
日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种
consumer,例如hadoop、Hbase、Solr等。
消息系统:解耦和生产者和消费者、缓存消息等。
用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这
些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到
hadoop、数据仓库中做离线分析和挖掘。
运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反
馈,比如报警和报告。
Kafka基本概念
kafka是一个分布式的,分区的消息(官方称之为commitlog)服务。它提供一个消息系统应该具备的功能,但是确有着独
特的设计。可以这样来说,Kafka借鉴了JMS规范的思想,但是确并没有完全遵循JMS规范。
首先,让我们来看一下基础的消息(Message)相关术语:
名称 解释
Broker
消息中间件处理节点,一个Kafka节点就是一个broker,一
个或者多个Broker可以组成一个Kafka集群
Topic
Kafka根据topic对消息进行归类,发布到Kafka集群的每条
消息都需要指定一个topic
Producer 消息生产者,向Broker发送消息的客户端
Consumer 消息消费者,从Broker读取消息的客户端
ConsumerGroup
每个Consumer属于一个特定的ConsumerGroup,一条消
息可以被多个不同的ConsumerGroup消费,但是一个
ConsumerGroup中只能有一个Consumer能够消费该消息
Partition
物理上的概念,一个topic可以分为多个partition,每个
partition内部消息是有序的
因此,从一个较高的层面上来看,producer通过网络发送消息到Kafka集群,然后consumer来进行消费,如下图:
服务端(brokers)和客户端(producer、consumer)之间通信通过TCP协议来完成。
kafka基本使用
安装前的环境准备
由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK。
1 yuminstalljava‐1.8.0‐openjdk*‐y
kafka依赖zookeeper,所以需要先安装zookeeper
1 wgethttps://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeeper‐3.5.8‐bin.tar.gz
2 tar‐zxvfapache‐zookeeper‐3.5.8‐bin.tar.gz
3 cdapache‐zookeeper‐3.5.8‐bin
4 cpconf/zoo_sample.cfgconf/zoo.cfg
5
6 #启动zookeeper
7 bin/zkServer.shstart
8 bin/zkCli.sh
9 ls/#查看zk的根目录相关节点
第一步:下载安装包
下载2.4.1release版本,并解压:
1 wgethttps://mirror.bit.edu.cn/apache/kafka/2.4.1/kafka_2.11‐2.4.1.tgz#2.11是scala的版本,2.4.1是kafka的版本
2 tar‐xzfkafka_2.11‐2.4.1.tgz
3 cdkafka_2.11‐2.4.1
第二步:修改配置
修改配置文件config/server.properties:
1 #broker.id属性在kafka集群中必须要是唯一
2 broker.id=0
3 #kafka部署的机器ip和提供服务的端口号
4 listeners=PLAINTEXT://192.168.65.60:9092
5 #kafka的消息存储文件
6 log.dir=/usr/local/data/kafka‐logs
7 #kafka连接zookeeper的地址
8 zookeeper.connect=192.168.65.60:2181
第三步:启动服务
现在来启动kafka服务:
启动脚本语法:kafkaserverstart.sh[daemon]server.properties
可以看到,server.properties的配置路径是一个强制的参数,daemon表示以后台进程运行,否则ssh客户端退出后,
就会停止服务。(注意,在启动kafka时会使用linux主机名关联的ip地址,所以需要把主机名和linux的ip映射配置到本地
host里,用vim/etc/hosts)
1 #启动kafka,运行日志在logs目录的server.log文件里
2 bin/kafka‐server‐start.sh‐daemonconfig/server.properties#后台启动,不会打印日志到控制台
3 或者用
4 bin/kafka‐server‐start.shconfig/server.properties&
5
6 #我们进入zookeeper目录通过zookeeper客户端查看下zookeeper的目录树
7 bin/zkCli.sh
8 ls/#查看zk的根目录kafka相关节点
9 ls/brokers/ids#查看kafka节点
10
11 #停止kafka
12 bin/kafka‐server‐stop.sh
server.properties核心配置详解:
Property Default Description
broker.id 0
每个broker都可以用一个唯一的非负整数id进行标识;这个id可以作为broker的“名字”,
你可以选择任意你喜欢的数字作为id,只要id是唯一的即可。
log.dirs /tmp/kafka-logs
kafka存放数据的路径。这个路径并不是唯一的,可以是多个,路径之间只需要使用逗号分
隔即可;每当创建新partition时,都会选择在包含最少partitions的路径下进行。
listeners
PLAINTEXT://192.168.65.60:909
2
server接受客户端连接的端口,ip配置kafka本机ip即可
zookeeper.connect localhost:2181
zooKeeper连接字符串的格式为:hostname:port,此处hostname和port分别是
ZooKeeper集群中某个节点的host和port;zookeeper如果是集群,连接方式为
hostname1:port1,hostname2:port2,hostname3:port3
剩余13页未读,继续阅读
资源评论
光芒软件工匠
- 粉丝: 789
- 资源: 64
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功