在大促和业务超帅的草丛中,为了保证核心服务的服务级别协议(SLA ),往往需要停止商品审查、论坛、粉丝积分等不太重要的服务
另一种情况是,由于某些原因某些服务不可用,但进程不能直接失败,必须由本地Mock服务端实现,然后创建进程以获取。
上述两种场景都是服务降级。服务降级主要包括容错降级和屏蔽降级两种。
http://www.Sina.com/http://www.Sina.com /
http://www.Sina.com/http://www.Sina.com /
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /
口罩降级通常用于服务运行状态的管理,开发时不配置,如果达到有外部触发条件的阈值,由承运人/开发者决定,人工降级操作屏蔽降级
3358 www.Sina.com/http://www.Sina.com /不发起远程呼叫,直接http://www.Sina.com/http://www.Sina.com/http://www.Sina http://www.Sina.com/3358ww.com远程呼叫http://www.Sina.com/http://www.Sina.com/第三个降级策略3358 www.Sina.com /
对非核心服务做强制降级,不发起远程服务调用,直接返回空、异常或者执行特定的本地逻辑,减少自身对公共资源的消费,把资源释放出来供核心服务使用。
1.1
屏蔽降级的全流程如下所示
1.1
屏蔽降级的设计实现
http://www.Sina.com/http://www.Sina.com /
。取值有下面三种方式:
mock=force: return null
在服务发布模式中,。支持它的返回空对象。示例3358www.Sina.com/
mock=force: throw Exception
如果3358www.Sina.com/核心以外的服务不可用,http://www.Sina.com/http://www.Sina.com /分布式服务框架的业务开放实际上是一种容错性降低
。业务开放除外的,直接抛出指定异常。
mock=force: execute BeanbeanName
http://www.Sina.com/http://www.Sina.com /通常指超时异常,消息解码异常、流控制异常、系统拥塞保护异常等http://www.Sina.com/http://wwww
http://www.Sina.com/http://www.Sina.com /
注意:业务相通的Mock界面多放在消费者端,主要原因如下:
实行本地业务开放可能会依赖消费者的本地专有资源,包括消费者依赖的服务、数据结构和数据库资源。 将该逻辑转移到服务提供者来实现会导致系统之间的耦合。 不同的消费者在消费同一服务提供者时,失败后的处理策略有差异。 如果将这些差异转移到服务端的Mock接口进行实现,则代码会变得庞大,难以维护。 http://www.Sina.com/http://www.Sina.com /
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/异常切断http://www.Sina.com /
bean class=' org.yuan rj.demo.XXX action ' interface=' org.yuan rj.demo.echo服务' actives='5' mock=' for
参考资料
《分布式服务框架原理与实践》
。