灰度发布/金丝雀发布时如何解决请求分裂的问题?

81 天前
 Frankcox
比如我设置了新发布的服务的权重为 10%,之前旧服务的权重为 90%,现在我尝试访问一个前端服务,路由将其指向了新环境,但是浏览器同时请求 js,css,img 等资源,而这些资源则被路由指向了旧服务,导致了页面无法正确显示,这种情况有什么好的解决方式吗?比如粘性会话?
2799 次点击
所在节点    程序员
26 条回复
dyllen
81 天前
借楼问下,灰度存在新旧两个版本的情况下,后端数据库新旧两个版本是如何处理?如果要回滚新数据怎么办?
MelodYi
81 天前
@Frankcox nginx-ingress 这类是可以的。
原始流量里有 userid 之类的指标,取个模。
你还能自行调整过滤的比例。第一天 10%,第二天 50%之类的。
再复杂的也能走 lua 脚本之类的搞定的七七八八。
morenacl
81 天前
好歹用源 ip 做 hash ,纯随机不靠谱
gotosre
81 天前
如果带 hash/特征资源的先上传,最后上传 index 页面,是不是也可以解决
然后 cdn 上保留至少 2 个版本的前端资源
无论用户加载到哪个 index.html ,都能找到资源了呢
不知道这个思路对不对
whileFalse
81 天前
设置粘性。
另外静态文件应该使用对象存储+哈希文件名,也就是发版之后任何版本的静态文件应该都存在于静态资源路径里。
xderam
80 天前
@Frankcox 旧服务的静态资源先不要下掉,一般来说这种小文件放到 s3 或者 cdn 上也花不了几个钱。除非有洁癖 哈哈哈。前端的版本控制和 hash 可以搜索下,网上一般有介绍。大多数是不用自己写,前端打包的时候根据 git 的相关信息自动生成的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1022738

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX