目录
一、背景
略
二、技术架构
三、名词解释
名词 | 解释 |
---|---|
Apollo配置 | 项目中的apollo配置,这里主要是指接口降级配置信息 |
自定义埋点 | Sentinel的埋点,采用自定义上报的方式,通过Apollo配置的url字段,就是改埋点的一部分。可参考下方的Apollo配置。 |
熔断 | 即,阻断请求,直接走降级逻辑;这里的熔断是指Sentinel 的熔断规则,sentinel会根据我们上报的自定义埋点,进行统计异常次数,当达到熔断条件时,将会同步到我们应用,我们应用就会直接走降级逻辑。可参考上图的①号链路。 |
降级逻辑 | 当业务发生异常时,执行的兜底逻辑。我们这里会对Apollo配置的埋点接口,进行缓存,当触发降级时会读取缓存数据返回给前端。 触发降级逻辑的链路有两个(如:①、②链路),①号链路属于Sentinel触发的熔断机制导致;②号链路属于Sentinel熔断机制未触发、或未配置,而执行业务时发生错误了,导致执行了降级逻辑。 |
三、Apollo配置使用说明
|
四、响应头规范
两种状态码:
读取到缓存返回200,读取不到降级缓存,返回203状态,以及空对象。
/**
* 降级相关响应头
*/
// 响应来源:ResponseSourceEnum.class
public static final String RESPONSE_SOURCE = "X-Gd-Response-Source";
// 是否熔断(断路) 1:是 ,0:不是
public static final String RESPONSE_SHORT_CIRCUITED = "X-Gd-Response-Short-Circuited";
// 是否降级响应 1:是 ,0:不是
public static final String RESPONSE_FROM_FALLBACK = "X-Gd-Response-From-Fallback";