当前位置: 首页 > news >正文

外贸网站流量分析网页在线发短信平台

外贸网站流量分析,网页在线发短信平台,网站行业认证怎么做,网站服务器空间大小Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则: • 通过 API 直接修改 (loadRules) • 通过 DataSource 适配不同数据源修改 通过 API 修改比较直观,可以通…

Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则:

• 通过 API 直接修改 (loadRules)

• 通过 DataSource 适配不同数据源修改

通过 API 修改比较直观,可以通过以下几个 API 修改不同的规则:

FlowRuleManager.loadRules(List rules); // 修改流控规则
DegradeRuleManager.loadRules(List rules); // 修改降级规则
手动修改规则(硬编码方式)一般仅用于测试和演示,生产上一般通过动态规则源的方式来动态管理规则。

3.1 DataSource
上述 loadRules() 方法只接受内存态的规则对象,但更多时候规则存储在文件、数据库或者配置中心当中。DataSource 接口给我们提供了对接任意配置源的能力。相比直接通过 API 修改规则,实现 DataSource 接口是更加可靠的做法。

我们推荐通过控制台设置规则后将规则推送到统一的规则中心,客户端实现 ReadableDataSource 接口端监听规则中心实时获取变更,流程如下:
在这里插入图片描述
DataSource 扩展常见的实现方式有:

• 拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更;

• 推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。

Sentinel 目前支持以下数据源扩展:

• Pull-based: 动态文件数据源、Consul, Eureka

• Push-based: ZooKeeper, Redis, Nacos, Apollo, etcd

2.3.2 poll
实现拉模式的数据源最简单的方式是继承AutoRefreshDataSource抽象类,然后实现 readSource() 方法,在该方法里从指定数据源读取字符串格式的配置数据。比如基于文件的数据源

2.3.3 push
实现推模式的数据源最简单的方式是继承AbstractDataSource抽象类,在其构造方法中添加监听器,并实现 readSource() 从指定数据源读取字符串格式的配置数据。基于 Nacos 的数据源

2.3.4 注册数据源
通常需要调用以下方法将数据源注册至指定的规则管理器中:

ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId, parser);
FlowRuleManager.register2Property(flowRuleDataSource.getProperty());

若不希望手动注册数据源,可以借助 Sentinel 的 InitFunc SPI 扩展接口。只需要实现自己的 InitFunc 接口,在 init 方法中编写注册数据源的逻辑。比如:

package com.test.init;public class DataSourceInitFunc implements InitFunc {@Overridepublic void init() throws Exception {final String remoteAddress = "localhost";final String groupId = "Sentinel:Demo";final String dataId = "com.alibaba.csp.sentinel.demo.flow.rule";ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId,source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));FlowRuleManager.register2Property(flowRuleDataSource.getProperty());}
}

接着将对应的类名添加到位于资源目录(通常是 resource 目录)下的 META-INF/services 目录下的 com.alibaba.csp.sentinel.init.InitFunc 文件中,比如:

com.test.init.DataSourceInitFunc
这样,当初次访问任意资源的时候,Sentinel 就可以自动去注册对应的数据源了。

2.3.5 示例
代码见springboot-sentinel1项目

2.3.5.1 InitFunc
可以通过Sentinel的InitFunc SPI来实现接口的扩展,从而配置限流规则

public class FlowRuleInitFunc implements InitFunc{@Overridepublic void init() throws Exception {List<FlowRule> rules=new ArrayList<>();FlowRule rule=new FlowRule();rule.setResource("doTest");rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setCount(5);rules.add(rule);FlowRuleManager.loadRules(rules);}
}

• 在META-INF/services/com.alibaba.csp.sentinel.init.InitFunc文件中,添加自定义扩展点的全路径

• 重启服务之后,会触发限流。

2.3.2.2 扩展Nacos数据源
• 添加Nacos Datasouce依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><version>1.8.0</version>
</dependency>

• 修改数据源加载方式

public class DataSourceInitFunc implements InitFunc{private final String remoteAddress="192.168.216.128"; //Nacos 远程服务hostprivate final String groupId="SENTINEL_GROUP"; //Nacos GroupIDprivate final String dataId="com.gupaoedu.sentinel.demo.flow.rule";@Overridepublic void init() throws Exception {ReadableDataSource<String,List<FlowRule>> flowRuleDataSource=new NacosDataSource<>(remoteAddress,groupId,dataId,source-> JSON.parseObject(source,new
TypeReference<List<FlowRule>>(){}));FlowRuleManager.register2Property(flowRuleDataSource.getProperty());}
}

• 在Nacos上添加配置
在这里插入图片描述
• 通过访问测试,即可看到被限流的效果。

• 也可以在 ${用户}/logs/csp/sentinel-record.log.2020-09-22 文件中看到sentinel启动过程中动态数据源的加载过程。

2.3.6 基于配置文件
基于配置文件的动态限流

spring.cloud.sentinel.transport.clientIp=192.168.216.128:7777
spring.cloud.sentinel.datasource.nacos.nacos.serverAddr=192.168.216.128:8848
spring.cloud.sentinel.datasource.nacos.nacos.dataId=com.gupaoedu.sentinel.demo.flow.rule
spring.cloud.sentinel.datasource.nacos.nacos.groupId=SENTINEL_GROUP
spring.cloud.sentinel.datasource.nacos.nacos.dataType=json
spring.cloud.sentinel.datasource.nacos.nacos.ruleType=flow
spring.cloud.sentinel.datasource.nacos.nacos.username=nacos
spring.cloud.sentinel.datasource.nacos.nacos.password=nacos
http://www.yayakq.cn/news/255438/

相关文章:

  • 淘宝里面的网站怎么做的杭州市建设工程招标信息网
  • 江西省做网站网站规划 时间
  • 广州购物网站建设价格网页设计师工作总结
  • 如何寻找seo网站建设客户企业局域网的搭建
  • 免费建设网站平台网站上网络营销
  • 河北建设银行招聘网站专做民宿预定的网站
  • 自己制作上传图片的网站怎么做个人html网站
  • 社交网站开发背景百度优化网站建设
  • 机构改革网站建设搜索引擎网站入口
  • 电子商务网站建设清华大学多用户商城系统源码教程
  • 阿里企业的网站建设通州网站开发
  • 网站服务器++免费网站怎么做外链接
  • 网站开发全程实例专业网页设计软件
  • 网站开发知识点总结北京旅游网页设计
  • 网站备案 中国免费小程序开发制作
  • 网站建设公司怎样做账建设工程网站有哪些
  • 建设手机网站新冠疫苗接种查询
  • 广东双语网站建设多少钱西安蓝海网站建设
  • 百度网站免费电话国外建筑设计网站
  • 公司网站后台维护网站版面的美化原则
  • 中国公路建设在哪个网站公示网站域名备案谁来做
  • 渭南网站制作学校如何做企业微信
  • 广东网站开发收费买电脑wordpress
  • 网站备案取消 后果宣传部网站建设方案
  • 做一个小说网站需要多少钱成都网站建设公司
  • 哪个网站可以做高数题做母婴的网站
  • 餐饮加盟网站怎么做想要接网站业务如何做
  • 哪家微网站建设国内个人网站搭建
  • 保定网站制作价格表单标签wordpress
  • 2020给个免费网站好人有好报网站logo衔接