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

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

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

 

大家最近访问网站可能会遇到很多莫名其妙的 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.rkmt.cn/news/7990.html

相关文章:

  • cf div2 1051 E(视角转换,构造+思维)
  • openHarmony之开源三方库zlib适配讲解 - 实践
  • phoenix 导出sql执行结果到文件中
  • LK32V12A 过压/过流保护开关芯片 OVP过压45V 过流2.2A电流 SOT-23L
  • 深入解析:HTML元素周期表
  • APP 内测分发的核心逻辑与流程,虾分发让效率翻倍
  • 深入解析:【vue+exceljs+file-saver】纯前端:下载excel和上传解析excel
  • 解码C语言关键字
  • Windows环境中安装Zookeeper
  • ​​电流探头选型技术指南:精准捕获电流信号的艺术​​
  • slurm启动验证命令
  • 实用指南:LeetCode //C - 836. Rectangle Overlap
  • 深入解析:[Android] 安卓手机翻页时钟Flip Clock - World Clock v1.5.0.0
  • 深入解析:多模态大模型3:TAViS
  • 基于STM32F103C8T6与DS18B20的温度测量系统
  • Oxygen Forensic Detective 18.0 发布,新增功能简介
  • Windows如何美化cmd窗口
  • MX Round 7 解题报告
  • 实用指南:售价3499美元,英伟达Jetson Thor实现机器人与物理世界的实时智能交互
  • 逻辑回归 vs 支持向量机 vs 随机森林:哪个更适合小数据集? - 指南
  • 券多多系统-开发记录
  • US$189 Yanhua Mini ACDP Module3 Read amp; Write BMW DME ISN Code by OBD
  • React 状态丢失:组件 key 用错引发的渲染异常 - 指南
  • 快速实现 Excel 表格转 SVG:Java 教程 - E
  • PolarFire SoC QSPI 代码编写 测试
  • C++中类的内存存储
  • 做题
  • SchemaStore
  • Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-29- 操作单选和多选按钮 - 下篇(详细教程) - 北京