kafka详细内容(一)

一、背景和作用

kafka消息队列,主要作用有,消除峰值流量;解偶代码业务;异步处理业务

消除峰值流量:当网站接口超出承受服务器处理器能力的时候,可以通过kafka缓存队列,后面一个一个处理。

解偶代码业务:不同的业务流程可以拆分进行执行,比如发送短信,邮件的业务,其他终端不用写在自己业务中。

异步处理业务:当主要流程已经完成的时候,可以将部分不重要的任务进行发送消息后续处理。

二、基础架构

1、为了提高吞吐量,一个topic主题可以分为多个pattition分区

2、配合分区的设计,提出消费组的概念,组内每个消费者一起并行消费

3、为提高可用性,每个pattition分区可以增加多个副本。副本分为:leader,follower两种。生产和消费只针对leader。

4、如果leader挂了follower将被替代为leader。这个主要通过Zookeeper记录来决定的。

三、安装方式

1、官网下载地址:Apache Kafka

直接打开下载即可。上传服务器,解压压缩包即可。

2、cd 进入kafka解压文件夹:主要是 bin目录和config目标

bin目录可以查看到很多启动的各种脚本。

config目录可以查看到kafka的配置文件。consumer.properties生产者配置文件;producer.properties消费者配置文件;server.properties服务端配置文件。

3、配置server.properties

broker.id=0                标识kafka的唯一标识,在kafka集群中不能重复

log.dirs=/opt/mo...      指定kafka日志目录,不能使用默认的,默认是临时目录

zookeeper.connect=192.168.3.1:2121 ,192.168.3.1:2122 /kafka       指定zookeeper地址,可以配置kafka目录,作用是方便管理

配置完成后,要对其他服务器的kafka也进行配置一样的修改,然后去修改broker.id,因为是唯一的不能重复

4、 配置kafka环境变量

vim /etc/profile.d/my_env.sh

加入下面配置

export KAFKA_HOME=/opt/module/kafka        #安装目录

export PATG=$PATH:$KAFKA_HOME/bin

source /etc/profile

同步到其他服务器。

5、启动即可。全部服务器都要启动

1、先启动zookeeper集群        sh zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties

2、集群kafka         sh kafka-server-start /usr/local/etc/kafka/server.properties

四、kafka命令脚本

kafka-topics.sh       // 主题脚本

#查看该kafka有多少主题:

sh kafka-topics.sh  --bootstrap-server 192.168.3.1:9092 --list     

#创建主题,一个分区,三个副本        first是主题名字 

sh kafka-topics.sh  --bootstrap-server 192.168.3.1:9092 --topic first --create --partitions 1 --replication-factor 3         

#查看主题详细信息。

sh kafka-topics.sh  --bootstrap-server 192.168.3.1:9092 --topic first --describe       

#修改分区数,只能增加,不能减少

sh kafka-topics.sh  --bootstrap-server 192.168.3.1:9092 --topic first --alter --partitions 3       

创建生产者:

sh kafka-console-producer --topic first --broker-list localhost:9092

创建消费者:

sh kafka-console-consumer --bootstrap-server localhost:9092 -topic first

--from-beginning创建消费者,拿出以前的数据

sh kafka-console-consumer --bootstrap-server localhost:9092 -topic first --from-beginning

五、kafka生产者发送原理

Producer发送线程启动->interceptors拦截器->serializer序列化->partitioner分区器

interceptors拦截器:拦截数据进行校验和封装,一般不同

serializer序列化:将数据序列化格式,一般用自带的

partitioner分区器:将数据准备好大小,分块批次。默认大小32M,16K一批

发送条件

batch.size        批次包达到16K,开始发送

linger.ms         延迟时间,默认为0,需要更加情况调整

sender线程拿到数据后,发送到集群,集群将数据拿到之后,会同步分区数据,全部成功后会应答sender线程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值