Kafka基础概念+安装部署(初级入门一)

Kafka基础概念+安装部署(初级入门一),第1张

Kafka基础概念+安装部署(初级入门一)

一、Kafka
1.1 Kafka是最初由linkedin公司开发,linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,也是一个开源【分布式流处理平台】,由Scala和Java编写,(也当做MQ系统,但不是纯粹的消息系统)
核心:一种高吞吐量的分布式流处理平台,它可以处理消费者在网站中的所有动作流数据。 比如 网页浏览,搜索和其他用户的行为等,应用于大数据实时处理领域
•官网:http://kafka.apache.org/
•快速开始:http://kafka.apache.org/quickstart
二、核心概念
2.1 Broker
    Kafka的服务端程序,可以认为一个mq节点就是一个broker
    broker存储topic的数据
2.2 Producer生产者
    创建消息Message,然后发布到MQ中
    该角色将消息发布到Kafka的topic中
2.3 Consumer消费者:
    消费队列里面的消息
2.4 ConsumerGroup消费者组
    同个topic, 广播发送给不同的group,一个group中只有一个consumer可以消费此消息
2.5 Topic
    每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,主题的意思
2.6 Partition分区
    kafka数据存储的基本单元,topic中的数据分割为一个或多个partition,每个topic至少有一个partition,是有序的
    一个Topic的多个partitions, 被分布在kafka集群中的多个server上
    消费者数量 <=小于或者等于Partition数量
2.7 Replication 副本(备胎)
    同个Partition会有多个副本replication ,多个副本的数据是一样的,当其他broker挂掉后,系统可以主动用副本提供服务
    默认每个topic的副本都是1(默认是没有副本,节省资源),也可以在创建topic的时候指定
    如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,如果创建副本为4,则会报错
2.8 ReplicationLeader、ReplicationFollower
    Partition有多个副本,但只有一个replicationLeader负责该Partition和生产者消费者交互
    ReplicationFollower只是做一个备份,从replicationLeader进行同步
2.9 ReplicationManager
    负责Broker所有分区副本信息,Replication 副本状态切换
  offset
    每个consumer实例需要为他消费的partition维护一个记录自己消费到哪里的偏移offset
    kafka把offset保存在消费端的消费者组里

特点总结:

多订阅者
    一个topic可以有一个或者多个订阅者
    每个订阅者都要有一个partition,所以订阅者数量要少于等于partition数量
高吞吐量、低延迟: 每秒可以处理几十万条消息
    高并发:几千个客户端同时读写
    容错性:多副本、多分区,允许集群中节点失败,如果副本数据量为n,则可以n-1个节点失败
    扩展性强:支持热扩展

基于消费者组可以实现:
    基于队列的模型:所有消费者都在同一消费者组里,每条消息只会被一个消费者处理
    基于发布订阅模型:消费者属于不同的消费者组,假如每个消费者都有自己的消费者组,这样kafka消息就能广播到所有消费者实例上
三、快速部署

需要的软件和环境版本说明
kafka-xx-yy
    xx 是scala版本,yy是kafka版本(scala是基于jdk开发,需要安装jdk环境)
    下载地址:http://kafka.apache.org/downloads
zookeeper
    Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册
    下载地址:https://zookeeper.apache.org/releases.html
jdk1.8

配置全局环境变量
解压:tar -zxvf jdk-8u181-linux-x64.tar.gz
vim /etc/profile
配置
	JAVA_HOME=/usr/local/software/jdk1.8
	CLASSPATH=$JAVA_HOME/lib/
	PATH=$PATH:$JAVA_HOME/bin
	export PATH JAVA_HOME CLASSPATH
环境变量立刻生效
	source /etc/profile
查看安装情况 java -version

zookeeper

解压缩:tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
重命名 mv apache-zookeeper-3.7.0-bin zookeeper
进入配置:cd zookeeper/conf/
cp zoo_sample.cfg  zoo.cfg (具体配置项更改,可根据实际业务情况进行配置)
进入bin:cd zookeeper/bin/
启动  ./zkServer.sh start

 kafka

解压缩: tar -zxvf  kafka_2.13-2.8.0.tgz
重命名: mv kafka_2.13-2.8.0 kafka
进入config目录下 server.properties
	#标识broker编号,集群中有多个broker,则每个broker的编号需要设置不同
	broker.id=0
​
	#修改下面两个配置 ( listeners 配置的ip和advertised.listeners相同时启动kafka会报错)
	listeners(内网Ip)
	advertised.listeners(公网ip)
#修改zk地址,默认地址
zookeeper.connection=localhost:2181
启动: cd kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties &
#停止
kafka-server-stop.sh
创建topic
./kafka-topics.sh --create --zookeeper xx.xx.xx.240:2181 --replication-factor 1 --partitions 1 --topic wnn-topic
查看topic
./kafka-topics.sh --list --zookeeper xxxx.xxxx.240:2181

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存