`
mingren135
  • 浏览: 69009 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

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

 

一、从兼容性上考虑:

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

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

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

1、可以下线老的接口

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

新接口适配老接口

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

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

1、可以下线老的接口

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

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

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

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

 

二、从下线角度考虑:

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

 

 

 

 

 

分享到:
评论

相关推荐

    javaOA办公系统模块设计方案.pdf

    头像图⽚⾊度调节 6.websocket 及时站内信并声⾳提醒、实时在线管理、websocket及时刷新页⾯(完胜ajax技术) 更新即时通讯功能,⽀持好友,群组,发图⽚、⽂件,消息声⾳提醒,离线消息,保留聊天记录 ------------...

    综合布线设计方案.docx

    布线柜子系统(RACK SUBSYSTEM): 由楼层配线架组成,其主要功能是将垂直干缆与各楼层水平子系统相连接,布线系统的优势和灵活性主要体现在布线柜子系统上,只综合布线设计方案全文共6页,当前为第2页。综合布线设计...

    优拓(uudev)原版智能建站系统V1.5

    优拓移动智能建站解决方案是国内首款基于云计算的移动智能建站系统,作为国内第一家基于WAP(Wireless Application Protocol)的可定制化建站系统,推出之初就受到中小型企业及规模化个人用户的追捧与热议。...

    深入探究MongoDB:从基础到实战,一个全面的指南

    MongoDB的记录是由字段和值对组成的文档,类似于JSON对象,支持不同字段的文档在同一个集合中,以及线上修改数据模式无需下线​​。它与传统的关系型数据库相比,提供了更加动态和可扩展的解决方案,特别适合大数据...

    天津理工大学中加专业计算机网络实验四:路由器的配置实验报告

    利用超级终端进行路由器的配置,记录配置过程,在实验报告中注明各种命令的功能。进行网络地址规划,配置路由器;检查路由器配置。掌握路由协议的种类和特点。掌握静态路由、默认路由的配置方法。掌握查看路由条目的...

    java开源包1

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包10

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    网上寻呼QICQ源代码(附带论文)

    提供基于TCP/IP网络的即时消息传送、消息广播、实时聊天、文件传输等功能。 具体列举如下: ? 支持多账号 ? 可以同时发送同一个消息给多人,通过输入这些人的号码列表或姓名列表 ? 可以同时发送一个消息给所有...

    艾瑞思视频会议系统V6.0版

    艾瑞思网络视频会议系统可根据用户实际应用环境的不同,以网络最优化方案进行系统部署。该系统提供给用户多层次的应用感受,满足了点对点通讯、在线感知、实时会议、远程协助、多方交互等多种实际需求。分布式、...

    JAVA上百实例源码以及开源项目

    本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取...

    JAVA上百实例源码以及开源项目源代码

    本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统...

    java开源包11

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包2

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包3

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包6

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包5

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包4

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包8

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包7

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包9

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

Global site tag (gtag.js) - Google Analytics