Sentinel流量控制和熔断降级执行流程与源码分析.docxVIP

Sentinel流量控制和熔断降级执行流程与源码分析.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Sentinel流量把握和熔断降级执行流程与源码分析 sentinel 是阿里针对服务流量把握、熔断降级的框架,如何使用官方都有很具体的文档,下载它的源码包 里面对各大主流框都做了适配按理,本系列文章目的 次要通过源码分析 sentinel 流量把握和熔断降级的流程 提前预备好 sentinel 把握台 如有下载源码启动 sentinel dashboard 模块 本文演示的项目通过引入 spring-cloud-starter-alibaba-sentinel 包来实现接入 sentinel 功能 入门案例 下面举一个最简约的案例埋点来引出流控入口 public?String?getOrderInfo(String?orderNo)?{ ?????ContextUtil.enter(getOrderInfo,?application-a); ????????Entry?entry?=?null; ????????try?{ ????????????//?name:资源名?EntryType?流量类型为入口还是出口,系统规章只针对入口流量,?batchCount:当前恳求流量,?args:参数 ????????????entry?=?SphU.entry(getOrderInfo,?EntryType.IN,?1,?orderNo); ????????????getUserInfo(); ????????}?catch?(BlockException?e)?{ ????????????e.printStackTrace(); ????????}?finally?{ ????????????entry.exit(); ????????} ????????return?orderInfo?=??+?orderNo; ????} ????public?String?getUserInfo()?{ ????????Entry?entry?=?null; ????????try?{ ????????????entry?=?SphU.entry(getUserInfo,?EntryType.OUT,?1); ????????}?catch?(BlockException?e)?{ ????????????e.printStackTrace(); ????????}?finally?{ ????????????entry.exit(); ????????} ????????return?userInfo; ????} public?static?Entry?entry(String?name,?EntryType?trafficType,?int?batchCount,?Object...?args)?throws?BlockException 也可以通过注解的方式引入,执行方法时 SentinelResourceAspect 会做拦截进行流控处理,当然什么都不配也是可以的,由于引入 spring-cloud-starter-alibaba-sentinel 包 spring mvc 和 spring webflux 做了适配,自动会对每一个恳求做埋点 @GetMapping(getOrderInfo) @SentinelResource(value?=?/getOrderInfo,?entryType?=?EntryType.IN) public?String?getOrderInfo(@RequestParam(orderNo)?String?orderNo)?{ ????return?orderInfo?=??+?orderNo; } ContextUtil.enter(getOrderInfo, application-a) 来表示调用链的入口,可以临时理解为上下文,一般不做声明 后面会默认创建 第一个参数为 context-name,区分不同的调用链入口,默认常量值 sentinel_default_context, 其次参数为调用来源,这个参数可以细分从不同应用来源发出的恳求,授权规章白名单和黑名单会依据该参数做限制, 然后通过 SphU.entry()埋点进入,下面说下这个方法几个参数的含义 name:当前资源名 trafficType:流量类型 分别为入口流量和出口流量。入口流量和出口流量执行过程都是差不多,只是入口流量会多了一个系统规章拦截,像是上面案例从订单服务调用 getUserInfo,getUserInfo 是去调用用户服务,它的流量方式是出去的,压力都在用户服务那边,不用考虑当前服务器的压力,所以标为出口流量 batchCount:当前流量数量,一般默认为 1 args:参数,后面做热点参数规章时用到 Bl

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档