zoukankan      html  css  js  c++  java
  • kafka简介和术语

    1 kafka介绍

    Kafka是一款性能非常好的并且支持分布式的消息队列中间件
    由于它的高吞吐特性,Kafka通常使用在大数据领域,如日志收集平台
    Kafka是一个流处理平台,因为它在工作中就像是一个可以支撑高吞吐量的管道,数据像水一样流进去,然后另外一端再去读取这些数据
    我们就可以把Kafka看作是一种特殊的消息队列中间件

    kafka优点:

    它被设计为一个分布式系统,易于向外扩展;
    它同时为发布和订阅提供高吞吐量;
    它支持多订阅者,当失败时能自动平衡消费者;
    它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序

    2 术语

    Broker            
    Kafka集群包含一个或多个服务器,每个服务器被称为broker,保存在zookeeper临时节点/brokers/ids下
    
    Topic 每条发布到Kafka集群的消息都有一个分类,这个类别被称为Topic(主题),保存在zookeeper临时节点
    /brokers/topics下
    Producer 消息的生产者,负责生产消息并发送到kafka broker
    Consumer 消息的消费者,负责从kafka broker拉取数据,并消费已发布的消息,保存在zookeeper临时节点
    /consumers下
    Partition 每个Topic包含一个或多个Partition,每个partition都是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)
    Consumer Group 消费者组,可以给每个Consumer指定消费组,若不指定消费者组,则属于默认的group
    Message 消息,通信的基本单位,每个producer可以向一个topic发布一些消息

    topic和partition

    Kafka中的topic是以partition的形式存放,每个topic包含一个或多个partition
    partition的数量一定要大于同时运行的consumer的数量,但要小于等于集群broker的数量,这样消息数据就可以均匀的分布在各个broker中
    每个partition在物理上对应一个文件夹,该文件夹下存储这个partition的所有消息和索引文件
    每个partition(文件夹)中有多个大小相等的segment(段)数据文件,每个segment的大小是相同的,但是每条消息的大小可能不相同,因此segment<br/>数据文件中消息数量不一定相等
    segment数据文件有两个部分组成,分别为index file和data file,此两个文件是一一对应,成对出现,后缀”.index“和“.log”分别表示为segment索引文件和数据文件

    3 produce生产写入

    Producer采用推(push)模式将消息发送到broker,每条消息都被追加(append)到分区(partition)中,属于顺序写磁盘(顺序写磁盘效率比随机写要高,保障kafka吞吐率,在读取使用的时候读取速度也会更快)
    发送消息到broker时,会根据Paritition机制选择将其存储到哪一个Partition
    如果Partition机制设置的合理,所有消息都可以均匀分布到不同的Partition里,这样就实现了数据的负载均衡
    如果一个Topic对应一个文件,那这个文件所在的机器I/O将会成为这个Topic的性能瓶颈,而有了Partition后,不同的消息可以并行写入不同broker的不同Partition里,极大的提高了吞吐率
    
    
    流程: producer先从zookeeper的“
    /brokers/topics/../partitions/../state”节点找到该partition的leader producer将消息发送给该leader leader将消息写入本地log followers从leader pull消息,写入本地log后向leader发送ACK leader收到所有ISR中的replication的ACK后,增加HW(high watermark,最后commit的offset)并向producer发送ACK

    4 consume消费

    Kafka发布消息通常有两种模式:队列模式(queuing)和发布/订阅模式(publish-subscribe)
    队列模式:只有一个消费组,而这个消费组有多个消费者,一条消息只能被这个消费组中的一个消费者所消费
    发布/订阅模式:可有多个消费组,每个消费组只有一个消费者,同一条消息可被多个消费组消费
  • 相关阅读:
    Windows XP上可以安装的SQL Server 2008版本
  • 原文地址:https://www.cnblogs.com/gudanaimei/p/13282677.html
Copyright © 2011-2022 走看看