• Kafka学习记录


    1 Kafka的基本介绍

    Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。具有快速、可扩展、分布式、可复制等特点。Kafka与传统消息系统相比,有以下不同:
    它被设计为一个分布式系统,易于向外扩展;
    它同时为发布和订阅提供高吞吐量;
    它支持多订阅者,当失败时能自动平衡消费者;
    它将消息持久化到磁盘,因此可用于批量消费。

    1.1 相关概念

    topic

    每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处)

    partition

    parition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件

    broker

    Kafka集群包含一个或多个服务器,这种服务器被称为broker

    生产者

    负责发布消息到Kafka broker

    消费者

    消费消息。每个consumer属于一个特定的consumer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。使用consumer high level API时,同一topic的一条消息只能被同一个consumer group内的一个consumer消费,但多个consumer group可同时消费这一消息。

    1.2 架构

    kafka架构图

    如上图所示,一个典型的kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干consumer group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行rebalance。producer使用push模式将消息发布到broker,consumer使用pull模式从broker订阅并消费消息。

    2 Kafka的配置参数

    可在$KAFKA_HOME/config/server.properties文件中指定如下参数:

    #当前broker的ID
    broker.id=0
    
    #broker服务监控的端口
    port=9092
    
    #当前broker的主机名,可以是IP地址
    host.name=192.168.1.7
    
    #创建topic时,默认的分区数量
    num.partitions=1
    
    #基于时间删除消息,与基于分区容量删除消息,为两种删除策略,哪种先达到,哪种就触发
    log.retention.hours=168
    
    #基于分区容量删除消息
    log.retention.bytes=1073741824
    
    #partition级别的复制数量
    default.replication.factor = 1
    
    #zookeeper的连接IP及端口
    zookeeper.connect=localhost:2181
    

    3 Kafka的常用命令

    #启动zookeeper服务器
    bin/zookeeper-server-start.sh config/zookeeper.properties
    
    #启动kafka server
    bin/kafka-server-start.sh config/server.properties
    
    #创建topic
    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
    
    #list topic
    bin/kafka-topics.sh --list --zookeeper localhost:2181
    
    #向broker发送数据
    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
    
    #从broker拉取数据
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
  • 相关阅读:
    hdu 1863 畅通工程
    poj 2524 Ubiquitous Religions
    04 Linux终端命令01
    05 linux中yum源报错
    Filterg过滤器和Listener监听器
    03 Centos的文件目录、远程连接工具及快照操作
    02 安装虚拟机以及设置虚拟机网卡信息
    01VM虚拟机介绍及配置虚拟机网卡信息
    Jstl表达式
    EL表达式
  • 原文地址:https://www.cnblogs.com/coderland/p/5903037.html
Copyright © 2020-2023  润新知