kafka笔记1--基础介绍与集群安装

最近需要了解一下kafka相关基础与原理, 因此发了些时间系统的学习了些, 将笔记贴在此处,以便于后续查阅!

1 kafka 基础介绍

  1. 消息队列
    消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题, 实现高性能、高可用、可伸缩和最终一致性架构, 是大型分布式系统不可缺少的中间件. 其结构大致如下图所示, 包括点对点模式、发布订阅模式。
    在这里插入图片描述

    • 点对点模式
      点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除),点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此。
    • 发布订阅模式
      发布/订阅模式(一对多,数据生产后,推送给所有订阅者),发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即使当前订阅者不可用,处于离线状态。
    • 消息队列优点:
      1解耦,
      2冗余,
      3扩展性,
      4灵活性&峰值处理能力,
      5可恢复性,
      6顺序保证性,
      7缓冲,
      8异步通信。
  2. kafka 基础
    kafka 是一个分布式的流平台,其结构如下图所示。
    在这里插入图片描述
    其具备如下3个重要的功能。
    1)发布和订阅记录流,类似于消息队列或企业消息传递系统;
    2)以容错持久的方式存储记录流;
    3)处理记录流。
        其通常用于两大类应用程序。第一,建立一个实时流数据管道,以便于可靠地在系统或应用程序之间获取数据;第二,构建实时流应用程序,以转换或响应数据流。
        除此之外,Kafka在一个或多个可以跨越多个数据中心的服务器上作为集群运行; Kafka集群将流记录存储在称为主题的不同类别中;每个记录由一个键、一个值和一个时间戳组成。
    在api方面, kafka有5类这还要的api,包括Producer API,Consumer API, Streams API ,Connector API,Admin API。

2 kafka 集群安装

笔者使用3台主机,对应h01,h02, h03,将其写在/etc/hosts中.

2.1 zookeeper 安装

  1. 修改配置
    修改配置文件
    修改zoo.cfg文件
    dataDir=/home/xg/soft/datadir/zookeeper
    server.1=h01:2888:3888
    server.2=h02:2888:3888
    server.3=h03:2888:3888
    scp zoo.cfg xg@h03:~/soft/cdh5.6/zookeeper-3.4.5-cdh5.6.0/conf
    依次在h01 h02 h03上执行新建目录命令
    mkdir -p ~/soft/datadir/zookeeper 新建目录
    依次新建myid文件,内容分别为1、2、3
    echo 1 >~/soft/datadir/zookeeper/myid (h02为2、h03为3)
  2. 启动&停止
    在用户目录通过zkServer 的start启动,stop 停止;
    ~/soft/cdh5.6/zookeeper-3.4.5-cdh5.6.0/bin/zkServer.sh start|status|stop
    启动后成功后通过jps可以查看到对应进程:
    $ jps -l|grep -i Quo
    16168 org.apache.zookeeper.server.quorum.QuorumPeerMain
    
  3. 常用命令
    • zkCli 登录
      ~/soft/cdh5.6/zookeeper-3.4.5-cdh5.6.0/bin/zkCli.sh -server h01:2181 #h01可以更换为h02、h03
    • zkCli 帮助文档
      登录后:help
    • 查看命令
      ls /
      [zk: h01:2181(CONNECTED) 0] ls /
      [cluster, controller, brokers, zookeeper, yarn-leader-election, hadoop-ha, admin, isr_change_notification, log_dir_event_notification, controller_epoch, consumers, latest_producer_id_block, config]
      
    • 获取节点信息
      get /zookeeper
    • 创建节点信息
      create /aa “hellozk”
    • 修改节点信息
      set /aa “testaa”
    • 删除节点数据
      rmr /aa
    • 设置监听
      get /aa watch
      在其它机器上更改aa节点数据,会收到通知信息

2.2 kafka 安装

  1. 修改配置
    broker.id=0 注:h02,h03分别为1,2
    log.dirs=/home/xg/soft/logdir/kafka 此处建议修改为实际需要的目录
    zookeeper.connect=h01:2181,h02:2181,h03:2181此处也可以使用默认的localhost:2181
  2. 启动
    3个机器上都执行如下命令即可,启动成功后会出现对应的kafka进程,如下:
    $ jps -l|grep -i kafka
    23735 kafka.Kafka
    
    bin/kafka-server-start.sh config/server.properties &
    或者 bin/kafka-server-start.sh -daemon config/server.properties

3 kafka 常用命令

  • 创建topic
    bin/kafka-topics.sh --create --zookeeper h01:2181 --replication-factor 1 --partitions 1 --topic test
    bin/kafka-topics.sh --create --zookeeper h01:2181 --replication-factor 2 --partitions 2 --topic test2
    bin/kafka-topics.sh --create --bootstrap-server h01:9092 --replication-factor 2 --partitions 2 --topic test3
  • 查看topic
    bin/kafka-topics.sh --list --zookeeper h01:2181
    bin/kafka-topics.sh --list --bootstrap-server localhost:9092 --topic test2
  • 查看详细信息
    $ bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test2
    Topic:test2	PartitionCount:2	ReplicationFactor:2	Configs:segment.bytes=1073741824
        Topic: test2	Partition: 0	Leader: 1	Replicas: 0,1	Isr: 1,0
        Topic: test2	Partition: 1	Leader: 2	Replicas: 1,2	Isr: 2,1
    
  • 生产消息
    $  bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test3
    >msg 01
    >msg 02
    >^C
    
  • 消费消息
    $  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test3
    msg 01
    msg 02
    ^CProcessed a total of 2 messages
    
  • 删除topic
    bin/kafka-topics.sh --delete --bootstrap-server h01:9092 --topic test3
  • 查看所有topic
    $ bin/kafka-topics.sh --zookeeper localhost:2181 --list
    __consumer_offsets
    k8s-test
    sre-k8s-log
    

4 注意事项

  1. 单机版本默认只能被本访问,若需要设置所有机器可访问,那么需要设置listeners为0.0.0.0,advertised.listeners 为实际机器的 ip:port
    listeners = PLAINTEXT://0.0.0.0:9092
    advertised.listeners=PLAINTEXT://192.xxx.xx.153:9092
    

5 说明

  1. 环境说明
    测试系统为 debian9.11
    kafka 版本为 kafka_2.12-2.3.0
    zookeeper 版本为 zookeeper-3.4.5-cdh5.6.0
  2. 参考文献
    1 消息队列技术介绍
    2 kafka 学习笔记及案例源码
    3 kafka 官网
    4 Kafka Shell基本命令(包括topic的增删改查)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值