zoukankan      html  css  js  c++  java
  • kafka核心概念

    Broker

    一台kafka服务器就是一个broker。一个集群由多个broker组成

     

    Topic
    Topic 就是数据主题,kafka建议根据业务系统将不同的数据存放在不同的topic中!
    Kafka中的Topics总是多订阅者模式,
    一个topic可以拥有一个或者多个消费者来订阅它的数据。
    一个大的Topic可以分布式存储在多个kafka broker中!
    Topic可以类比为数据库中的库!

    Partition

    每个topic可以有多个分区,通过分区的设计,topic可以不断进行扩展!即一个Topic的多个分区分布式存储在多个broker!
    此外通过分区还可以让一个topic被多个consumer进行消费!以达到并行处理!分区可以类比为数据库中的表!
    kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。

    Offset

    数据会按照时间顺序被不断第追加到分区的一个结构化的commit log中!每个分区中存储的记录都是有序的,且顺序不可变!
    这个顺序是通过一个称之为offset的id来唯一标识!因此也可以认为offset是有序且不可变的! 
    在每一个消费者端,会唯一保存的元数据是offset(偏移量),即消费在log中的位置.偏移量由消费者所控制。
    通常在读取记录后,消费者会以线性的方式增加偏移量,但是实际上,由于这个位置由消费者控制,所以消费者可以采用任何顺序来消费记录。
    例如,一个消费者可以重置到一个旧的偏移量,从而重新处理过去的数据;也可以跳过最近的记录,从
    "现在"开始消费。 这些细节说明Kafka 消费者是非常廉价的—消费者的增加和减少,对集群或者其他消费者没有多大的影响。比如,你可以使用命令行工具,对一些topic内容执行 tail操作,并不会影响已存在的消费者消费数据。

    持久化

    Kafka 集群保留所有发布的记录—无论他们是否已被消费—并通过一个可配置的参数——保留期限来控制。举个例子, 如果保留策略设置为2天,一条记录发布后两天内,可以随时被消费,两天过后这条记录会被清除并释放磁盘空间。
    Kafka的性能和数据大小无关,所以长时间存储数据没有什么问题。

    副本机制

    日志的分区partition (分布)在Kafka集群的服务器上。每个服务器在处理数据和请求时,共享这些分区。每一个分区都会在已配置的服务器上进行备份,确保容错性。
    每个分区都有一台 server 作为 “leader”,零台或者多台server作为 follwers 。leader server 处理一切对 partition (分区)的读写请求,
    而follwers只需被动的同步leader上的数据。当leader宕机了,followers 中的一台服务器会自动成为新的 leader。
    通过这种机制,既可以保证数据有多个副本,也实现了一个高可用的机制! 基于安全考虑,每个分区的Leader和follower一般会错在在不同的broker
    !

    Producer

    消息生产者,就是向kafka broker发消息的客户端。生产者负责将记录分配到topic的指定 partition(分区)中

    Consumer

    消息消费者,向kafka broker取消息的客户端。每个消费者都要维护自己读取数据的offset。低版本0.9之前将offset保存在Zookeeper中,0.9及之后保存在Kafka的“__consumer_offsets”主题中

    Consumer Group

    每个消费者都会使用一个消费组名称来进行标识。同一个组中的不同的消费者实例,可以分布在多个进程或多个机器上! 
    如果所有的消费者实例在同一消费组中,消息记录会负载平衡到每一个消费者实例(单播)。即每个消费者可以同时读取一个topic的不同分区!
    如果所有的消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程(广播)。
    如果需要实现广播,只要每个consumer有一个独立的组就可以了。要实现单播只要所有的consumer在同一个组。
    一个topic可以有多个consumer group。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。
  • 相关阅读:
    leetcode[164] Maximum Gap
    leetcode[162] Find Peak Element
    leetcode[160] Intersection of Two Linked Lists
    leetcode[156] binary tree upside down
    leetcode[155] Min Stack
    leetcode Find Minimum in Rotated Sorted Array II
    leetcode Find Minimum in Rotated Sorted Array
    leetcode Maximum Product Subarray
    ROP
    windbg bp condition
  • 原文地址:https://www.cnblogs.com/angdh/p/15115168.html
Copyright © 2011-2022 走看看