首页 >> 运营 >> 无需编写一行代码,实现任何方法的流量防护灵活性

无需编写一行代码,实现任何方法的流量防护灵活性

2024-01-20 运营

pplication.run(AApplication.class, args);}

@Api(value = "/", tags = {"入口应用于"})@RestControllerclassAController{...@ApiOperation(value = "HTTP 均交换机灰度入口", tags = {"入口应用于"})@GetMapping("/a")publicString restA(HttpServletRequest request) {returna(request);}privateString a(HttpServletRequest request) {StringBuilder headerSb = new StringBuilder;Enumeration enumeration = request.getHeaderNames;while(enumeration.hasMoreElements) {String headerName = enumeration.nextElement;Enumeration val= request.getHeaders(headerName);while(val.hasMoreElements) {String headerVal = val.nextElement;headerSb.append(headerName + ":"+ headerVal + ",");}}return"A"+SERVICE_TAG+"["+ inetUtils.findFirstNonLoopbackAddress.getHostAddress + "]"+ " -> "+restTemplate.getForObject("", String.class);}...}}

到目前为止是看得见 a 原理的,我们必需看得见 restA 的接口或者说是 GET:/a 的数据库,并且可以对其配备限速降回前提。

开放源码的手段我们须要在示例中的缩减Sentinel的相反,并且对 com.alibabacloud.mse.demo.AApplication.AController#a 原理配备注释或者编码手段缩减 Sentinel 潜能

// 注释手段进行时埋点,注释手段受 AOP 授命的诸多约束@SentinelResource("com.alibabacloud.mse.demo.AApplication.AController:a")privateStringa(HttpServletRequest request) {StringBuilder headerSb = newStringBuilder;Enumeration enumeration = request.getHeaderNames;while(enumeration.hasMoreElements) {StringheaderName = enumeration.nextElement;Enumeration val = request.getHeaders(headerName);while(val.hasMoreElements) {StringheaderVal = val.nextElement;headerSb.append(headerName + ":"+ headerVal + ",");}}return"A"+SERVICE_TAG+"["+ inetUtils.findFirstNonLoopbackAddress.getHostAddress + "]"+ " -> "+restTemplate.getForObject("", String.class);}

// SDK 手段缩减流控降回潜能,须要大举进攻的业务示例privateStringa(HttpServletRequest request) {Entry entry = null;try{entry = SphU.entry("HelloWorld");StringBuilder headerSb = newStringBuilder;Enumeration enumeration = request.getHeaderNames;while(enumeration.hasMoreElements) {StringheaderName = enumeration.nextElement;Enumeration val = request.getHeaders(headerName);while(val.hasMoreElements) {StringheaderVal = val.nextElement;headerSb.append(headerName + ":"+ headerVal + ",");}}return"A"+SERVICE_TAG+"["+ inetUtils.findFirstNonLoopbackAddress.getHostAddress + "]"+ " -> "+restTemplate.getForObject("", String.class);} catch(BlockException ex) {System.err.println("blocked!");} finally{if(entry != null) {entry.exit;}}}

须要编码那就自然时会有许多的官僚主义,要缩减相反要改示例,要原先刊发,很难明白即上即下...一路上都是成本。

那么我们如何可以不编纂一行示例,就可以明白对 com.alibabacloud.mse.demo.AApplication.AController#a 的限速降回潜能呢?

配备试运行时白屏化前提

配备试运行时白屏化前提,并自由选择当前应用于的插件埋点特性的接口,并填入类与原理。

当然可以看得见,我们白屏化前提潜能众所周知大力支持特性限速降回,还大力支持也就是说两处的访问存档以及劝告字符串的收集

观察到而无须原理的数据库

我们在应用于管治找到目的应用于,在接口> 插件埋比较大的看得见而无须原理com.alibabacloud.mse.demo.AApplication.AController#a 的数据库

配备流控前提

我们可以首页接口概览右上角的“新增掩体前提”按钮,去掉一条流控前提:

我们可以配备最有用的 QPS 模式的流控前提,比如后面的例子即约束该接口峰值单机初始化量不少于 1 次。

配备前提后,稍等片刻方可在页面看得见限速效果:

被拒绝的水流量也时会返回错误的资讯。MSE 自带的框架埋点都有当前的流控处理方式逻辑,如 Web 接口被限速后返回 429 Too Many Requests,DAO 层、ja 原理被限速后抛出有持续性等。

总结

Cloud Native

我们将试运行时白屏化潜能抽象为如下前提:WhiteScreenRule = Taget + Action

Target:

ResourceTarget: 目的接口,大力支持 Web、Rpc、SQL 以及也就是说的插件原理

WorkloadTarget: 目的实例,可以自由选择所有机缓冲器或而无须机缓冲器 IP

TrafficCondition: 否均针对持续性、极快初始化、均交换机灰度字句

Action:

相关字符串诊断的资讯的收集,反为量、返回值、文件种系统字符串、Target 并不一定、类加载缓冲器的资讯等

后续交换机否存档打印

进行时限速降回

而无须水流量进行时打标着色(规划中的)

近期 MSE 将推出有基于上述前提的框架结合特性 Enhance 潜能的存档管治,我们众所周知有基于特性 Enhance 潜能的也就是说两处的限速降回,还可以帮助我们洞悉均交换机水流量试运行的暴力行为,并做出有实时的管治与受保护。

MSE Sentinel 不均在帕尔内外APP、天蝎座等电商领域上有广泛的应用于,在互联网金融、在线教育、RPG、直播零售业和其他大型政上市公司零售业也上有大量的实践。有了针对任何原理都可以明白限速降回的潜能后,我们可以短时间特别强调也就是说一个透免费种系统兼具水流量掩体的潜能,让我们有更多的时间段专注于的业务的短时间工业发展,关于种系统的稳定性就放心地交由 MSE ,让专业课程的团队做专业课程的事情。

END

开放源码创企之前在烧钱?

这里有最新开放源码资讯、插件更新、技术干货等主旨

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~

胃反酸水能吃奥美拉唑吗
用什么方法能让感冒嗓子疼好的快点
记忆力越来越差怎么办好
藿香正气口服液治胃肠型感冒吗听听医生怎么说
肠炎宁颗粒小儿用量是多少
友情链接