我代表编程导航,向大家道歉!

news/2025/9/19 14:52:44/文章来源:https://www.cnblogs.com/yupi/p/19100882

对不起,我代表编程导航,向大家道歉!

 

大家最近访问网站可能会遇到很多莫名其妙的 Bug。

 

幸运的话,还可能会看到 “薛定谔的网站”!

诶,一会儿新页面、一会儿老页面、一会儿又来个报错,不知道你们遇到没有?

具体的 Bug 表现可以看:https://bilibili.com/video/BV1NgpqzQETJ

 

怎么回事儿呢?

最近我们网站前端正在进行技术升级,为了保险起见,我们选择 灰度发布,先让一小部分用户使用新版本,而不是全量上线。

 

但是无奈我们目前使用的项目部署平台不支持按比例灰度发布。

 

为了降低灰度的实现成本,团队心生一计:既然用户访问网站时,要先通过 DNS 服务器解析域名为 IP 地址。

 

那我只需要在 DNS 解析这边动动手脚,给同一个域名配置 2 条相同类型的解析记录,一条指向新网站、一条指向老网站,再设置不同的权重,这样就通过 DNS 轮询的方式分配了流量。

 

过程如图:

 

结果翻车了!

哪怕是同一个用户、同一台电脑访问我们的网站,都有可能出现一会儿新页面、一会儿老页面的情况,用户体验很差;而且由于新老网站技术栈不兼容,还出现了一些奇奇怪怪的 Bug。

 

这是因为 DNS 轮询本质上是 随机分配,无法绑定用户身份。哪怕同一台电脑,DNS 缓存过期后再次解析,也可能拿到新网站服务器的 IP,导致版本切换。

 

不过目前这个问题应该已经解决了,大家可以帮我试试看。

编程导航:codefather.cn

 

解决办法很简单,我们临时更改了 DNS 解析规则的线路类型,将某一运营商(比如电信)的用户统一解析到新版本,其他用户解析到老版本。这样避免了完全随机的情况,解决了同一用户反复切换的问题,达到了按用户群体灰度的效果。

 

我承认基于 DNS 实现灰度并不优雅,也导致了一些线上 Bug。理想情况下应该根据用户 ID、Cookie 等标识进行一致性分流,可以利用网关、容器编排、或者 CDN 等技术实现灰度。

 

但标准的灰度方案需要更复杂的基础设施和更高的成本,对于俺们小团队来说,在资源有限的情况下,还是选择了一个 “看似可行” 的简单方案,结果聪明反被聪明误了。

把这次的事故分享出来,也是希望能给同样是小团队的朋友们一些参考。

你们遇到过类似的情况吗?有什么更好的方案推荐?

更多编程学习资源

  • Java前端程序员必做项目实战教程+毕设网站

  • 程序员免费编程学习交流社区(自学必备)

  • 程序员保姆级求职写简历指南(找工作必备)

  • 程序员免费面试刷题网站工具(找工作必备)

  • 最新Java零基础入门学习路线 + Java教程

  • 最新Python零基础入门学习路线 + Python教程

  • 最新前端零基础入门学习路线 + 前端教程

  • 最新数据结构和算法零基础入门学习路线 + 算法教程

  • 最新C++零基础入门学习路线、C++教程

  • 最新数据库零基础入门学习路线 + 数据库教程

  • 最新Redis零基础入门学习路线 + Redis教程

  • 最新计算机基础入门学习路线 + 计算机基础教程

  • 最新小程序入门学习路线 + 小程序开发教程

  • 最新SQL零基础入门学习路线 + SQL教程

  • 最新Linux零基础入门学习路线 + Linux教程

  • 最新Git/GitHub零基础入门学习路线 + Git教程

  • 最新操作系统零基础入门学习路线 + 操作系统教程

  • 最新计算机网络零基础入门学习路线 + 计算机网络教程

  • 最新设计模式零基础入门学习路线 + 设计模式教程

  • 最新软件工程零基础入门学习路线 + 软件工程教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cf div2 1051 E(视角转换,构造+思维)

E 一道简约清新的构造题,感觉这种构造题真的很难得。 回顾题意:给定一个括号串,每次可以翻转两个相邻的相同括号,任意次,问能否将原序列变成一个 \(RBS\),并给出构造方案。 直接按原操作的角度来想是很困难的。这…

从“被动监控”到“主动优化”:MyEMS 重构能源管理价值的路径

长期以来,能源管理对于许多企业和园区而言,更像是一个“事后诸葛亮”式的成本中心。其工作重心往往停留在安装电表、记录数据、生成月度报表的初级阶段,这是一种典型的被动监控模式。它虽然能告诉我们“用了多少能”…

openHarmony之开源三方库zlib适配讲解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

phoenix 导出sql执行结果到文件中

怎么使用phoenix服务安装包自带的sqlline.py文件,执行sql语句,并将结果导出到本地文件。连接phoenix ./sqlline.py zkmaster:2181执行导出逻辑 # 可以省略或设置为默认的table格式 !outputformat table # 输出的结果…

LK32V12A 过压/过流保护开关芯片 OVP过压45V 过流2.2A电流 SOT-23L

LK32V12A 过压/过流保护开关芯片 OVP过压45V 过流2.2A电流 SOT-23L概述 LK32V12A是一款过压/过流保护开关芯片, 该芯片内置高耐压功率MOSFET,芯片对输入 电压和输出电流以持续监测,当芯片监测到 输入电压或输出电流…

为什么企业需要高防IP - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

论文解读-《Graph Retrieval-Augmented Generation A Survey》 - zhang

1. 论文介绍 论文题目:Graph Retrieval-Augmented Generation: A Survey 论文领域:RAG 论文发布:2024.08 发布于Arxiv 论文代码:https://github.com/pengboci/GraphRAG-Survey 论文背景:2. 论文摘要 近年来,检索…

AI编程问题处理与传统网页搜索对比分析

AI编程问题处理与传统网页搜索对比分析引言 随着人工智能技术的快速发展,AI编程助手已经成为开发者解决编程问题的重要工具。相比传统的网页搜索方式,AI编程助手在问题处理方面展现出了独特的优势,但同时也存在一些…

深入解析:HTML元素周期表

深入解析:HTML元素周期表2025-09-19 14:34 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

APP 内测分发的核心逻辑与流程,虾分发让效率翻倍

对于开发者而言,APP 内测分发不是简单的 “传安装包”,而是连接 “产品开发” 与 “正式上线” 的关键环节 —— 既要通过真实用户测试暴露问题,又要兼顾效率、安全与合规。但传统分发常陷 “用户安装复杂”“反馈收…

WPF Canvas 网格线背景样式

该代码片段是 WPF 中 UserControl 的资源定义,核心功能是为 Canvas 控件创建带虚线网格线的背景样式,通过自定义 DrawingBrush 实现重复排列的网格效果,具体说明如下: 一、样式基础信息目标控件:Canvas(画布控件…

深入解析:【vue+exceljs+file-saver】纯前端:下载excel和上传解析excel

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C++ 最开始的地方

初学C++,最主要的是创建程序,然后把程序跑起来。 所以不要光盯着知识点, 多熟悉从创建代码,到执行代码,然后修改输出的整个流程。 用指法打字 先提打字是因为很多人不注重打字的指法。千万不要把自己练成一指禅!…

ClkLog埋点与用户行为分析系统:架构升级与性能全面提升

随着越来越多企业在实际业务中使用 ClkLog,数据规模和分析需求也不断提升,部分用户日活已经超过10万,为了顺应这一趋势,ClkLog 秉持 “开放透明、持续演进”的理念,推出了迄今为止最重要的一次性能优化升级。新版…

常见开源安全工具列表

强大的开源安全工具列表 许多开源工具的功能完全不输商业工具。 工具名称类别简介及用途著名开源替代于OWASP ZAP Web扫描 OWASP旗舰项目,类似Burp Suite的代理和扫描器,极易上手。 Burp SuiteNessus (开源版停发) 漏…

ARC187 做题记

训A () 题意 题解 \(\bf{record}\) B () 题意 题解 \(\bf{record}\) C () 题意 题解 \(\bf{record}\) D () 题意 题解 \(\bf{record}\)

lombok与mapstruct冲突的问题

现象 在生成的mapper方法中,没有调用实体类的getter和setter解决方案 配置plugin时需要加入lombok-mapstruct-binding依赖 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>…

SAP物料自动记账科目设置总结

一、科目确定说明 1、在sap中物料的出库和入库都是通过移动类型关联到科目确定,然后确定对应的记账科目,这一过程称之为自动记账科目确定。 自动记账科目确定定义:自动记账科目是指在执行某些业务交易(如采购、销售…

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控一站式建设方案

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控一站式建设方案一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步,社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车…

移远模组使用移远云平台对接指令

1. 地址和服务器地址 欧洲移远云服务器地址和登录信息网页 https://core.acceleronix.iomqtt://iot-south.acceleronix.io:1883PK: 邮箱:Sheldon.qiao@inventronicsglobal.com 国内的移远服务器地址网页: https:/…