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

温州市网站制作多少钱wordpress超酷主题

温州市网站制作多少钱,wordpress超酷主题,阿里巴巴官网首页电脑版,目前有哪些网络营销方式目录 概述 环境说明 步骤 Sentinel服务端 Sentinel客户端 依赖 在客户端配置sentinel参数 测试 保护规则设置 设置资源名 设置默认的熔断规则 RestTemplate的流控规则 Feign的流控规则 概述 微服务有很多互相调用的服务#xff0c;构成一系列的调用链路#xf…目录 概述 环境说明 步骤 Sentinel服务端 Sentinel客户端 依赖 在客户端配置sentinel参数 测试 保护规则设置 设置资源名 设置默认的熔断规则 RestTemplate的流控规则 Feign的流控规则 概述 微服务有很多互相调用的服务构成一系列的调用链路如果调用链路中某个服务失效或者网络堵塞等问题而有较多请求都需要调用有问题的服务时这是就会造成多个服务的大面积失效造成服务“雪崩”效应。 服务“雪崩”的根本原因在于服务之间的强依赖为了预防服务“雪崩”这一问题可以做好服务隔离、服务熔断降级、服务限流。 服务隔离当某个服务故障时不波及其他模块不影响整体服务。 服务熔断当下游服务因为请求压力过大造成响应慢或响应失败时上游服务为了保护系统暂时切断对下游服务的调用直接返回一个降级的内容从而保全整体系统。 服务限流限制系统的输入和输出达到保护系统的目的例如限制请求速率超出的请求不处理或者暂缓处理或降级处理。 本文介绍的服务熔断组件是Sentinel Sentinel和Hystrix的对比 对比项目SentinelHystrix隔离策略信号量隔离线程池隔离/信号量隔离熔断策略基于响应时间或失败比例基于失败比例实时指标实现滑动窗口信号量隔离规则配置支持多种数据源支持多种数据源扩展性多个扩展点插件形式基于注解的支持支持支持限流基于QPS支持基于调用关系的限流支持流量整形支持慢启动、匀速器模式不支持系统负载保护支持不支持控制台开箱即用可配置规则、秒级监控、机器发现等不完善 本文的操作是在 服务熔断保护实践--Hystrix 的基础上进行。   环境说明 jdk1.8 maven3.6.3 mysql8 spring cloud2021.0.8 spring boot2.7.12 idea2022 步骤 Sentinel服务端 下载Sentinel服务jar包 cmd进入jar包所在目录 使用java -jar命令启动 D:\soft\sentineljava -jar sentinel-dashboard-1.8.6.jar 浏览器访问localhost:8080 输入用户名/密码sentinel/sentinel 进入到Sentinel控制台 Sentinel客户端 依赖 在父工程声明spring-cloud-alibaba依赖注意在dependencyManagement里声明 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.4.0/versiontypepom/typescopeimport/scope/dependency 在sentinel客户端的服务order-service、order-service-feign_hystrix 引入sentinel依赖 !--引入sentinel-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency 刷新依赖 在客户端配置sentinel参数 application.yml配置sentinel服务控制台信息涉及到的客户端都加这里在order-service服务、order-service-feign_hystrix服务里加 spring:cloud:sentinel:transport:dashboard: localhost:8080 测试 启动eureka、product、order-service、order-service-feign_hystrix服务 浏览器访问 http://localhost:9002/order/buy/1 http://localhost:9003/order/buy/1 查看sentinel控制台首页下方看到两个服务 展开访问子选项 浏览器多次访问服务能看到实时监控如下 保护规则设置 在order-service服务中新建一个Controller类用于sentinel流控测试 由OrderController复制、修改得到Order1Controller package org.example.order.controller;import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.example.order.entity.Product; import org.example.order.feign.ProductFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/order1) public class Order1Controller {Autowiredprivate ProductFeignClient productFeignClient;RequestMapping(value /buy/{id}, method RequestMethod.GET)public Product findById(PathVariable Long id){return productFeignClient.findById(id);}} Order1Controller添加降级方法 /*** 定义降级逻辑* 熔断执行的降级方法*/public Product orderBlockHandler(Long id){Product product new Product();product.setProductName(触发熔断的降级方法);return product;}/*** 定义降级逻辑* 抛出异常执行的降级方法*/public Product orderExceptionHandler(Long id){Product product new Product();product.setProductName(抛出异常执行的降级方法);return product;} 在请求的方法上方添加SentinelResource注解 /*** SentinelResource* blockHandler: 声明熔断时执行的降级方法限流熔断降级* fallback: 抛出异常执行的降级方法异常降级*/SentinelResource(blockHandler orderBlockHandler, fallback orderExceptionHandler)RequestMapping(value /buy/{id}, method RequestMethod.GET)public Product findById(PathVariable Long id){return productFeignClient.findById(id);} 修改product服务的findById方法注释掉模拟网络延迟的代码 启动eureka、product、order服务 多次访问order1接口方法 http://localhost:9002/order1/buy/1 浏览器访问Sentinel控制台 http://localhost:8080/#/dashboard/metric/service-order 看到实时监控数据如下 熟悉相关流控规则设置界面 点击如图流控按钮添加流控规则看到如下界面 点击熔断按钮看到如下界面 点击热点按钮看到如下界面 点击授权按钮看到如下界面 修改order-service服务Order1Controller类的findById方法添加如下代码 if(id ! 1){throw new RuntimeException(异常的id抛出异常);} 重启order-service服务 浏览器访问 http://localhost:9002/order1/buy/1 刷新sentinel控制台 点击添加熔断规则 访问正常访问 http://localhost:9002/order1/buy/1 访问异常访问 http://localhost:9002/order1/buy/2 触发异常降级方法按住Ctrl R组合键将异常访问次数超过设置阈值1 5s熔断时长内访问id为正常值1也返回的是异常降级方法 5s熔断时长后访问id为正常值1能正常访问了 设置资源名 资源名称默认为包名类名方法名 如何自定义资源名称方法如下 修改接口方法SentinelResource添加value findById设置 /*** SentinelResource* blockHandler: 声明熔断时调用的降级方法* fallback: 抛出异常执行的降级方法* value: 自定义资源名称默认 包名类名方法名*/SentinelResource(value findById,blockHandler orderBlockHandler, fallback orderExceptionHandler)RequestMapping(value /buy/{id}, method RequestMethod.GET)public Product findById(PathVariable Long id){ 重启order服务 发现资源名称变为了自定义的findById 同时发现一个问题在重启order服务后也清空了熔断规则问题 可以设置默认的熔断规则来解决这个问题。 设置默认的熔断规则 在order-service服务里配置默认的熔断规则 修改application.yml添加如下sentinel的datasource配置 spring:cloud:sentinel:datasource:ds:file:file: classpath:flowrule.jsondata-type: jsonrule-type: flow 在resources目录下添加flowrule.json文件 [{resource: orderFindById,controlBehavior: 0,count: 1,grade: 1,limitApp: default,strategy: 0} ] 一条限流规则主要由下面几个因素组成 resource资源名即限流规则的作用对象 count: 限流阈值 grade: 限流阈值类型QPS 或并发线程数 limitApp: 流控针对的调用来源若为 default 则不区分调用来源 strategy: 调用关系限流策略 controlBehavior: 流量控制效果直接拒绝、Warm Up、匀速排队 这些值可以参考RuleConstant.class双击shift 搜索RuleConstant找到RuleConstant.class 例如 controlBehavior0 代表为默认的流量控制 直接拒绝或快速失败 controlBehavior1代码WARN UP(预热) 重启order服务 访问服务 查看Sentinel控制台能看到默认的流控规则了。 设置默认的熔断规则总结 通用的流控规则在方法上方添加注解SentinelResource(value findById,blockHandler orderBlockHandler, fallback orderExceptionHandler)同时编写对应的降级方法。 RestTemplate的流控规则 修改order服务 LoadBalanced Bean SentinelRestTemplate(fallback handleFallback, fallbackClass ExceptionUtil.class, blockHandlerhandleBlock,blockHandlerClassExceptionUtil.class) public RestTemplate restTemplate(){return new RestTemplate(); } SentinelRestTemplate说明 异常降级 fallback异常降级方法 fallbackClass异常降级类 限流降级 blockHandler限流降级方法 blockHandlerClass限流降级类 添加异常类 package org.example.order.exception;import com.alibaba.cloud.sentinel.rest.SentinelClientHttpResponse; import com.alibaba.csp.sentinel.slots.block.BlockException; import com.alibaba.fastjson.JSON; import org.example.order.entity.Product; import org.springframework.http.HttpRequest; import org.springframework.http.client.ClientHttpRequestExecution;public class ExceptionUtil {//限流熔断业务逻辑public static SentinelClientHttpResponse handleBlock(HttpRequest request, byte[] body,ClientHttpRequestExecution execution, BlockException ex) {System.err.println(Oops: ex.getClass().getCanonicalName());Product product new Product();product.setProductName(限流熔断降级);return new SentinelClientHttpResponse(JSON.toJSONString(product));}//异常熔断业务逻辑public static SentinelClientHttpResponse handleFallback(HttpRequest request, byte[] body,ClientHttpRequestExecution execution, BlockException ex) {System.err.println(fallback: ex.getClass().getCanonicalName());Product product new Product();product.setProductName(异常熔断降级);return new SentinelClientHttpResponse(JSON.toJSONString(product));} } 查看sentinel配置SentinelProperties.class 修改sentinel配置使得SpringCloud应用启动时直接与Sentinel建立心跳连接,访问sentinel 控制台就可以看到服务连接情况不需要第一次访问应用的某个接口时才连接sentinel。 spring.cloud.sentinel.eager true 复制Order1Controller得到Order2Controller修改代码后如下 package org.example.order.controller;import org.example.order.entity.Product; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;RestController RequestMapping(/order2) public class Order2Controller {Autowiredprivate RestTemplate restTemplate;RequestMapping(value /buy/{id}, method RequestMethod.GET)public Product findById(PathVariable Long id){if(id ! 1){throw new RuntimeException(异常的id抛出异常);}return restTemplate.getForObject(http://service-product/product/1, Product.class);} } 启动eureka、product、order服务 访问sentinel控制台直接能看到服务 访问 添加流控规则 测试 访问1次没有触发流控规则能正常访问到数据 http://localhost:9002/order2/buy/1 多次访问触发流控规则调用了降级方法 控制台显示显示如下 确实是ExceptionUtil的信息 RestTemplate的流控规则总结 RestTemplate的Bean上方添加注解SentinelRestTemplate 添加异常处理的类 Feign的流控规则 在order-service-feign_hystrix服务修改 在feign中开启sentinel熔断 feign:# 在feign中开启hystrix熔断#circuitbreaker:# enabled: true# 在feign中开启sentinel熔断sentinel:enabled: true 配置FeignClient 和使用Hystrix的方式一致需要配置FeignClient接口以及通过 fallback 指定熔断降级方法 启动eureka、product、order-service-feign_hystrix服务 测试 浏览器访问 查看sentinel控制台 添加流控规则 访问次数小于阈值正常返回数据 多次访问超过阈值触发了Feign熔断的降级方法 Feign的流控规则总结 添加依赖 在feign中开启sentinel熔断支持 配置FeignClient接口及实现类里定义熔断方法 完成enjoy it!
http://www.hkea.cn/news/14314602/

相关文章:

  • 绍兴网站快速排名优化大连哪家网站公司好
  • wordpress可以仿任何站做网站是要云空间吗
  • 宝应123网站建设网腾讯云服务器安装宝塔教程
  • 上海艺佳建设发展有限公司网站信誉好的盐城网站开发
  • html5 微信网站中国造价工程建设管理协会网站
  • 得实网站建设上海的招聘网站有哪些
  • 做网站什么需要好养老院网站开发背景
  • 网站推广必做工作总结怎么写
  • 中文软件开发工具搜索引擎优化的主要工作有
  • 博学云网站建设软文广告经典案例短的
  • 网站备案个人可以做吗建设银行网站机构特点业务发展
  • 做国际网站的上海高端网站公司饲料 东莞网站建设
  • 自己做网站如何挣钱免费自助建站
  • 镇江房地产网站建设wordpress培训机构主题
  • 杭州萧山区专业做网站的公司工商网上注册营业执照
  • 大学专业宣传网站开发课题意义杭州旅游团购网站建设
  • 单位门户网站怎么制作小程序
  • 仓库管理系统网站建设网站开发项目实例
  • WordPress中文名字叫什么seo基础培训
  • wordpress 3.9网站栏目页 优化
  • 如何介绍自己做的网站wordpress使用hexo主题
  • 中建西部建设广通讯网站网站建站网站网站维护
  • dw建设网站视频河南建设建设监理协会网站
  • 做网站申请多少类商标搜索引擎优化的定义
  • 怎么打开域名网站全国定制网站服务器云主机
  • 德州市建设局质监站网站河南郑州新闻
  • 河北建设信息平台网站新洲建设局网站
  • flash网站源码上海网站建设工作室
  • 网站建设 解决方案1688是什么平台
  • 重庆怎样建设网站上海地产网站建设