大促准备(四)限流配置

限流主要是针对非核心服务调用者进行的。ajax

一、肯定限流对象

原则上,大促核心链路上的服务都要配置限流,以避免大促期间的流量超过预估值把服务器压垮。
同时还要考虑出口限流,主要是对db的限流,配置一个读写总流,以免把服务器压垮。json

二、肯定限流实现方式

限流实现方式主要有两种:服务器

  1. 对Facade包中inteface的方法配置限流
  2. 定义一个专门的service,这个service中的一个方法是就是一个限流内容。须要限流的服务内引入这个service,然后对这个service中的方法配置限流

方法1的好处是简单,缺点是限流配置可能会分散到多个文件甚至bundle中。
方法2的好处是集中管理,缺点是须要限流的服务要专门引入一个新的serivce,之后每加一个限流内容这个servcie都要进行下修改。设计

两种方法各有优劣,各个系统可根据本身的业务特色进行配置。日志

三、肯定限流超量处理策略

限流处理的超量处理整体来讲有两种策略:xml

  1. 不作处理
  2. 执行指定的动做:抛异常、跳转到指定页面、返回json或xml格式的报文

这两种策略的使用场景主要以下:对象

  1. 对于供用户直接访问的网页,最好直接跳转到指定页面,告知用户稍后再试;
  2. 对于ajax接口,能够返回json或xml格式的报文,客户端解析后使得用户有一个比较好的用户体验;
  3. 对于上游弱依赖的服务端服务,能够不作处理;可是对于强依赖的服务,最好抛出异常,然后在本身系统内部catch住该异常,再返回一个默认结果给到上游系统;或者本身系统内部能够有一个稍微复杂的设计,对异常进行统计,大于必定范围后能够自动进行熔断。

整体而言,超量以后执行指定动做要好于不作处理。接口

四、限流验证

配置完成后,就须要进行验证了,验证的方式主要是看日志,经过日志看支付宝

  1. 限流有没有生效
  2. 限流生效后有没有执行指定的动做
  3. 有没有误拦

一般而言,咱们配置的限流值要比平常的流量值大好几倍的,正常状况下不会触发限流的,于是要触发限流一般有两种方法:ci

  1. 在开发或sit环境调小限流值
  2. 在线上或者预发环境进行压测

五、限流拦截监控

经过查看日志能够知道单机的限流拦截状况,可是一个系统经过会部署上百台服务器,若是要了解整个系统的拦截状况,手工一台台查看然后相加的方式显示是不可取的。
在支付宝中强大的xflush,于是能够利用xflush配置对应的监控,经过监控一目了然了解整个集群的限流状况,主要是配置三个数据:

  1. 限流总量
  2. 请求总量
  3. 拦截总量

而后把这个数据配置到一张报表中,这样就能够方便的在一张报表中了解系统总体限流状况。

相关文章
相关标签/搜索