zoukankan      html  css  js  c++  java
  • kafka精确一次

    kafka通过幂等性(Idempotence)事务(Transaction)实现消息精确一次(exactly once)的可靠性保障。

    幂等性 Producer

    设置props.put(“enable.idempotence”, ture),或 props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true)

    底层原理:用空间去换时间的优化思路,即在 Broker 端多保存一些字段。当 Producer 发送了具有相同字段值的消息后,Broker 能够自动知晓这些消息已经重复了,于是可以在后台默默地把它们“丢弃”掉。

    作用范围:它只能保证单分区上的幂等性,即一个幂等性 Producer 能够保证某个主题的一个分区上不出现重复消息,它无法实现多个分区的幂等性。其次,它只能实现单会话上的幂等性,不能实现跨会话的幂等性。

    多分区以及多会话上的消息无重复,需要依赖事务型 Producer.

    事务型 Producer

    事务型 Producer 能够保证将消息原子性地写入到多个分区中。这批消息要么全部写入成功,要么全部失败。

    设置事务型 Producer 的方法:

    • 开启enable.idempotence = true

    • 设置 Producer 端参数 transactional.id。最好为其设置一个有意义的名字。

    producer.initTransactions();
    try {
        producer.beginTransaction();
        producer.send(record1);
        producer.send(record2);
        producer.commitTransaction();
    } catch (KafkaException e) {
        producer.abortTransaction();
    }
    

    isolation.level支持read_uncommittedread_committed

  • 相关阅读:
    NOIP 模拟 $94; m 超级加倍$
    NOIP 模拟 $94; m 欢乐豆$
    NOIP 模拟 $94; m 叁仟柒佰万$
    NOIP 模拟 $94; m 开挂$
    NOIP 模拟 $92; m 优美的旋律$
    NOIP 模拟 $92; m 翻转游戏$
    NOIP 模拟 $92; m 石子合并$
    NOIP 模拟 $90; m 校门外歪脖树上的鸽子$
    NOIP 模拟 $90; m 混乱邪恶$
    NOIP 模拟 $90; m 快速排序$
  • 原文地址:https://www.cnblogs.com/hainingwyx/p/14612555.html
Copyright © 2011-2022 走看看