美文网首页
kafka学习00-Kafka相关概念

kafka学习00-Kafka相关概念

作者: 活英雄 | 来源:发表于2019-06-01 10:39 被阅读0次

    1.2.1 消息

    消息:字节数据组。消息有一个可选的元数据称为键,也是一个字节数组,在分区时会对键取hash值再模以分区数得到这条数据存进哪个分区。
    

    1.2.2 模式

    可以理解为数据的格式:如:json、xml、强类型模式
    Avro提供了一种紧凑的序列化格式,模式和消息体是分开的,支持强烈型和模式进化。
    数据格式要一致才能解除生产者和消费者之间的耦合。
    

    1.2.3 主题和分区

    主题:可以把一个主题看成是从生产者流到消费者的一条数据流。
    分区:一个主题可以有多个分区,数据被追加到这些分区,单个分区内到数据是有序的。
        分区的好处是数据冗余备份和数据吞吐的伸缩性,分区是负载均衡和冗余备份的单位。
    

    1.2.4 生产者和消费者

    生产者:负责把数据写入主题。默认是均衡的把消息写到所有分区,也可以指定分区器,通过消息的键生成一个散列值,将其映射到指定分区上。
    消费者:读取主题数据。
            偏移量:消费者通过检查偏移量来记录已经读区过的消息,每个分区内的偏移量都是唯一、递增的。每个分区最后读取的偏移量被保存到zookeeper或Kafka中
    消费者群组:一个消费者组对应一个主题。一个主题内的一个分区只能被一个消费者所有,但一个消费者可以拥有多个分区。
            这样设计的好处在于:
                1. 保证了在一个组内,每条消息只被处理一次。
                2. 这种方式让消费者组可以负载均衡的消费大量消息的主题,而且还具有容灾的特性。
    

    1.2.5 broker和集群

    broker:一个独立的Kafka server就是一个broker
            对生产者作用:接收消息->设置偏移量->提交存盘
            对消费者作用:响应读取消息的请求
            性能:数千分区、每秒百万级别数据
            对于分区:一个分区可以存储到多个broker上,其中一个是master负责读写消息,其它的salve负责复制数据备份,master挂了会有一个顶上
    集群:集群内会有一个broker作为controller的角色,负责分配分区给broker和监控broker
    保留消息:保留一段时间、保留一定大小、紧凑型日志(只有最后一个带有特定键的消息会被保留)
    

    1.3选择kafka的理由

    1. 支持多个生产者同时写如一个主题,消费者可以获得统一主题数据
    2. 可以重复消费一个主题,一个主题可以由多个消费者并发消费,每个分区只能指定一个消费者,保证了每条消费只被消费一次。
    3. 基于磁盘的存储。让消息可以保留、不会阻塞在生产端、消费端可重复消费、消费者离线也不会丢数据
    4. 伸缩性好,broker可以从一个逐步扩展到多个
    

    相关文章

      网友评论

          本文标题:kafka学习00-Kafka相关概念

          本文链接:https://www.haomeiwen.com/subject/tcuotctx.html