工作记录-老功能下线方案

24 篇文章 0 订阅

新功能要上线,老功能该如何下线呢,下面列举一些具体方案的对比说明:

 

一、从兼容性上考虑:

方案名称说明优点缺点
新接口完全兼容老接口

1、最好的办法,客户端无需做处理

2、需要服务端在接口数据结构设计上,要考虑到扩展性的需求,对服务端接口设计要求比较高

1、可以下线老的接口

2、数据能够最大程度和新版保持一致

新接口适配老接口

1、也是比较好的方法,客户端无需做处理

2、服务端会增加一部分工作量

1、可以下线老的接口

2、能够保证数据正确,但不保证新功能被支持

1、需要对输出的数据结构进行转换
新接口无法适配老接口

如果老的接口不能下线,后期维护成本大

1、维护多套老接口,成本非常大,没有优点可言,可见接口设计是很重要的

 

二、从下线角度考虑:

方案名称说明优点缺点
按比例切换老接口如,根据userId取模,老接口以一定的百分比逐步下线  
按比例随机返回错误提示如,访问老功能,随机出现错误提示’该接口已下线‘等等。1、不让某个用户一直失败,但又通过一定比例通知到用户该接口即将废弃。1、用户也可能会认为是系统问题
在一定时间段,按比例随机返回错误提示某一个时间段内,执行方案21、尽量降低方案2的负面影响 

 

 

附加相关代码:

1、按比例切换

 

//默认会切换20%的用户
long userId = getBuyerId();
int mod = (int)userId%100+1;
int rate = Integer.parseInt(getConfigRateValue(20));//默认20%
if(mod<=rate){
	return false;
}
return true;

 

2、在一定时间段,随机给出错误提示

int hour = calendar.get(Calendar.HOUR_OF_DAY);
//2.check if 'hour' is in this period
String period = getConfigHourPeriod()//12-18
String[] hourPeriod = period.split("-");
int start = Integer.parseInt(hourPeriod[0]);
int end = Integer.parseInt(hourPeriod[1]);
if(hour >=start && hour<=end){
	//3.fail rates
	String failRate = getConfigFailRate()//20
	int random = (int)(Math.random()*100)+1;
	//4.rate=20%
	if(random<=Integer.parseInt(failRate)){
		return true;
	}
}
return false;

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值