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

南通优化网站怎么收费成都广告公司地址电话

南通优化网站怎么收费,成都广告公司地址电话,广州网站建设哪里买,网站策划方案目标今天给大家分享一个在面试中经常遇到的问题#xff1a;Kafka 消息丢失该如何处理#xff1f; 这个问题啊#xff0c;看似简单#xff0c;其实里面藏着很多“套路”。 来#xff0c;咱们先讲一个面试的“真实”案例。 面试官问#xff1a;“Kafka 消息丢失如何处理#x…今天给大家分享一个在面试中经常遇到的问题Kafka 消息丢失该如何处理 这个问题啊看似简单其实里面藏着很多“套路”。 来咱们先讲一个面试的“真实”案例。 面试官问“Kafka 消息丢失如何处理” 小明一听反问“你是怎么发现消息丢失了” 面试官顿时一愣沉默了片刻后可能有点不耐烦说道“这个你不用管反正现在发现消息丢失了你就说如何处理。” 小明一头雾水“问题是都不知道怎么丢的处理起来岂不是瞎搞吗” 画面一黑面试官离开了会议室留小明一个人凌乱在风中…… 这段子虽然搞笑但实际工作中确实“消息丢失”这个事儿有点让人摸不着头脑。 大家有没有想过消息丢失的定义到底是什么其实发现消息丢失的过程才是处理问题的关键 在用 Pub/Sub 类中间件比如 Kafka 或 RocketMQ 时消息丢失可能有很多原因包括生产者、消费者和网络传输等各个环节。 我们今天就结合实际工作中遇到的情况聊聊到底怎么发现消息丢失又该怎么处理。 首先我们要搞清楚消息丢失的几种典型场景 1.生产者消息发送失败这个比较简单如果生产者发消息时网络抖动、服务宕机或 Kafka broker 挂了那消息就丢了。 这时候生产者通常会重试但是如果重试策略不当还是可能丢消息。 2.消费者消费消息失败最常见的是消费者拉取了消息但是业务处理失败或者消费后没有提交 offset导致消息“看似”消费了实际根本没处理。 这种情况不算真正的消息丢失但你业务数据不一致这锅还是要 Kafka 来背。 3. 网络异常导致消息丢失有时候消息发送成功了但是因为网络问题导致消费者没能拉到这些消息这类情况更难排查。 OK分析了几种可能性接下来看看有哪些方法可以帮助我们及时发现这些问题。 1.监控和告警系统 监控是最基础的保障手段。一般来说Kafka 提供了很多指标可以监控比如生产端和消费端的吞吐量、消息积压lag情况、消费者组的 offset 等等。 通过这些监控指标一旦消费端的消息积压开始异常增长或者 offset 停滞不前就说明很可能有消息丢失了。 很多公司会用 Prometheus Grafana 来做监控和可视化再配合告警系统如 Alertmanager实时提醒。 比如可以监控 kafka_consumer_lag 这个指标一旦消息积压超过预设阈值就触发告警。 # Prometheus 配置监控 Kafka 消费者积压 kafka_consumer_lag{consumer_groupyour-consumer-group, topicyour-topic} 100 在工作中这类告警往往是消息丢失的第一个信号反应速度极快。 2.消息追踪机制 消息追踪就像在每个消息上打个“追踪码”确保每条消息都能被追踪到。 具体做法是生产者在发送每条消息时生成一个唯一的 message_id消费者在消费时同样记录消费的 message_id。 通过对比生产端和消费端的 ID就可以发现有没有消息“掉队”了。 在实际应用中通常会通过日志来记录这些 message_id并定期检查对账保证所有消息都正确处理了。 // 生产者发送消息时生成 message_id String messageId UUID.randomUUID().toString(); ProducerRecordString, String record new ProducerRecord(your-topic, messageId, messageContent); producer.send(record);// 消费者消费消息时记录 message_id public void consumeMessage(ConsumerRecordString, String record) {String messageId record.key(); // 获取 message_id// 将 message_id 存储到日志或数据库中用于后续追踪log.info(Consumed message with ID: {}, messageId); } 3.消息确认机制 Kafka 本身有个很经典的机制就是手动提交offset。消费者在处理完消息后才提交消费位置的 offset。 如果消费失败了不提交 offsetKafka 就会重新分配这条消息避免消息丢失。 很多时候消息丢失的“锅”其实是消费者自己在消费时出了问题明明没处理完却偷偷提交了 offset让 Kafka 以为消息已经处理完毕了。 手动提交 offset 就能很好地避免这种情况。 public void consumeMessages() {ConsumerRecordsString, String records consumer.poll(Duration.ofMillis(100));for (ConsumerRecordString, String record : records) {try {// 处理消息逻辑processMessage(record);// 成功处理后提交 offsetconsumer.commitSync();} catch (Exception e) {// 处理失败不提交 offsetKafka 会重试log.error(Failed to process message, will retry., e);}} } ‍4.消息重试和补偿机制 为了解决偶发性的消费失败很多公司会为 Kafka 消费端加一个重试机制。 当消息处理失败时重新将消息放回队列或者放到一个死信队列Dead Letter Queue, DLQ里然后专门处理这些异常消息。 // 如果消息处理失败将其放回死信队列 try {processMessage(record); } catch (Exception e) {producer.send(new ProducerRecord(dlq-topic, record.key(), record.value())); } 这个方式虽然不能彻底避免消息丢失但能保证消息不会轻易丢失特别是一些重要业务场景中消息的可靠性至关重要。 5.多副本存储 Kafka 还有一个核心功能就是多副本机制即消息在多个 broker 上都有副本。这样即使某个 broker 挂了其他副本也能提供消息。 通过设置 replication.factor 参数我们可以指定 Kafka 每条消息的副本数确保即使一台机器挂了消息也不会丢失。 # Kafka Topic 多副本配置 replication.factor3 最后真正发现消息丢失了怎么办呢这里有一些基本的补救措施 1.检查消费端日志首先要确定消息到底有没有消费。如果消费端日志显示消费失败重新处理即可。 2.重发消息如果消费端确实没处理成功可以将消息重新发送到 Kafka或者从备份中恢复并重放消息。 3.处理丢失后的补偿业务上可能会涉及补偿措施比如通知相关人员手动处理或者对丢失的数据进行回补。 总之消息丢失不算是特别常见的问题但一旦遇到还是需要冷静排查问题源头。 Kafka 等 Pub/Sub 中间件本身已经有比较强大的机制来应对这些场景只要结合业务需求做好监控和容错机制基本都能把问题压到最小。
http://www.w-s-a.com/news/67225/

相关文章:

  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格
  • 平湖网站设计做电子元器件销售什么网站好
  • 可视化网站模板我想建个网站网站怎么建域名
  • 达州网站建设qinsanw南京市建设发展集团有限公司网站
  • django 网站开发实例公司排行榜
  • 韩国做美食网站阳江网站建设 公司价格
  • 网站开发哪里接业务长春高端模板建站
  • 深圳网站制作公司方案dw一个完整网页的代码
  • asp手机网站源码下载做seo推广网站
  • 网站优化建议怎么写网站维护主要有哪些内容和方法
  • 建设网站需要钱吗网络推广加盟
  • 高清素材图片的网站泰安网签备案查询
  • 自助网站建设怎么建设房地产的最新政策
  • 企业网站 生成html网站侵权怎么做公证或证据保存
  • php 手机网站cms系统购物网站制作流程
  • 网络公司网站开发河北省城乡住房和建设厅网站
  • 做网站配置wordpress 中文api
  • 怎样把网站做的好看县蒙文网站建设汇报
  • 网站的优化什么做广西桂林新闻最新消息
  • 做网站准备什么软件搜索引擎广告推广
  • 网站开发地图板块浮动网页设计与制作的模板
  • 中国建设招聘信息网站昆明做网站建设的公司排名
  • 那些网站可以做自媒体wordpress 分类seo
  • 淮安市盱眙县建设局网站北京西站到八达岭长城最快路线
  • 在线免费网站企业查查官网入口官网
  • 天津网站优化公司哪家专业超融合系统