最好的营销型网站建设公司,外贸网站 建站,wordpress主题dux主题5.2版,网红营销1.数据可靠
• 0#xff1a;生产者发送过来的数据#xff0c;不需要等数据落盘应答。 风险#xff1a;leader挂了之后#xff0c;follower还没有收到消息。。。。
• 1#xff1a;生产者发送过来的数据#xff0c;Leader收到数据后应答。
风险#xff1a;leader应答…
1.数据可靠
• 0生产者发送过来的数据不需要等数据落盘应答。 风险leader挂了之后follower还没有收到消息。。。。
• 1生产者发送过来的数据Leader收到数据后应答。
风险leader应答完成之后还没有开始同步副本。。。。 生产者发送过来的数据Leader和ISR队列里面 的所有节点收齐数据后应答。 可靠性总结 acks0生产者发送过来数据就不管了可靠性差效率高 acks1生产者发送过来数据Leader应答可靠性中等效率中等 acks-1生产者发送过来数据Leader和ISR队列里面所有Follwer应答可靠性高效率低 在生产环境中acks0很少使用acks1一般用于传输普通日志允许丢个别数据acks-1一般用于传输和钱相关的数据 对可靠性要求比较高的场景。 // 设置 acksproperties.put(ProducerConfig.ACKS_CONFIG, all);// 重试次数 retries默认是 int 最大值2147483647properties.put(ProducerConfig.RETRIES_CONFIG, 3);
2.数据去重 3.生产者事务 说明开启事务必须开启幂等性。 package com.atguigu.kafka.producer;import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;import java.util.Properties;public class CustomProducerTransaction {public static void main(String[] args) {// 1. 创建 kafka 生产者的配置对象Properties properties new Properties();// 2. 给 kafka 配置对象添加配置信息bootstrap.serversproperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,hadoop100:9092);// key,value 序列化必须key.serializervalue.serializerproperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,org.apache.kafka.common.serialization.StringSerializer);properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,org.apache.kafka.common.serialization.StringSerializer);properties.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG,tranactional_id_01);// 3. 创建 kafka 生产者对象KafkaProducerString, String kafkaProducer newKafkaProducerString, String(properties);kafkaProducer.initTransactions();kafkaProducer.beginTransaction();// 4. 调用 send 方法,发送消息try{for (int i 0; i 5; i) {kafkaProducer.send(newProducerRecord(first,atguigu i));int i1 1 / 0;}kafkaProducer.commitTransaction();}catch (Exception e){kafkaProducer.abortTransaction();}finally {// 5. 关闭资源kafkaProducer.close();}}
}