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

湖南网络推广公司泉州网站建设优化公司

湖南网络推广公司,泉州网站建设优化公司,莱芜金点子信息港最新招聘,印刷报价网站源码前言#xff1a; 在分布式系统中#xff0c;选择合适的熔断机制是保护系统免受故障影响的关键。本文将介绍使用信号量和线程池两种常见的熔断机制#xff0c;并提供Java和Spring Cloud Alibaba框架下的示例代码#xff0c;帮助您深入理解和应用。 1. 信号量熔断机制 信号…前言 在分布式系统中选择合适的熔断机制是保护系统免受故障影响的关键。本文将介绍使用信号量和线程池两种常见的熔断机制并提供Java和Spring Cloud Alibaba框架下的示例代码帮助您深入理解和应用。 1. 信号量熔断机制 信号量熔断机制基于并发请求的数量进行熔断可限制系统的并发访问量。它适用于资源有限且对请求响应时间要求较高的场景。下面是使用Java和Spring Cloud Alibaba框架实现信号量熔断机制的示例代码 配置类 import org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreakerFactory; import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;Configuration public class CircuitBreakerConfiguration {Beanpublic CustomizerResilience4JCircuitBreakerFactory defaultCircuitBreakerCustomizer() {return factory - {factory.configureDefault(configuration - {configuration.circuitBreakerConfig(CircuitBreakerConfig.custom().slidingWindowSize(10).failureRateThreshold(50).waitDurationInOpenState(Duration.ofMillis(1000)).build());});};} } 业务类 Service public class MyService {private final CircuitBreaker circuitBreaker;public MyService(CircuitBreakerFactory circuitBreakerFactory) {this.circuitBreaker circuitBreakerFactory.create(myService);}CircuitBreakerFallbackpublic String myMethod() {// 执行业务逻辑// ...}public String myMethodWithCircuitBreaker() {return this.circuitBreaker.run(this::myMethod, throwable - {// 熔断发生时的处理逻辑,发送警报通知拓展记录日志等sendAlertNotification();// 执行回退逻辑抛出自定义异常throw new CustomFallbackException(服务熔断);});}private void sendAlertNotification() {// 发送警报通知的逻辑// ...}private static class CustomFallbackException extends RuntimeException {public CustomFallbackException(String message) {super(message);}} }在上述代码中我们使用Resilience4J库实现了信号量熔断机制。通过CircuitBreakerConfig对象的配置我们设定了熔断的阈值、失败率和等待时间等参数。在MyService的myMethodWithCircuitBreaker方法中我们使用CircuitBreaker来调用myMethod方法当发生熔断时会执行处理逻辑。处理逻辑示例中我们通过sendAlertNotification方法发送了警报通知。回退逻辑示例中我们抛出了一个自定义的异常以表明熔断发生。 2. 线程池熔断机制 线程池熔断机制基于线程数来进行熔断可控制系统中的线程数量保证系统的稳定性。它适用于请求处理时间较长且需要灵活配置的场景。以下是使用Java和Spring Cloud Alibaba框架实现线程池熔断机制的示例代码 import java.util.concurrent.*; import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockException;Service public class MyService {private final ExecutorService executorService;private final Semaphore semaphore;public MyService() {// 创建线程池this.executorService new ThreadPoolExecutor(10, 10,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue(100),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());this.semaphore new Semaphore(10); // 设置信号量的限制为10}SentinelResource(value myService, blockHandler handleBlockMethod)public String myMethod() {// 执行业务逻辑// ...}public String handleBlockMethod(BlockException ex) {// 熔断发生时的处理逻辑// ...return Fallback;}public String myMethodWithCircuitBreaker() throws InterruptedException, ExecutionException {FutureString future executorService.submit(() - {semaphore.acquire(); // 获取信号量许可try {return myMethod(); // 执行业务逻辑} finally {semaphore.release(); // 释放信号量许可}});try {return future.get(); // 等待业务方法执行结果} catch (InterruptedException | ExecutionException e) {// 熔断发生执行回退逻辑return handleBlockMethod(e);}} }在上述示例中我们使用ThreadPoolExecutor来创建一个线程池并设置相关参数如核心线程数、最大线程数和线程空闲时间。在方法myMethodWithCircuitBreaker中我们使用线程池来执行被保护的方法myMethod并使用Semaphore来限制并发访问量即限制同时执行的线程数量。在方法中通过Semaphore的acquire和release方法获取和释放信号量许可。如果发生熔断我们执行处理逻辑handleBlockMethod作为回退逻辑。 总结 本文讲解了信号量熔断机制和线程池熔断机制并给出了Java和Spring Cloud Alibaba框架下的示例代码。选择适合的熔断机制要考虑资源限制、请求处理时间和容错能力等因素。如果你的场景资源有限且需要快速响应请求那信号量就是个不错的选择。如果你的任务处理时间较长需要更灵活的配置那线程池会更适合。要根据实际情况综合考虑做出最佳的选择。
http://www.tj-hxxt.cn/news/219881.html

相关文章:

  • 现在市场网站建设怎么样自贡市住房和城乡建设局网站
  • 如何利用视频网站做推广需要郑州网站建设
  • 网站不备案有什么后果网站订单系统模板下载
  • 网投网站怎样建北京网站建设 招聘信息
  • 关于网站建设的合同杭州网站制作蒙特
  • 中铁建设投资集团有限公司招聘网站推荐门户网站建设公司
  • 做图表用的网站欧美风格外贸网站建设
  • 天津南开做网站公司个人如何做网站软件
  • 西安公司网站晋城企业网站建设价格
  • 网站开发需求书模板重庆建设部网站官网
  • 贵阳哪些公司建网站商标可以做网站吗
  • 个人注册网站怎么注册柳州建站
  • 怎么做淘宝链接网站网络服务商官方网站
  • 和百度一样的网站seo上海公司
  • wordpress建设软件下载站dw5做简单的企业网站
  • 电商网站的功能有哪些网络建设解决方案专业公司
  • 手机自助建站免费建站平台wordpress首页自定义缩略图大小
  • 如何增强网站的安全性网站关键字在哪设置
  • 越南网站建设泰州市住房和城乡建设局官方网站
  • 郑州外贸网站建设商家广州网站建设报价表
  • 易企秀怎么做招聘网站超链接电商网站建设需求分析引言
  • 变白网站制作源码长沙数字引擎信息技术有限公司
  • 坑梓网站建设市场保山市建设厅官方网站
  • 工信部备案网站查侧导航网站
  • 我想在阿里巴巴网站开店_怎么做企业如何进行网络推广
  • 信息网站 模板域名申请后怎么使用
  • 英文企业网站模板做网站好的网站建设公司哪家好
  • 黄冈建设局网站关于论文网站开发参考文献
  • 互联国际网站学校网站建设开发
  • dede 网站目录谷歌浏览器下载安装2023最新版