1.系统降级的概念
系统降级的是指当系统由于某种原因(可能是网络外部系统不稳定或程序内部bug导致)不稳定时,系统可以平滑的过渡到一个备选方案上来,使系统处于半可使用状态
2.为什么要做系统降级
当有新功能模块发布以后,一些隐藏较深的问题可能过一段时间才能展示出来,当这些问题发生而且会比较严重时,如果不及时对出问题的模块作操作,很可能导致大批的错误数据产生,而排查问题需要一定的时间的,如何将发现问题到解决问题过程中产生的错误数量降低到最低,这个就是系统降级需要处理的事情,可以简单的理解成一个个backup的功能点,当主功能点出现问题时,backup的功能点就可以上线了。举个简单的例子,一个商品页面新增了一个商品评价功能,这个反馈功能上线前无法预知可能出现的问题,当发现问题时需要及时的把评价入口给隐蔽掉--如评价入口遭到恶意攻击导致某段时间访问量骤增,或者恶意反馈过多,这个时候在不停机的前提下把入口给关掉是最快的解决途径。
3.降级的目标
1)不停机的前提下对系统作切换控制
2)能为排查问题和解决问题赢得时间
3)尽少的降低对用户的影响
3.系统降级如何实现
1)发掘降级点
系统开始前TL或架构师需要有意识去发觉系统的瓶颈点,如访问量比较大的页面,数据库查询比较多的地方,外部依赖接口的地方,对这些容易出错的地方进行整理归类
2)在程序中埋点
针对1)中的降级点在代码实现时在相应的逻辑中进行控制,添加控制逻辑
3)降级处理策略
在系统降级后希望系统给予怎样的响应,是应用直接跳转到一个错误提示页面去还是显示一个简洁版的用户输入界面还是直接绕过这段出错逻辑,这个就是具体的策略了
4)降级点管理
对于一个应用,理想的状态就是对系统中所有的降级点放在一起,便于查找和管理,我们这次项目里也是以这种方式来实现的,这也是模块化编程的很好实践
5)外部触发
设计好了降级点就要有外部的请求来触发才能实现降级,这个对于web应用来讲一般是通过设置一个单独的servlet,对外保留一个链接,然后通过这个连接传递不同的参数来实现对不同模块降级处理的逻辑
4.一个例子
设计一个统一的管理类,很简单,里面有个系统所有开关的map属性,key表示功能代码,value表示对该模块的降级是否启用,如下
将其配置到spring的配置文件中
系统掉用伪代码
if(demoteManager.getEnabled("createAppDemoteEnable")){
//降级后的业务逻辑-跳转到新页面
}else{
//正常的业务逻辑
}
外界的触发-servlet版本,核心思想在于通过该servlet暴露在外的url传递参数,如http://localhost/demote/?demoteModule=createAppDemote&value=true
servlet类中通过get方法获取demoteModule和value的值,然后spring中调用applicationContext.getBean("").setEnabled(createAppDemote,value);就可以达到动态修改bean属性的目的,因为spring中配置的bean都是单例的,所有一次修改后就一直常驻内存了
4.系统降级的风险点
1)url方式暴露在外能够修改系统级别参数,是非常危险的--这个可以通过url设置白名单来实现
2)服务器集群时--当有多台服务器时必须在每台机器上都访问一下这个url,设置一次,否则只针对目前机器有效
分享到:
相关推荐
中兴B860AV1.1-T2 降级包。ADB二维码 ,无法用计算器算ADB密码 ,TTL锁死, 唯一降级包, 唯一降级包, 唯一降级包
拷贝到U盘里面,修改一下固件包的名称,然后插上机顶盒打开电源就会自动刷机降级了,ADB就可以用算号器打开了!
Odysseus-Windows降级教程 一、下载cygwin压缩包,解压到任意盘符。例子解压到D盘;安装Win32OpenSSL-1_0_2c.exe。 下载地址:上传中。
htl22 hboot-1.73降级s-off日版one s-off降级.txt
将固件降级到V2.J17.S4 https://blog.csdn.net/A18149287626/article/details/120729777
vivo机型售后系统降级工具 售后工具 vivo机型专用 专门为系统降级用的软件 需要的友友可以下载使用
用于N1和T1盒子一键降级,只需要选择降级设备,输入盒子IP地址,一键降级就这么简单
centos-release-7-6.1810.2.el7.centos.x86_64.rpm包 命令主要是针对将 centos7.9版本降级到centos7.6,其他版本也可以参考降底版本到7.6,包含操作命令
分布式的设计以及hystrix的一些Q&A, 其中如果有其他的第三方工具再进行补充
计算机后端-Java-Java高并发从入门到面试教程-务降级与服.zip
斐讯T1、N1官方系统降级工具
ULINK-2 升级降级 工具 ,附加文档。如何需要给你的ULINK-2仿真器升级降级就需要使用到附件的工具。ULINK-2固件(V1.42到V2.01)+FlashMagic烧录。
固件所有权归海康威视所有。DS-78xxNB-K1、DS-78xxNB-K1/C、DS-78xxNB-K2 DS-88xxNB-K8 版本号:V3.4.106 build 190712
本文主要讨论加速退化测试的最佳设计与退化性能之间的关系。 当分布参数和临界值之间存在线性关系时,通过将临界值作为加速变量来呈现加速退化测试的特殊模式。 并通过最小化分布参数的MLE的渐近方差来获得最佳测试...
dir-655 A4 1.35NA 1.35EA 降级 downgrade 费了老大劲找到的,好用
2----带降级包 回退包资源 3----带解锁bl步骤与工具 4----带刷写工具。方便刷写分区 5-----带ozip格式转换zip格式工具 6----带第三方twrp刷写资源 按步骤操作即可解锁bl和获取root权限。资源需要电脑链接手机操作。...
860AV1.1降级包.zip zte电视盒子 复制到优盘,插入盒子,一通电不断按遥控的左键,要快 zte电视盒子 选择第四项升级
TPWR842V4 升级固件降级固件全套,降级后就可以任意刷所有固件,官方没有的这里也有! TL-WR842N V4.0 20130627.bin TL-WR842N V4.0 20130723.bin TL-WR842N V4.0 20131119.bin TL-WR842N V4.0 20140120.bin TL-...
sentinel-降级熔断测试.jmxsentinel-降级熔断测试.jmxsentinel-降级熔断测试.jmxsentinel-降级熔断测试.jmx