• Kafka简介


    1.Kafaka主要设计目标
    • 以时间复杂度O(1)的方式提供消息持久化的能力,即使对TB级数据也能保证常数时间的访问性能。
    • 高吞吐率,即使在非常廉价的商用机器上也能做到单机每秒100K条消息的传输。
    • 支持Kafka Server间消息分区记忆分布式消费
    • 支持离线数据处理和事实数据处理
    • Scale out:支持在线水平扩展
    2.发布-订阅模式
    kafka采用了发布-订阅的消息模式来传递模式。在发布-订阅消息中,消息被持久化到一个topic中,与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中的所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者被称为发布者,消费者称为订阅者。发布者发送数据到topic的消息,只有订阅了topic的订阅者才会收到消息。

    3.1 Broker
    Kafka集群包含一个或者多个服务器,服务器节点称为Broker。
    Broker存储Topic的数据,
    ► 如果某个Topic有N个Partition,集群有N个Broker,那么每个Broker存储该topic的一个Partition。
    ► 如果某个topic有N个Partition,集群有N+m个Broker,那么N个broker存储该topic的一个Partition,剩余的M个Broker不存储该Topic的Partition数据。
    ► 如果某个Topic有N个Partition,集群中Broker的数目少于N个,那么一个Broker存储该Topic的一个或者多个Partition,在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致Kafka集群数据不均衡。
    3.2 Topic
    每条发布到Kafka集群中的小时都有一个类别,这个类别被称为Topic。物理上不同的Topic的消息分开存储,逻辑上一个Topic的消息虽然保存在一个或者多个broker上,但是用户只需要制定消息的Topic即可,生产或者消费数据二不必关心数据存储与何处。(有点类似于数据库中的表名)
    3.3Partition
    Topic中的数据分割为一个或者多个partition。每个Topic至少有一个Partition。每个Partition中的数据使用多个segment文件存储。Partition中的数据是有序的,不同Partition间的数据丢失了数据的顺序。如果Topic有多个Partition消费数据时就不能保证数据的顺序,在需要严格保证消息的消费顺序的场景下,需要将Partition数目设为1.
    3.4 Producer
    生产者既数据的发布者,该角色将消息发布到Kafka的Topic中。Broker接受到生产者发送的消息后,Broker将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息,存储到一个partition中,生产者也可以指定数据存储的Partition。
    3.5 Consumer
    消费者可以从broker中读取数据。消费者可以消费多个Topic中的数据。
    3.6 Consumer Group
    每一个Consumer属于一个特定的Consumer Group。可以为一个Consumer指定Group Name.若不指定Group Name则属于默认的Group。
    3.7 Leader
    每个Partition有多个副本,其中有且仅有一个Leader。Leader是当前负责数据读写的Partition。
    3.8 Follower
    Follower跟随Leader,所有写请求都是通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步,如果Leader失效,则从Follower中选举一个新的Leader。当Follower与Leader挂掉、卡住或者同步太慢,Leader会吧这个Follower从“in sync relicas”(ISR)列表中删除,重新创建一个Follower。

  • 相关阅读:
    主流ORM对比分析,莫人云亦云
    避免远程调用中固有的滞后时间问题的最佳方法是进行更少的调用,并让每个调用传递更多的数据。
    挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆
    项目成本管理记忆口诀:
    总是差和自由时差
    成本基线
    php htmlentities函数的问题
    .NET简谈事务、分布式事务处理
    Startup配置类 居然又是约定
    项目管理的九大只是领域输入,工具和输出
  • 原文地址:https://www.cnblogs.com/VARForrest/p/14821841.html
Copyright © 2020-2023  润新知