网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

springcloud(七):Hystrix的应用

1、概念

创新互联建站长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为京山企业提供专业的网站设计、网站建设,京山网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。

     熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。除了熔断的功能还有服务降级、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。

2、集成

          a、工程的 pom.xml 的 dependency 节点中引入 spring-cloud-starter-hystrix 依赖:   

        

          org.springframework.cloud

          spring-cloud-starter-hystrix

        

        b、在启动类中通过注解@EnableCircuitBreaker ,启动熔断器

            /**

             * 使用@EnableCircuitBreaker注解开启断路器功能

             * @author eacdy

             */

            @SpringBootApplication

            @EnableDiscoveryClient

            @EnableCircuitBreaker

            public class  HystrixApplication {

              /**

               * 实例化RestTemplate,通过@LoadBalanced注解开启均衡负载能力.

               * @return restTemplate

               */

              @Bean

              @LoadBalanced

              public RestTemplate restTemplate() {

                return new RestTemplate();

              }

            

              public static void main(String[] args) {

                SpringApplication.run(HystrixApplication.class, args);

              }

            }

       c、编写服务类,写个回退方法,通过命令模式,指定发生异常需要回退的方法

            @Service

            public class HystrixService {

              @Autowired

              private RestTemplate restTemplate;

              private static final Logger LOGGER = LoggerFactory.getLogger(RibbonHystrixService.class);

              @HystrixCommand(fallbackMethod = "fallback")

              public User findById(Long id) {

                return this.restTemplate.getForObject("http://microservice-provider-user/" + id, User.class);

              }

              public User fallback(Long id) {

                User user = new User();

                user.setId(-1L);

                user.setUsername("default username");

                user.setAge(0);

                return user;

              }

            }

      d、编写控制器类,调用服务类

        @RestController

        public class HystrixController {

          @Autowired

          private HystrixService hystrixService;

        

          @GetMapping("/ribbon/{id}")

          public User findById(@PathVariable Long id){

            return this.hystrixService.findById(id);

          }

        }

     e、编写application.yml

            server:

              port: 9413

            spring:

              application:

                name: microservice-hystrix

            eureka:

              client:

                serviceUrl:

                  defaultZone: http://discovery:8761/eureka/

              instance:

                hostname: hystrix

3、启动应用,同时启动两个相同的应用,只是端口不同,访问http://hystrix:9413/hystrix/1,则正常显示内容,当把服务设置超时,则会调用回退方法。

4、总结

    熔断器有效的解决了因为服务故障,请求积压,导致服务崩溃,同时提高了用户的体验;上面的集成是使用了熔断器的命令模式,如果项目里面用的是feign,则自带了回退机制,不过个人推荐还是用命令模式,参数设置灵活,可以设置并发数、线程执行超时时间、并发执行最大线程数、线程存活时间、线程执行超时是否中断,api更强大。


网站名称:springcloud(七):Hystrix的应用
URL网址:http://bjjierui.cn/article/gigjos.html

其他资讯