kafka入门综合概要介绍

~ kafka

  • 设计初衷为统一信息收集平台
    • 分布式收集,统一处理
      • 可以实时处理反馈信息
      • 支持大数据
      • 高容错
    • 分布式、分区的、多副本的、多订阅者的日志系统(分布式MQ系统)
    • 消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。
    • ii. 多个broker协同合作,producer、consumer和broker三者之间通过zookeeper来协调请求和转发。
    • iii. producer产生和推送(push)数据到broker,consumer从broker拉取(pull)数据并进行处理。   
    • iv. broker端不维护数据的消费状态,提升了性能。  
    • v. 直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。
    • vi. Kafka使用scala编写,可以运行在JVM上。
  • java编程需要引入相关jar包
  • 详细
    • 操作
      • 启动
        • 启动zookeeper server
          • bin/zookeeper-server-start.sh config/zookeeper.properties &
        • 启动kafka server
          • bin/kafka-server-start.sh config/server.properties &
    • 组件
      • zookeeper
        • Topic/logs
          • 分类,一类消息
          • Product
            • 发送者,生产者
          • Consumer
            • 接收者
          • partition
            • append log文件
            • Offset
              • 消息在partition中的位置
            • 消息队列
    • broker
      • kafka集群中的kafka实例
    • 场景
      • Message Queue
  • 设计原理
    • 持久化
      • 文件存储+缓存批量IO
    • 性能
      • 可压缩
    • Product发送者,生产者
      • 负载均衡
      • 异步发送
    • Consumer
      • 接收者
      • API
        • high-lever
        • simple
    • 消息传送机制
      • 最多一次
      • 最少一次
      • 只有一次
    • 复制备份
      • leader
        • 负责所有读写以及监控follow
      • follow
        • 以及与leader同步
      • 所有的follow都保存成功消息才能被消费
        • 即使只有一个replicas实例存活仍然可以实现消息的正常发送接收
    • 日志
    • zookeeper
  • 主要配置
    • Broker
    • Product
    • Consumer
    • Broker部署
      • 单机
      • 集群
  • 安装
    • liunx环境
    • 安装jdk
      • vi /etc/profile在末尾追加
        • JAVA_HOME
        • JRE_HOME
        • PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
        • CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
      • source /etc/profile使环境变量立刻生效
      • ~ jdk安装
    • 安装kafka
      • 解压
        • tar -xzvf kafka_2.8.0-0.8.1.tgz ;rm kafka_2.8.0-0.8.1.tgz; cd kafka_2.8.0-0.8.1
      • 修改配置
        • Kafka默认开启JVM压缩指针,但只是在64位的HotSpot VM受支持,如果安装了32位的HotSpot VM,需要修改/bin/kafka-run-class.sh文件
          • KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"

            • 去除-XX:+UseCompressedOops参数
      • 启动
        • bin/zookeeper-server-start.sh config/zookeeper.properties &
        • bin/kafka-server-start.sh config/server.properties &
      • 停止
        • bin/kafka-server-stop.sh config/server.properties &
        • bin/zookeeper-server-stop.sh config/zookeeper.properties &
      • 主机topic
        • create a topic
          • 创建单partitions单replication的topic
            • bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

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

          • 查看topic
            • bin/kafka-topics.sh --list --zookeeper localhost:2181
        • 查看topic的分区
          • bin/kafka-topics.sh --describe --zookeeper localhost:2181
          • bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
      • 启动生产者
        • bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
      • 启动消费者
        • bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
      • produce启动的时候参数使用的是kafka的端口而consumer启动的时候使用的是zookeeper的端口;
      • 单机连通性能测试
        • 运行producer
          • bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
        • 运行consumer
          • bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
        • 在producer端输入字符串并回车,查看consumer端是否显示。
      • 分布式连通性测试
  • 配置修改
    • bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic     --config max.message.bytes=128000

      bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic     --deleteConfig max.message.bytes

  • 查看消费者的位置
    • bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zkconnect localhost:2181 --group test
  • 删除topic与数据
    • 1) kafka-topics.sh --delete --zookeeper host:port --topic topicname

      2) 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录删除zookeeper "/brokers/topics/"目录下相关topic节点

  • 高可用
  • 重发
    • 如何确保消息的安全  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值