当前位置: 首页 > wzjs >正文

有哪些企业可以做招聘的网站有哪些内容百度推广怎么弄

有哪些企业可以做招聘的网站有哪些内容,百度推广怎么弄,wordpress快速编辑添加多个标签,为什么做电商网站Kafka 消息不丢失:全方位保障策略 引言 在现代分布式系统中,Kafka 作为一款高性能、高可扩展性的消息队列,被广泛应用于数据传输、日志收集、实时流处理等场景。然而,消息丢失是使用 Kafka 时可能面临的一个严重问题&#xff0c…

在这里插入图片描述

Kafka 消息不丢失:全方位保障策略

引言

在现代分布式系统中,Kafka 作为一款高性能、高可扩展性的消息队列,被广泛应用于数据传输、日志收集、实时流处理等场景。然而,消息丢失是使用 Kafka 时可能面临的一个严重问题,这可能会导致数据不一致、业务逻辑错误等后果。因此,确保 Kafka 消息不丢失至关重要。本文将从生产者、Broker 和消费者三个层面详细介绍保障 Kafka 消息不丢失的方法。

生产者层面保障

确认机制(acks)

生产者在发送消息时,acks 参数决定了消息的确认机制,它有三个可选值:

  • acks = 0:生产者发送消息后,不等待 Broker 的确认,直接认为消息发送成功。这种方式虽然吞吐量最高,但存在消息丢失的风险。因为如果消息在传输过程中丢失,生产者无法得知。
  • acks = 1:生产者发送消息后,等待 Leader 分区的确认。只要 Leader 分区接收到消息并写入本地日志,就会给生产者返回确认信息。此方式能保证消息在 Leader 分区不丢失,但如果 Leader 分区在将消息同步到 Follower 分区之前发生故障,可能会导致消息丢失。
  • acks = all 或 -1:生产者发送消息后,等待 Leader 分区和所有 ISR(In - Sync Replicas,同步副本集合)中的 Follower 分区都确认收到消息后,才认为消息发送成功。这种方式能最大程度保证消息不丢失,但会降低吞吐量。

以下是 Java 代码示例:

import org.apache.kafka.clients.producer.*;
import java.util.Properties;public class KafkaProducerExample {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");// 设置 acks 为 allprops.put("acks", "all"); Producer<String, String> producer = new KafkaProducer<>(props);ProducerRecord<String, String> record = new ProducerRecord<>("test - topic", "key", "value");producer.send(record, new Callback() {@Overridepublic void onCompletion(RecordMetadata metadata, Exception exception) {if (exception != null) {System.err.println("Failed to send message: " + exception.getMessage());} else {System.out.println("Message sent successfully. Offset: " + metadata.offset());}}});producer.close();}
}

重试机制

生产者可以设置 retries 参数来指定消息发送失败时的重试次数。当消息发送失败时,生产者会自动进行重试,直到达到重试次数上限。示例代码如下:

props.put("retries", 3); 

Broker 层面保障

多副本机制

Kafka 通过多副本机制保证消息的可靠性。每个分区可以有多个副本,其中一个是 Leader 副本,其余是 Follower 副本。生产者和消费者只与 Leader 副本进行交互,Follower 副本会从 Leader 副本同步消息。
通过配置 replication.factor 参数来指定每个分区的副本数,建议将其设置为大于 1 的值,例如在 server.properties 中设置:

default.replication.factor = 3

最小同步副本数(min.insync.replicas)

设置 min.insync.replicas 参数可以指定 ISR 集合中至少需要多少个副本同步消息,生产者才能认为消息发送成功。例如:

min.insync.replicas = 2

acks = all 时,只有当 ISR 集合中至少有 min.insync.replicas 个副本同步了消息,生产者才会收到确认信息。

刷盘策略

可以通过调整 log.flush.interval.messageslog.flush.interval.ms 参数来控制消息刷盘的频率。例如:

# 每 10000 条消息刷一次盘
log.flush.interval.messages = 10000
# 每 1000 毫秒刷一次盘
log.flush.interval.ms = 1000

消费者层面保障

手动提交偏移量

消费者可以通过设置 enable.auto.commitfalse 来关闭自动提交偏移量功能,然后手动提交偏移量。只有在消息处理完成后,才提交偏移量,这样可以避免在消息处理过程中出现异常导致消息丢失。

以下是 Java 代码示例:

import org.apache.kafka.clients.consumer.*;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;public class KafkaConsumerExample {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("group.id", "test - group");props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");// 关闭自动提交偏移量props.put("enable.auto.commit", "false"); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);consumer.subscribe(Collections.singletonList("test - topic"));try {while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));for (ConsumerRecord<String, String> record : records) {System.out.printf("Received message: key = %s, value = %s%n", record.key(), record.value());// 处理消息}// 手动提交偏移量consumer.commitSync(); }} finally {consumer.close();}}
}

处理消费异常

在消费者处理消息的过程中,需要捕获并处理可能出现的异常,确保在异常情况下不会丢失消息。例如,在处理消息时可以使用事务机制,保证消息处理的原子性。

总结

要确保 Kafka 消息不丢失,需要从生产者、Broker 和消费者三个层面进行综合考虑和配置。生产者通过合理设置确认机制和重试机制,Broker 利用多副本、最小同步副本数和刷盘策略,消费者采用手动提交偏移量和异常处理等方法,全方位保障消息的可靠传输。在实际应用中,需要根据具体的业务场景和性能要求,灵活调整这些配置,以达到消息可靠性和系统性能的平衡。

http://www.dtcms.com/wzjs/508074.html

相关文章:

  • 免费网站制作app上海seo关键词优化
  • 网站建设业务需求文档刚刚中国宣布重大消息
  • 做网站技术选择什么软件引流客源最快
  • 网站一般宽度重庆森林经典台词梁朝伟
  • 网站内容做淘宝店铺链接影响排名吗数据分析工具
  • 网站建设需要经过哪几个步骤怎么制作网站?
  • 找单位做网站需要注意什么合肥关键词排名
  • 有什么可以做兼职的正规网站广州优化公司哪家好
  • 无锡做网站的公司seo关键词排名优化怎么收费
  • 网站建站素材网络推广哪个平台好
  • 自动化的网站建设如何创建自己的网址
  • 沧州自适应网站建设网站制作的流程
  • 滨江道做网站公司网站结构有哪几种
  • 旅游网站ppt应做的内容网站排名软件
  • 建成区违法建设治理网站商丘关键词优化推广
  • 网站做接口怎么做宁波企业seo外包
  • 微网站 建设方案系统优化的例子
  • 企业网站建设的收获快推达seo
  • 网站建设的优势大量微信群推广代发广告
  • wordpress阿里云虚拟主机安装长沙官网seo分析
  • cpanel转移网站在百度上怎么发布广告
  • 如何建企业网站软文推广有哪些
  • 网站后台模板网络营销的主要内容包括
  • 免费建站网站制作模板西安网页设计
  • bootstrap怎么做网站找资源的关键词有哪些
  • 做我的世界背景图的网站建设网站流程
  • 网站建设与管理学的是什么百度怎么投放广告
  • 网站怎么解析中国培训网是国家公认的吗
  • 深圳网站建设哪个公司好镇江关键字优化公司
  • ps做网站边框实时新闻