image-jyov.png

  • 流控规则
    • 资源名
      • 场景:在一个电商系统中,有一个/productList接口用于获取商品列表。资源名就填写/productList。当大量用户同时访问商品列表页时,通过对这个资源名对应的接口进行流量控制,防止系统因过多请求而崩溃。
    • 针对资源
      • 场景:可以选择具体的微服务、接口或方法。例如,在一个包含用户服务、商品服务、订单服务的系统中,若只想对商品服务下的/productDetail接口进行流量控制,就在“针对资源”中明确选择该接口。
    • 阈值类型
      • QPS(每秒查询率)
        • 场景:对于一个提供新闻资讯的接口/news,假设服务器性能最多支持每秒处理100个新闻查询请求,就将阈值类型设为QPS,单机阈值设为100。这样,当每秒请求数超过100时,就会触发流量控制。
      • 并发线程数
        • 场景:在一个图像识别服务中,每个识别任务需要占用一定的线程资源。对于接口/imageRecognition,已知服务器最多能同时处理10个识别任务线程,将阈值类型设为并发线程数,单机阈值设为10。当同时处理的识别任务线程数超过10时,就进行流量控制。
    • 单机阈值
      • 场景:对于一个提供天气查询的接口/weather,经过性能测试发现服务器在稳定状态下每秒能处理50个查询请求,那么单机阈值就设为50。当每秒请求数超过这个值时,就会采取流量控制措施。
    • 流控模式
      • 直接
        • 场景:对于一个简单的登录接口/login,直接对该接口的请求进行流量控制。当请求量超过设定的阈值时,直接拒绝多余的请求,这种方式简单直接,适用于对单个接口进行独立的流量控制。
      • 关联
        • 场景:在一个电商系统中,购买商品的接口/placeOrder和查询购物车的接口/cart有关联。当用户频繁查询购物车(/cart)且请求量超过一定阈值时,可能会对购买商品(/placeOrder)的接口进行流量控制,因为购物车的频繁查询可能意味着用户正在大量操作购物车,即将进行购买行为,关联模式可以根据/cart的流量情况对/placeOrder进行合理的流量控制。
      • 链路
        • 场景:在一个分布式系统中,有多个微服务组成的链路。从用户请求到商品详情展示,经过了用户认证服务、商品服务等多个环节。对于商品服务中的/productDetail接口,通过链路模式可以根据整个链路中的流量情况,如用户认证服务的流量,来对/productDetail接口进行更精准的流量控制,考虑到整个请求链路的负载情况。
    • 流控效果
      • 快速失败
        • 场景:对于一个不太重要的辅助功能接口,如/feedback(用户反馈接口),当请求超过流量控制阈值时,直接返回错误信息给用户,让用户稍后再试,这种方式简单直接,对用户体验的影响相对较小,因为反馈功能不是核心业务流程。
      • Warm Up(预热)
        • 场景:对于一个刚启动的服务接口,如一个新上线的促销活动接口/promotion,设置Warm Up效果。开始时流量阈值较低,随着时间慢慢增加到设定的正常阈值,这样可以避免服务刚启动就被大量请求冲击,给服务一个预热的过程,让系统资源(如数据库连接池等)有一个逐渐适应的阶段。
      • 排队等待
        • 场景:对于一个订单处理接口/processOrder,当请求超过流量控制阈值时,让请求排队等待,而不是直接拒绝。适用于对请求顺序有要求且业务允许一定延迟的场景,比如订单处理有先后顺序,不能直接拒绝用户的订单请求,通过排队等待可以在系统可承受范围内逐步处理订单。

image-vflj.png

  • 熔断规则(降级规则)
    • 资源名
      • 场景:在一个支付系统中,有一个/payment接口用于处理支付请求。资源名填写/payment,当这个接口出现异常情况时,通过熔断规则对其进行降级处理。
    • 熔断策略
      • 慢调用比例
        • 场景:对于一个查询数据库获取用户信息的接口/getUserInfo,如果超过60%的调用响应时间超过1秒(可自定义),就触发熔断。这意味着当数据库查询过慢,影响系统整体性能时,通过熔断来保护系统,避免大量慢调用导致系统卡顿。
      • 异常比例
        • 场景:在一个调用第三方接口获取物流信息的/getLogistics接口中,当第三方接口返回异常的比例超过40%(可自定义)时,触发熔断。这样可以防止因第三方接口不稳定而导致系统出现大量错误,及时切断与不稳定外部接口的连接,保护系统内部的稳定性。
      • 异常数
        • 场景:对于一个文件上传接口/uploadFile,当连续出现5次(可自定义)上传文件失败的异常时,触发熔断。这种方式可以针对频繁出现同一类型异常的情况,快速采取熔断措施,避免系统在有问题的功能上浪费资源。
    • 阈值
      • 场景:根据不同接口的重要性和性能要求设置不同的阈值。对于核心业务接口,如/placeOrder(下单接口),异常比例阈值可以设得较低,如30%,以保证系统的稳定性;对于非核心接口,如/getBanner(获取广告横幅接口),异常比例阈值可以设得较高,如60%。
    • 最小请求数
      • 场景:对于一个新上线的接口/newFeature,设置最小请求数为20。这意味着至少要有20次请求调用这个接口后,才会根据熔断策略去判断是否熔断。这样可以避免新接口在刚开始少量调用时,因偶然的异常或慢调用就触发熔断。
    • 熔断时长
      • 场景:对于一个可能会出现短暂波动的接口/priceUpdate(价格更新接口),熔断时长可以设为30秒。当触发熔断后,在30秒内快速失败,30秒后重新尝试调用,观察接口是否恢复正常。如果接口恢复正常,就恢复正常访问;如果仍然异常,可能会再次触发熔断。
    • 统计窗口时长
      • 场景:对于一个有一定时间规律的接口,如/dailyReport(每日报表接口),统计窗口时长可以设为24小时。在这24小时内统计接口的慢调用比例、异常比例或异常数等指标,根据这些指标来判断是否触发熔断,这样可以更好地结合接口的使用周期来进行熔断规则的设置。

  • 热点规则
    • 资源名
      • 场景:在一个视频网站中,有一个/videoPlay接口用于播放视频。资源名填写/videoPlay,针对这个接口的热点参数(如热门视频的ID)进行流量控制。
    • 参数索引
      • 场景:对于/videoPlay接口,它的参数列表可能是(视频ID,播放分辨率)。如果视频ID是第一个参数,参数索引就设为0。通过这个索引,Sentinel可以准确地定位到要进行热点参数控制的参数位置。
    • 单机阈值
      • 场景:对于一个热门视频网站的/videoPlay接口,假设热门视频(如视频ID为1234的视频)每秒最多允许1000人同时播放,就将单机阈值设为1000。当对这个视频ID的播放请求每秒超过1000次时,就会触发热点参数流量控制。
    • 统计窗口时长
      • 场景:对于一个体育赛事直播的/liveStream接口,统计窗口时长可以设为比赛时长,如2小时。在这2小时内统计某个比赛直播(通过直播ID这个热点参数区分)的请求量,根据请求量来判断是否对这个热点参数进行流量控制,以适应比赛期间观众流量的波动。
    • 参数类型
      • 场景:对于/userProfile接口,它有一个参数是用户年龄(整数类型)。当要对某个特定年龄区间(如30 - 40岁)的用户访问进行热点参数控制时,参数类型就选择整数类型,通过这个类型可以准确地识别和控制与年龄参数相关的流量。
    • 高级选项 - 限流模式
      • 场景:对于/productSearch接口,它有一个搜索关键词参数。当要对热门搜索关键词进行流量控制时,限流模式可以选择“直接”模式,即直接对带有热门关键词的搜索请求进行流量控制;或者选择“关联”模式,例如当某个热门品牌关键词(如“苹果手机”)搜索量过大时,关联控制与该品牌相关产品的其他搜索请求,如“苹果手机配件”的搜索请求。