一次线上优化引发生产问题的思考

简介: 一次线上优化引发生产问题的思考

前言


在程序员的系统开发中,有些开发是从0到1的系统开发,有些开发是从1到100的系统开发,有些开发是为了保证系统更好、更稳定运行的优化。

从0到1的开发和从1到100的开发,是为了系统更好的实现功能,需要快速迭代,可以不断的优化、上线、再优化、再上线。

优化需求,是为了更好的使用系统,让系统更好、更稳定的运行,但是优化不能够影响到原有线上的功能,但是我们需要优化。为了防止优化过程中影响到其他代码,这里有几个总结的方案可供参考。


使用开关配置


目前我们项目中配置中心使用的是Apollo,其他配置中心或者配置文件也是同样的道理。


  • 优点:①可配置化,②可以直接防止优化代码报异常影响到原来的逻辑
  • 缺点:开关是一刀切,要么走优化逻辑,要么不走优化逻辑
public static void main(String[] args) {
        // 这里可以使用开关配置,如果有问题可以使用开关及时关掉
        String switchKey = ApolloUtil.getProperty("business_key", "false");
        if (Boolean.TRUE.toString().equalsIgnoreCase(switchKey)){
           // 优化逻辑
        }
        // 原来业务逻辑
    }


使用 try-catch

  • 优点:即使优化代码出现异常也会直接出现的异常吞掉
public static void main(String[] args) {
        try {
            // 优化逻辑
        }catch (Throwable e){
          // 这里可以把优化逻辑代码出现的异常吞下,防止系统异常之类的
            log.error("the exception is {}", e.getMessage(), e);
        }
        // 原来业务逻辑
    }


随机调整


  • 优点:①类似于灰度发布,②可配置化,可以灵活调整比例
  • 缺点:影响部分用户的使用
public static void main(String[] args) {
        int limitNum = Integer.parseInt(ApolloUtil.getProperty("limitNum", "10"));
        // 10%, 90% 类似于灰度发布,可以逐步放开
        if (limitNum > Math.random() * 100){
            // 优化逻辑
        }
        // 原来业务逻辑
    }


联合使用


  • 核心:结合 try-catch 和可配置化
public static void main(String[] args) {
        String str = "";
        boolean flag = optimizationLogic(str);
        if (flag){
            // 根据 flag 为 true 情况下的逻辑
        }else {
            // 根据 flag 为 false 情况下的逻辑
        }
        // 原来的逻辑
    }
    /**
     * 优化逻辑,false 表示不走,true 表示走
     * @param code
     * @return
     */
    private static boolean optimizationLogic(String code){
        try {
            if (null == code || code.isEmpty()){
                return false;
            }
            String switchKey = ApolloUtil.getProperty("business_key", "false");
            if (Boolean.FALSE.toString().equalsIgnoreCase(switchKey)){
                return false;
            }
            // 优化逻辑
            return true;
        }catch (Throwable e){
            // 这里可以把优化逻辑代码出现的异常吞下,防止系统异常之类的
            log.error("the exception is {}", e.getMessage(), e);
        }
        return false;
    }


目录
相关文章
|
17天前
|
运维 监控 供应链
如何提升日用品行业生产效率?
日用品生产中的协作效率低、任务分配不清、进度追踪困难、突发事件应对迟缓等问题普遍存在。数字化管理工具如Leangoo能提升协同与生产力。
|
5月前
|
监控 算法 数据挖掘
ERP系统中的生产线排程与调度优化解析
【7月更文挑战第25天】 ERP系统中的生产线排程与调度优化解析
155 6
|
5月前
|
监控 算法 数据可视化
ERP系统中的生产调度与计划排程解析
【7月更文挑战第25天】 ERP系统中的生产调度与计划排程解析
318 1
|
5月前
|
传感器 数据采集 监控
ERP系统中的生产过程监控与质量管理解析
【7月更文挑战第25天】 ERP系统中的生产过程监控与质量管理解析
267 0
ERP系统中的生产过程监控与质量管理解析
|
5月前
|
监控 数据可视化 调度
ERP系统中的生产计划优化与生产效率提升解析
【7月更文挑战第25天】 ERP系统中的生产计划优化与生产效率提升解析
428 0
|
5月前
|
监控 数据可视化 调度
ERP系统中的生产排程与生产效率分析解析
【7月更文挑战第25天】 ERP系统中的生产排程与生产效率分析解析
198 0
|
7月前
|
监控 BI 调度
深入探究ERP系统的生产计划与控制模块
深入探究ERP系统的生产计划与控制模块
252 2
深入探究ERP系统的生产计划与控制模块
|
7月前
|
传感器 监控 供应链
自动化生产线上的应用
自动化生产线广泛应用在汽车、电子、食品和医药等领域,提高生产效率和质量,节约人力成本。其优势包括生产稳定性强、适应恶劣环境、24小时不间断生产及产品一致性高。随着技术进步,未来自动化生产线将更灵活、定制化,人机融合、绿色环保和智能监控将成为趋势。传感器和电动执行器作为关键组件,优化监控和控制,推动生产效率和质量提升,为企业带来更多机遇与挑战。
121 2
|
7月前
|
测试技术 UED
产品服务的生产和制造阶段
产品服务的生产和制造阶段
72 3
|
7月前
|
监控 容灾 测试技术
如何保障线上产品质量?
如何保障线上产品质量?
258 0