前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在代码上线时如何避免多台服务器代码不一致引发脏数据呢?

在代码上线时如何避免多台服务器代码不一致引发脏数据呢?

作者头像
春哥大魔王
发布2018-04-17 17:28:23
1.5K0
发布2018-04-17 17:28:23
举报

大型的互联网产品总会有多台服务器支撑整个产品系统的运行,如果发布新版本代码的时候(比如我们公司还是最暴力的复制/粘贴,当然有自己的自动上线工具也不太可能避免这种问题),由于多台机器代码上线会有一定的延迟,造成的结果可能是机器代码版本不一致,导致处理请求造成不同的处理结果,引发脏数据问题,应该如何避免呢?

- 1,兼容,2,分步升级+导流控制;

- 1,兼容,2,公告+暂停服务+自动化脚本;

- 多环境的部署会导致数据差异,自动化的数据库部署脚本和上线演练很重要;

- 新代码尽量保证兼容性,如果不能看业务是否能够容忍短时间内的脏数据,不能的话需要有脚本做数据修复,灰度的时候有很多celue ,可以想办法让一部分固定用户访问到新代码;

- 新代码保证对老代码的兼容这是根本;

- 兼容性很重要,如果业务调整比较大,可以对数据做处理,再不行只能暂停服务;

- 1.发布提速,并发发布;2.上线后清除缓存;

- jenkins+haproxy+少量的部署脚本+合理的发布方案,应该可以减少问题;

- 自动化上线啊,一个shell脚本也没多难;

- 文件完全同步之后切换转发指向;

- 具体问题具体分析,拿脏数据问题举例,可以通过数据版本号解决;

- 自动化,兼容,适当暂停服务;

- 首先一份代码部署到多台是必须的吗?其次,程序实现上是否增加版本控制?

- 以交易支付系统为例,首先暂停业务方对于支付服务的调用,之后的业务方请求记录操作日志,交易系统升级,升级完毕之后恢复业务方支付调用,通过服务恢复暂停期间操作日志,起补偿作用;

- 如果出现脏数据说明你们分流出现了问题,当部署时,难道不是对于机器做有效屏障吗?比如你们决定部署到哪些机器为新版本,暂停对这些机器的访问吗?当部署成功之后将旧版本代码下线和新代码机器版本同步,保证上线下线为一个事务,确保最终都是新代码;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档