zoukankan      html  css  js  c++  java
  • Kafka的基本概念

    Kafka的前身是由LinkedIn开源的一款产品,2011年初开始开源,加入了 Apache 基金会,2012年从 Apache Incubator 毕业变成了 Apache 顶级开源项目。

    Topic

    消息的主题、队列,每一个消息都有它的topic,Kafka通过topic对消息进行归类。Kafka中可以将Topic从物理上划分成一个或多个分区(Partition),每个分区在物理上对应一个文件夹,以”topicName_partitionIndex”的命名方式命名,该dir包含了这个分区的所有消息(.log)和索引文件(.index),这使得Kafka的吞吐率可以水平扩展。

    Partition

    每个分区都是一个 顺序的、不可变的消息队列, 并且可以持续的添加;分区中的消息都被分了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。

    producer在发布消息的时候,可以为每条消息指定Key,这样消息被发送到broker时,会根据分区算法把消息存储到对应的分区中(一个分区存储多个消息),如果分区规则设置的合理,那么所有的消息将会被均匀的分布到不同的分区中,这样就实现了负载均衡。Partition概念对理解kafka很重要,要注意以下几点: 

    • 每一个Topic被切分为多个Partitions

    • 消费者数据要小于等于Partition的数量

    • Broker Group中的每一个Broker保存Topic的一个或多个Partitions

    • Consumer Group中的仅有一个Consumer读取Topic的一个或多个Partions,并且是唯一的Consumer。因此消费群组中多余分区数的消费者会空闲没用,所以一般消费者数要小于等于分区数。


    Broker

    Kafka server,用来存储消息,Kafka集群中的每一个服务器都是一个Broker,消费者将从broker拉取订阅的消息。

    • 当集群中有Broker挂掉的时候,系统可以主动的使用Replicas提供服务。

    • 系统默认设置每一个Topic的Replication的系数为1,可以在创建Topic的时候单独设置。

    • Replication的基本单位是Topic的Partition。增加容错性与可扩展性。

    • 所有的读和写都从Leader进,Followers只是作为备份。

    • Follower必须能够及时的复制Leader的数据。

    Producer

    向Kafka发送消息,生产者会根据topic分发消息。生产者也负责把消息关联到Topic上的哪一个分区。最简单的方式从分区列表中轮流选择。也可以根据某种算法依照权重选择分区。算法可由开发者定义。

    Cousumer

    Consermer实例可以是独立的进程,负责订阅和消费消息。消费者用consumerGroup来标识自己。同一个消费组可以并发地消费多个分区的消息,同一个partition也可以由多个consumerGroup并发消费,但是在consumerGroup中一个partition只能由一个consumer消费。 

    CousumerGroup

    Consumer Group:同一个Consumer Group中的Consumers,Kafka将相应Topic中的每个消息只发送给其中一个Consumer。

  • 相关阅读:
    机器学习中常见的优化算法
    linux端安装Anaconda,方便远端访问jupyter
    核心③自动分号插入
    setTimeout 和 setInterval
    核心②undefined 和 null
    类型④类型转换
    核心①为什么不要使用 eval
    类型③instanceof 操作符
    类型①相等与比较
    类型②typeof 操作符
  • 原文地址:https://www.cnblogs.com/doit8791/p/11306836.html
Copyright © 2011-2022 走看看