敏捷灰度--select 代替 update、delete的灰度策略

        本文讲述的是一种灰度策略,在讲灰度策略之前,先说一下线上数据库的delete,update操作。

程序员删除线上数据时运行以下示例语句:

        delete from table where id=xxx and name=’xxx’;

        如果忘记加where条件或者where条件少了一个and或者or,将会删除很多数据。

        稍微有经验的程序员,会分两步操作:

        1. select * from table where id=xxx andname=’xxx’; 观察满足删除条件的数据情况

        2.用“delete”替换第一点语句的“select*”

        第一点可以理解为“灰度发布观察”,第二点可以理解为“全量发布”。

        那么接下来讲的就是在微服务中实现上面思路的灰度发布。


        举个例子:

        
       某个微服务系统中,要对A表添加一个uid字段,插入数据时填写上uid数据,update数据时where再加上“uid=xxx”的条件。系统的服务杂性,无法预料到插入的uid和update的uid是否一致,如果存在大量不一致,将导致大量数据无法被update更新,引起大面积报障。

        
       该改造要上线,就是要先摸清不一致的情况有多少。

       按以下步骤上线:

       1.      线上数据表增加uid字段

       2.      上线程序,上线的程序有insert uid的功能,update逻辑先不加上uid=xxx的过滤条件。再加多几行程序,程序执行”select * from table where condition=yyy and uid=xxx”,当返回的结果集为0时,打印日志并且上报到统计系统中,通过日志或者统计系统监控将要update的影响记录条数。

       3.      第二点灰度观察一天,正常无误后把”select * from table where condition=yyy and uid=xxx”的执行语句去掉,再到原来的update语句加上uid=xxx,再上线灰度一台服务器

       4.      第三点的一台服务器灰度一天无误后,再继续灰度其他机器。

 

 

        
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值