kafka的使用

   kafka的安装:   

       在linux环境使用 kafka版本 2.11-2.4.1搭建,这个版本需要依赖jdk和zookeeper,jdk的安装不做说明,这里说明一下zookeeper和kafka的安装和使用;

zookeeper 的安装,启动使用默认配置即可:

      下载:wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz
      解压:tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
      到bin目录下:cd apache-zookeeper-3.5.8-bin
      复制生成zoo.cfg:cp conf/zoo_sample.cfg conf/zoo.cfg

      启动:bin/zkServer.sh start

kafka的安装:

     下载:wget https://archive.apache.org/dist/kafka/2.4.1/kafka_2.11-2.4.1.tgz  
      解压:tar -xzf kafka_2.11-2.4.1.tgz
      到kafka目录下:cd kafka_2.11-2.4.1

修改  config/server.properties 配置:

         #id在kafka集群中必须唯一
         broker.id=0
         # 部署的及其ip和提供服务的端口号
         # 内网ip
         listeners=PLAINTEXT://172.23.95.177:9092    
         # 外网ip  
         advertised.listeners=PLAINTEXT://39.99.224.175:9092   
         # 存放消息文件和索引的目录
         log.dirs=/usr/local/log/kafka
         # 默认分区数量
         num.partitions=1
         # zookeeper 地址
         zookeeper.connect=39.99.224.175:2181
         zookeeper.connection.timeout.ms=6000

启动kafka:

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

停kafka服务:

           bin/kafka-server-stop.sh

创建topic(指定一个分区一个备份),topic是test:

        bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

 查看kafka中目前存在的topic
         bin/kafka-topics.sh --list --zookeeper 39.99.224.175:2181
 
 删除主题
         bin/kafka-topics.sh --delete --topic test --zookeeper 39.99.224.175:2181
 
 查看topic的分区情况
         bin/kafka-topics.sh --describe --zookeeper 39.99.224.175:2181 --topic test
 
 增加topic分区
         bin/kafka-topics.sh -alter --partitions 3 --zookeeper 39.99.224.175:2181 --topic test

kafka 组件基本概念:

         

kafka的架构:

         1、partition(分区),类似rocketMQ中的 队列,随机分布在broker上面;

         2、一个分区可能有多个副本,但是只有一个leader,如果leader挂了会从其他副本中选举出一个leader;

         3、一个consumer只会消费固定的几个分区的数据,这个是通过负载均衡实现的;

分区数量的设置:

      一个topic的各个分区是并行的,所以分区越多吞吐量越高,consumer的吞吐量除了跟consumer的数量有关还跟处理每条消息的时间有关;

      并不是分区越多越好,如果一个broker挂了,需要选举的分区越多、选举的时间越长,不可用风险会增加,另外分区多主备副本间的数据复制也会延迟,根据经验,每个boker上的分区限制在100*b*r内(b指集群内boker的数量,r指副本数量);

      kafka没有提供事务支持,需要开发者自行处理,要实现顺序消息有两种方式:1、设置这个topic的分区数量为1;2、发送消息时指定分区;

kafka的压测工具:

       在kafka的解压目录执行下面命令,往test里发送一百万消息,每条设置1KB,throughput 用来进行限流控制,当设定的值小于 0 时不限流,当设定的值大于 0 时,当发送的吞吐量大于该值时就会被阻塞一段时间

 bin/kafka-producer-perf-test.sh --topic test --num-records 1000000 --record-size 1024 --throughput -1 --producer-props bootstrap.servers=172.23.95.177:9092 acks=1

      从压测结果来看,分区数到达某个值吞吐量反而开始下降,实际上很多事情都会有一个临界值,当超过这个临界值之后,很多原本符合既定逻辑的走向又会变得不同
 

启动zookeeper和kafka后,创建topic后就可以收发消息了,kafka使用demo(包含了使用事物消息和消费者端多线程消费):链接:https://pan.baidu.com/s/1T54H-X-U4_Q8Rn2v8BPdDA?pwd=tow7 

kafka可视化工具的安装及使用:https://www.cnblogs.com/dadonggg/p/8205302.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值