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

信息技术制作网站首页上海外贸网站建设

信息技术制作网站首页,上海外贸网站建设,东莞微信网站制作,传统企业如果建立网站限流规则配置 每次服务重启后 之前配置的限流规则就会被清空因为是内存态的规则对象#xff0c;所以就要用到Sentinel一个特性ReadableDataSource 获取文件、数据库或者配置中心是限流规则 依赖#xff1a;spring-cloud-alibaba-sentinel-datasource 通过文件读取限流规则…限流规则配置 每次服务重启后 之前配置的限流规则就会被清空因为是内存态的规则对象所以就要用到Sentinel一个特性ReadableDataSource 获取文件、数据库或者配置中心是限流规则 依赖spring-cloud-alibaba-sentinel-datasource 通过文件读取限流规则 spring.cloud.sentinel.datasource.ds1.file.fileclasspath:flowrule.json spring.cloud.sentinel.datasource.ds1.file.data-typejson spring.cloud.sentinel.datasource.ds1.file.rule-typeflow在resources新建一个文件 比如flowrule.json 添加限流规则 [{resource: resource,controlBehavior: 0,count: 1,grade: 1,limitApp: default,strategy: 0} ]RestController public class TestController {GetMapping(/test1)SentinelResource(value resource)public String sayHello(String name){if(namenull || name.trim().length()1)throw new IllegalArgumentException(参数为空!);return Hello name!;} }一条限流规则主要有 resource资源名即限流规则的作用对象 count限流阈值 grade限流阈值类型0表示线程,1表示QPS limitApp流控针对的调用来源若为 default 则不区分调用来源 strategy调用关系限流策略,0表示直接,1表示关联,2表示链路 controlBehavior流量控制效果0表示快速失败,1表示Warm Up,2表示排队等待 隔离降级 限流是一种预防措施虽然限流可以尽量避免因高并发而引起的服务故障但服务还会因为其它原因而故障。而要将这些故障控制在一定范围避免雪崩就要靠线程隔离舱壁模式和熔断降级手段了。 线程隔离就是调用者在调用服务提供者时给每个调用的请求分配独立线程池出现故障时最多消耗这个线程池内资源避免把调用者的所有资源耗尽 熔断降级是在调用方这边加入断路器统计对服务提供者的调用如果调用的失败比例过高则熔断该业务不允许访问该服务的提供者了。 不管是线程隔离还是熔断降级都是对客户端调用方的保护。需要在调用方发起远程调用时做线程隔离、或者服务熔断。 RestTemplate整合Sentinel Spring Cloud Alibaba Sentinel 支持对 RestTemplate 的服务调用使用 Sentinel 进行保护在构造RestTemplate bean的时候需要加上 SentinelRestTemplate 注解。 SentinelRestTemplate 注解的属性支持限流(blockHandler, blockHandlerClass)和降级(fallback, fallbackClass)的处理。 SentinelRestTemplate用于sentinel 集成 RestTemplate。可以添加在 RestTemplate上全局的限流容错处理优先级低于局部限流容错注解。例如 SentinelRestTemplate(blockHandler handleException, blockHandlerClass ExceptionUtil.class, fallback fallback,fallbackClass ExceptionUtil.class) blockHandler限流策略 方法名方法必须是静态的 blockHandlerClass 限流方法类 fallback 熔断降级策略方法名方法必须是静态的 fallbackClass 熔断降级类 Bean LoadBalance SentinelRestTemplate public RestTemplate restTemplate(){return new RestTemplate(); }对应实现static修饰参数类型不能出错 public class ExceptionUtil {// 服务流量控制处理public static ClientHttpResponse handleException(HttpRequest request, byte[] body, ClientHttpRequestExecution execution, BlockException exception){exception.printStackTrace();return new SentinelClientHttpResponse( JSON.toJSONString(new Product(1, 服务流量控制处理-托底数据)));}// 服务熔断降级处理public static ClientHttpResponse fallback(HttpRequest request,byte[] body, ClientHttpRequestExecution execution, BlockException exception) {exception.printStackTrace();return new SentinelClientHttpResponse( JSON.toJSONString(new Product(1, 服务熔断降级处理-托底数据)));} }FeignClient整合Sentinel SpringCloud中微服务调用都是通过Feign来实现的因此做客户端保护必须整合Feign和Sentinel。 在启动类上面加个注解 EnableFeignClients 修改OrderService的application.yml文件开启Feign的Sentinel功能 feign.sentinel.enabledtrue开启feign对sentinel的支持 方法1定义对应FeignClient接口的实现类提供对应的处理 Component public class UserClientImpl implements UserClient {Overridepublic JsonResult getAllUsers() {return JsonResult.failure(103,加载失败...);} }然后在FeignClient上添加注解说明 FeignClient(valueuser-provider,fallback UserClientImpl.class) public interface UserClient {GetMapping(/users)public JsonResult getAllUsers(); }方法2自定义工厂 [推荐使用] Component public class MyFeignFactory implements FallbackFactoryUserClient {Overridepublic UserClient create(Throwable cause) {return new UserClient() {Overridepublic JsonResult getAllUsers() {return JsonResult.failure(1031,加载失败...);}};} }在配置类中添加配置 Bean public MyFeignFactory myClientFallbackFactory(){return new MyFeignFactory(); }在FeignClient接口上添加配置使用MyFeignFactory FeignClient(valueuser-provider,fallbackFactory MyFeignFactory.class) public interface UserClient {GetMapping(/users)public JsonResult getAllUsers(); }失败降级逻辑 业务失败后不能直接报错而应该返回用户一个友好提示或者默认结果这个就是失败降级逻辑。可以给FeignClient编写失败后的降级逻辑。 方式一FallbackClass无法对远程调用的异常做处理 方式二FallbackFactory可以对远程调用的异常做处理 定义类实现FallbackFactory Slf4j public class UserClientFallbackFactory implements FallbackFactoryUserClient {Overridepublic UserClient create(Throwable throwable) {return new UserClient() {Overridepublic User findById(Long id) {log.error(查询用户异常, throwable);return new User();}};} }项目中的DefaultFeignConfiguration类中将UserClientFallbackFactory注册为一个Bean Bean public UserClientFallbackFactory userClientFallbackFactory(){return new UserClientFallbackFactory(); }项目中的UserClient接口中使用UserClientFallbackFactory FeignClient(value userservice, fallbackFactory UserClientFallbackFactory.class) public interface UserClient {GetMapping(/user/{id})User findById(PathVariable(id) Long id); }在需要被保护的方法上使用SentinelResource注解进行熔断配置。与Hystrix不同的是Sentinel对抛出异常和熔断降级做了更加细致的区分通过 blockHandler 指定熔断降级方法通过 fallback 指定 触发异常执行的降级方法 GetMapping(/buy/{id}) SentinelResource(valueorder,blockHandler orderblockHandler,fallbackorderfallback) public Product order(PathVariable Long id) {return restTemplate.getForObject(http://shop- service/product/product/1, Product.class); } //降级方法 public Product orderblockHandler(Long id) {Product product new Product();product.setId(-1l);product.setProductName(触发熔断降级方法);return product; } //降级方法 public Product orderfallback(Long id) {Product product new Product();product.setId(-1l);product.setProductName(触发抛出异常方法);return product; }隔离降级总结 Sentinel支持的雪崩解决方案线程隔离的仓壁模式、降级熔断
http://www.w-s-a.com/news/137263/

相关文章:

  • 河间网站建设制作null wordpress theme
  • h5网站制作网站开发网站建设文翻译工作
  • 网站建设 税种秦皇岛哪有网站优化公司
  • 专业开发网站设计找人做网页需要多少钱
  • 手机购物网站 建站网站建设网站制作网站设计
  • 基于iview的网站开发模板小程序制作需要什么语言
  • 精美网站设计保定建行网站首页登录
  • 网站建设常见问题做网站保存什么格式最好
  • 营销型网站建设与网页设计网站建设 amp 找VX cp5173
  • 新网站该如何做网站优化呢儿童手工
  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南
  • 邓砚谷电子商务网站建设镇江网
  • 网站空间支持什么程序工作服款式
  • 网站单页品牌网站建设 蝌蚪5小
  • 怎么做外贸网站需注意哪些做电脑系统的网站
  • 网站建设介绍推广用语河南网站优化外包服务
  • 课程网站模板贵州省城乡与建设厅网站
  • 网站模板及源码谁家网站用户体验做的好
  • 做网站的技术要求搜索栏在wordpress菜单上位置
  • 如何给网站弄ftpwordpress怎么添加关键词描述
  • 成都工程建设信息网站金科网站建设
  • 传媒公司 网站开发厦门网站建设门户
  • 宿城区建设局网站做网站的绿色背景图
  • 网站空间托管合同 .doc网站开发团队 组建
  • 网站建设书本信息it运维服务
  • 四核网站建设设计网站流程
  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的