跨服务降级

简介: 【8月更文挑战第21天】

我在公司维护了一个服务,它的接口可以分成两类:一类是给 B 端商家使用的录入数据的接口,另外一类是给 C 端用户展示这些录入的数据。所以从重要性上来说,读服务要比写服务重要得多,而且读服务也是一个高并发的服务
于是我接入了一个b。当我发现读服务的响应时间超过了阈值的时候,或者响应时间开始显著上升的时候,我就会将针对 B 端商家用户的服务临时停掉,腾出来的资源都给 C 端用户使用。对于 B 端用户来说,他们这个阶段是没有办法修改已经录入的数据的。但是这并不是一个特别大的问题。当 C 端接口的响应时间恢复正常之后,会自动恢复 B 端商家接口,商家又可以修改或者录入数据了。

同时可以从数据库性能影响的角度来进一步解释降级写服务的优点

虽然整体来说写服务 QPS 占比很低,但是对于数据库来说,一次写请求对性能的压力要远比一次读请求大。所以暂停了写服务之后,数据库的负载能够减轻不少。

除了这种 B 端录入 C 端查询的场景,还有很多类似的场景也适用。

  • 内容生产平台,作者生产内容,C 端用户查看生产的内容。那么在资源不足的情况下可以考虑停掉内容生产端的服务,只保留 C 端用户查看内容的功能。
  • 如果你的用户分成普通用户和 VIP 用户,那么你也可以考虑停掉给普通用户的服务。甚至,如果一个服务既提供给普通用户,也提供给 VIP 用户,你可以考虑将普通用户请求拒绝掉,只服务 VIP 用户。> 这个方案就是典型的跨服务降级。跨服务降级可以在大部分合并部署的服务里面使用,一般的原则就是 B、C 端合并部署降级 B 端;付费服务和非付费服务降级非付费服务。当然也可以根据自己的业务价值,将这些部署在同一个节点上的服务分成三六九等。而后在触发降级的时候从不重要的服务开始降级,将资源调配给重要服务。
目录
相关文章
|
安全 NoSQL Java
互联网并发与安全系列教程(01) - 基于Hystrix实现服务隔离与降级
互联网并发与安全系列教程(01) - 基于Hystrix实现服务隔离与降级
65 0
|
SpringCloudAlibaba 监控 Dubbo
SpringCloudAlibaba篇(三)整合Sentinel(限流、流量整形、熔断降级、系统负载保护、热点防护,分布式服务架构的高可用流量防护组件)
SpringCloudAlibaba篇(三)整合Sentinel(限流、流量整形、熔断降级、系统负载保护、热点防护,分布式服务架构的高可用流量防护组件)
SpringCloudAlibaba篇(三)整合Sentinel(限流、流量整形、熔断降级、系统负载保护、热点防护,分布式服务架构的高可用流量防护组件)
|
4月前
|
数据库 搜索推荐 前端开发
跨服务降级
【8月更文挑战第15天】
42 0
|
6月前
|
负载均衡 容灾 网络协议
全局流量管理全新升级
全球流量管理全面提升,聚焦于用户体验升级、负载策略增强及异构容灾,旨在为用户打造更加简单、灵活和稳定的流量调度服务。
|
开发框架 算法 NoSQL
多租户系统中如何实现分别限流
多租户系统中如何实现分别限流
224 1
|
7月前
|
存储 运维 监控
双活中心故障检测与切换机制
双活中心故障检测与切换机制
257 2
|
7月前
|
缓存 Java 应用服务中间件
常见的限流降级方案
【1月更文挑战第21天】
|
存储 SpringCloudAlibaba 算法
系统高可用(一):限流
限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机
184 0
系统高可用(一):限流
|
缓存 SpringCloudAlibaba 监控
系统之高可用(二):熔断降级
分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为级联故障效应,最终结果导致整个系统服务不可用
161 0