当前位置:   article > 正文

kafka(八):Kafka高可用性_kafka可用性

kafka可用性

  1. Kafka Partition Replication

    功能:增加Topic分区的可用性
    每个Partition分为leader和follower两部分(前提是replication factor大于1的)

  1.         eg: Topic: hadoop2 Partition: 0    Leader: 3       Replicas: 3,0,1 Isr: 3,0,1 
  2.           ====> leader是brokerid为3的服务,Replicas:复制节点3,0,1; Isr: 3,0,1 指定当前partition活跃的partition(leader + 活跃follower)

     建议:一般情况下,每个分区的replication factor为3-5比较合适;通过shell脚本监控分区的变化,当有效分区数量过少的时候,通知开发人员手动参与进去修改分区节点数


 2. Kafka Leader Election

    方式:通过ISR来实现Leader的选择。当leader宕机的时候,会从isr列表中选择一个节点来进行恢复。
    原则:
            (1)当一个partition宕机或者落后数据太多,leader会将该partition的broker标识符从isr列表中删除;也就是只有isr中的节点才有可能成为主节点
            (2) 当leader宕机的时候,其它有效的partition会在zk中创建一个文件夹目录(只会有一个follower节点创建成功),创建成功的follower节点成为新的leader节点
            (3)当原来的leader节点重新恢复后,会成为一个新的follower节点,添加到ISR列表中(会同步数据)
      实现前提:内部是基于zk的watch机制来实现通知以及文件夹的创建的 

  3. Message Delivery Semantics

     消息传输协议/类型 ===> 是对于消息系统中消息传递可靠性保障的一个定义
    (1)三种类型的定义:【kafka仅有前两种】
          -1. At most once: 最多发送一次,允许数据丢失,但是不允许的数据重复的情况下使用该方式
          -2. At least once: 最少发送一次,允许数据重复,但是不允许数据丢失的情况下使用该方式
          -3. Exactly once: 仅发送一次数据,但是不允许存储数据丢失和重复的情况,有可能存储数据发送失败的情况
          
    (2)Kafka中实现数据传输的可靠性方式:
            数据存储过程中的可靠性保证:
            通过Kafka Partition Replication以及Kafka Leader Election来保证的
    (3)Producer端:
        功能:生产者将数据发送给kafka
        可靠性实现方式:通过参数request.required.acks来决定的,acks是生产者等待kafka集群的接收确认返回值,主要有三个参数:

  1. 0:这意味着生产者producer不等待来自broker同步完成的确认继续发送下一条(批)消息。此选项提供最低的延
  2. 迟但最弱的耐久性保证(当服务器发生故障时某些数据会丢失,如leader已死,但producer并不知情,发出
  3. 去的信息broker就收不到)。
  4. 1:这意味着producer在leader已成功收到的数据并得到确认后发送下一条message。此选项提供了更好的耐久性
  5. 为客户等待服务器确认请求成功(被写入死亡leader但尚未复制将失去了唯一的消息)。
  6. -1:这意味着producer在follower副本确认接收到数据后才算一次发送完成。
  7. 此选项提供最好的耐久性,我们保证没有信息将丢失,只要至少一个同步副本保持存活。

三种机制,性能依次递减 (producer吞吐量降低),数据健壮性则依次递增。


    (4)Consumer端:
        功能:消费Kafka中对应Topic中的数据
        可靠性保证:
          每个Parition中的数据是有序的,每条数据在每个Partiiton中都存在一个offset偏移量(数据是按照offset递增的顺序排列的)
          Kafka中的数据是否被某个Consumer消费,就根据该Consumer的Offset的值决定数据是否会被消费;
                        offset表示了consumer消费偏移量小于offset的数据,大于等于offset的数据是没有被消费的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/781289
推荐阅读
相关标签
  

闽ICP备14008679号