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

顺义手机网站建设wordpress 域名跳转

顺义手机网站建设,wordpress 域名跳转,wordpress如何运行,做网站营业执照经营范围怎么填写今天给大家分享一个在面试中经常遇到的问题#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/610977/

相关文章:

  • 燕郊个人做网站小企业网站模板
  • 网站ip需要备案新开河街做网站公司
  • 网站定制设计方案wordpress批量传图片
  • 做外贸兼职的网站设计福州网站开发私人
  • 金华建站模板目前国内有哪些网站做家具回收
  • 个人做网站还是公众号赚钱好部门网站建设和维护
  • 系列图标设计网站推荐建商城网站
  • 中牟建设工程信息网站黑龙江 哈尔滨
  • 网站设计基本结构wap自助建论坛网站
  • 专业番禺网站建设爱做网站外国
  • 深圳罗湖网站设计公司价格制作网站的公司办什么营业执照
  • 长清网站建设价格群辉NAS搭建wordpress
  • 变更股东怎样在工商网站做公示网站建设和网站优化哪个更重要
  • 西安手机网站python网站开发效率
  • 深圳建站的公司羽毛球赛事2022直播
  • j2ee网站开发搜索推广的流程
  • 网站目录结构图虚拟主机如何安装WordPress
  • 信产部网站备案保定软件开发网站制作
  • 东莞网站设计定做东莞网站建设最牛
  • 网站开发的软件天猫的网站导航怎么做的
  • 做链接哪个网站好网站建设平台方案设计
  • 资质升级业绩备案在哪个网站做网站建设方案费用预算
  • 做网站找哪个平台好wordpress 3.9 性能
  • 大兴模版网站建设公司企业网站备案案例
  • h5建站是什么wordpress客户端 接口
  • 济南自适应网站建设制作软件下载
  • 望都网站建设抖音广告投放收费标准
  • 网站制作软件排行榜上海市网站建设公司58
  • 什么是网站风格中国工商网企业查询官网
  • 专业建设专题网站wordpress lnmp wamp