zoukankan      html  css  js  c++  java
  • 15. 蓝绿发布导致需求不能验证

    问题描述:

      项目发版时,考虑到新增表结构和字段应该对功能无影响,在白天采用蓝绿发布项目,先发一期环境,二期环境对外服务,但是却导致一期环境新功能出现异常无法验证

    排查措施:

      排查生产日志,定位代码,代码逻辑正常,uat正常无法复现问题

    进一步换角度排查:

    苦思冥想,考虑sql层面新增表结构字段和这段代码的关系再仔细对比上版本代码,发现redis缓存value是该表查询出的对象,初次进来查询配置商户进行缓存,默认缓存半小时

    由于新增了字段且增加了切分该字段逻辑,却被遗忘,原有对象进行split时导致报错。

    原因分析:

    由于蓝绿发布,二期环境对外服务的用户量的访问量远大于一期环境验收测试的量,所以缓存内容基本都是原有对象,一期环境验收测试该代码逻辑判断缓存有值,直接走缓存不会再查库,

    即使缓存失效后,基本上也是二期环境对外服务用户去刷新缓存,也不会有新增的该字段,一期环境验收环境还是会报错。

    解决:

    等待晚上申请停服发版

    反思:

    对于新增表结构,充分考虑到现有代码、原有代码里功能细节问题、缓存值得问题,如无法明确是否蓝绿对原有功能冲突甚至影响对外服务,导致生产问题,建议优先选择停机发版。

  • 相关阅读:
    log4j2分析总结(一)
    Idea(三)常用插件以及快捷键总结
    设计模式(七)_模板方法模式
    Idea(二) 解决IDEA卡顿问题及相关基本配置
    设计模式(六)_观察者模式
    SpringBoot(十一)_springboot热部署
    UML类图学习
    设计模式(五)_工厂方法模式
    设计模式(四)_简单工厂模式
    设计模式(三)_装饰器模式
  • 原文地址:https://www.cnblogs.com/flgb/p/14162347.html
Copyright © 2011-2022 走看看