服务好的网站建设联系人,wordpress腾讯地图插件,wordpress建站好么,网站定制开发是什么意思为什么#xff1f;
服务降级了
服务降级#xff1a;
当服务器压力剧增的情况下#xff0c;根据实际业务情况及流量#xff0c;对一些服务和页面有策略的不处理或换种简单的方式处理#xff0c;从而释放服务器资源以保证核心交易正常运作或高效运作。
分布式系统的降级…为什么
服务降级了
服务降级
当服务器压力剧增的情况下根据实际业务情况及流量对一些服务和页面有策略的不处理或换种简单的方式处理从而释放服务器资源以保证核心交易正常运作或高效运作。
分布式系统的降级
上图是一张淘宝商品的详情页至少有15个以上的功能模块如图片、标题、定价、库存、推荐、评价、物流、收藏、下单等。
虽然这些功能都展示在同一个页面上但是其实这些功能并不都是在同一个应用里面的。这十几个模块可能分别在十几个应用中实现的。
详情页在渲染的时候要和十几个应用进行网络交互。
这些功能中有一些是非常重要的比如定价、库存、下单等。还有一些是相对来说没那么重要的比如推荐、收藏等。 这个识别哪些功能是核心功能、哪些功能是非核心功能然后对非核心功能采取不通的降级方案制定的过程叫做降级预案。 双十一当天整个网站的流量十分巨大的详情页的访问量更是整个网站的重灾之地。所以一旦有大促的时候需要有限保证主要功能的可用至于那些次要的功能就可以被降级掉即不显示某些模块或者返回一些默认内容。
降级的方式
对于大型网站来说服务的降级其实是有很多方式可以选的常见的几种如下
延迟服务 比如发表了评论重要服务比如在文章中显示正常但是延迟给用户增加积分只是放到一个缓存中等服务平稳之后再执行。
在粒度范围内关闭服务片段降级或服务功能降级 比如关闭相关文章的推荐直接关闭推荐区
页面异步请求降级 比如商品详情页上有推荐信息/配送至等异步加载的请求如果这些信息响应慢或者后端服务有问题可以进行降级 页面跳转页面降级
比如可以有相关文章推荐但是更多的页面则直接跳转到某一个地址。
写降级 比如秒杀抢购我们可以只进行Cache的更新然后异步同步扣减库存到DB保证最终一致性即可此时可以将DB降级为Cache。
读降级 比如多级缓存模式如果后端服务有问题可以降级为只读缓存这种方式适用于对读一致性要求不高的场景
无法退款采用的是关闭服务的这种降级方式
这个降级是自动发生的嘛 这涉及到降级的介入方式
按照是不是可以自动化降级降级共有两种介入方式分别是 自动开关降级和人工开关降级
自动开关降级 自动开关降级的方式一般是当系统达到某些设定的条件系统负载、资源使用情况、SLA等指标之后自动执行一些策略。 常见的可以作为自动降级条件的指标有以下几个 服务超时 当访问的数据库/http服务/远程调用响应慢或者长时间响应慢且该服务不是核心服务的话可以在超时后自动降级
比如前面提到的详情页上有推荐和收藏功能即使出现问题也不会影响用户的正常下单。如果是调用别人的远程服务和对方定义一个服务响应最大时间如果超时了则可以自动降级。
失败次数 调用外部服务的时候除了超时意外最常见的异常情况就是调用失败。比如详情页中的库存信息如果是某一次查询请求失败了那么可以那么就可以通过读取缓存数据等方式直接降级掉。
但是这种降级可能存在一个问题就是虽然一次请求展示了缓存但是其他用户访问的时候还是会查询库存信息这对于库存系统来说就是雪上加霜。因为他可能已经有问题了但是上游系统还是在不断的对他发送请求。
所以可以针对这个查询库存的接口做统一的降级。设定一个失败次数的阈值一旦整体失败次数达到这个阈值了就对后续一段时间内的改查询接口做降级。直到其功能恢复。
发生故障 上面提到的失败可能是服务不稳定造成的过一段时间可以自动恢复的。还有一种情况可能是依赖的服务彻底跪了、或者网络不通了等等。这种情况就可以直接降级了。
当HTTP请求返回固定的错误码、或者一个RPC请求的时候底层服务抛了异常以后就认为有故障发生对其进行降级即可。
限流降级 还有种电商网站常见的策略那就是限流降级。对于某些功能设定一个流量阈值一旦流量达到阈值的话就进行降级。
比如秒杀功能如果一瞬间流量太大就可以进行限流降级。对于后续访问的用户直接提示已售空、跳转错误页、或者让他输入验证码重试等。
人工开关降级
还有一种降级方式那就是人工开关降级。
人工开关降级的方式是指当系统维护人员在发现系统异常之后通过人工修改参数、关闭服务等方式进行降级的方法。
这种方式的好处是比较灵活能够根据异常情况灵活应对但弊端是对人的要求比较高一来需要维护人员对系统有足够的了解另外要求维护人员在系统异常时能够在第一时间进行处置。
还有一种情况可能也会人工介入那就是在大促之前预估到流量会十分巨大提早的识别出风险为了节省资源保证主流程的可用开发人员可以手动将某个功能降级掉。
这里说的人工开关降级并不一定是一定要人工操作也可能是人工通过一个定时任务进行定时触发的。
降级工具Sentinel
Sentinel 是阿里中间件团队开源的面向分布式服务架构的轻量级高可用流量控制组件主要以流量为切入点从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。
Sentinel 的侧重点在于多样化的流量控制、熔断降级、系统负载保护、实时监控和控制台等