秒速时时彩和值_Spring Cloud系列文,Feign整合Ribbon和Hysrix

  • 时间:
  • 浏览:7
  • 来源:上海网_专注上海新闻_上海的主流媒体

    在本博客前一天的Spring Cloud系列里,亲戚亲戚朋友讲述了Feign的基本用法,这里亲戚亲戚朋友将讲述下Feign整合Ribbon实现负载均衡以及整合Hystrix实现断路保护效果的法律最好的办法。    

1 准备Eureka服务器以及多个服务提供者

    这里,亲戚亲戚朋友将重用前一天博文里讲过的案例,提供的3个多(即主从)Eureka服务项目以及3个多服务提供者的项目。随后在此基础上,在服务调用者的项目中,通过Feign以负载均衡的法律最好的办法调用3个多服务提供者所提供的sayHello法律最好的办法。    

2 在客户端引入Ribbon

在FeignDemo-ServiceCaller项目里开发Fegin整合Ribbon,具体的步骤如下。

 在pom.xml中,引入Ribbon依赖包,关键代码如下。

1       <dependency>
2          <groupId>org.springframework.cloud</groupId>
3          <artifactId>spring-cloud-ribbon</artifactId>
4       </dependency>

     在ControllerForFeignRibbon.java中,编写Feign以Ribbon负载均衡的法律最好的办法调用服务的代码。

 //省略必要的package和import的代码
//这和Ribbon Provider中的applicationname一致
@FeignClient(value = "sayHelloAvoidCopy")
interface FeignClientRibbonTool{
      @RequestMapping(method = RequestMethod.GET, value = "/sayHello/{username}/avoidCopy")
       String sayHelloAsRibbon(@PathVariable("username") String username);
}

@RestController
public class ControllerForFeignRibbon {    
     private FeignClientRibbonTool tool;
     @RequestMapping(value = "/callHelloAsRibbon/{username}", method = RequestMethod.GET)
     public String callHelloAsRibbon(@PathVariable("username") String username) {
        return tool.sayHelloAsRibbon(username);
    }
 }

    在上述代码里,,亲戚亲戚朋友定义了3个多名为FeignClientRibbonTool的接口;在第3行中,亲戚亲戚朋友通过@FeignClient注解指定了该Feign接口可能调用名为sayHello的服务。请注意,这里的sayHello命名不还都都可否和EurekaRibbonDemo-ServiceProviderOne等项目中application.yml中的相应配置一致。

    在第10行中,亲戚亲戚朋友通过@RestController注解定义了3个多名为ControllerForFeignRibbon的控制器类,在其中的第14行的callHelloAsRibbon中,亲戚亲戚朋友是通过Feign接口中的sayHelloAsRibbon法律最好的办法调用服务的。

     在application.yml中,编写Ribbon的相关配置信息,关键代码如下。

1   sayHello:
2     ribbon:
3       listOfServer: http://localhost:1111/,http://localhost:2222/,http://localhost:3333
4       ConnectionsTimeout: 10000
5   ribbon:
6       ConnectionsTimeout: 10000  

    在第1~4行,亲戚亲戚朋友通过配置指定了基于ribbon的多台服务器,它们将以负载均衡的法律最好的办法承担请求url,而且 还指定了连接超时的时间。从第1行亲戚亲戚朋友能想看 ,这俩 配置是针对sayHello这俩 服务实例的。而在第5行和第6行,亲戚亲戚朋友配置了全局性的ribbon属性,这里也配置了连接超时时间。

    完成开发后,启动定义在表6.2中的两台Eureka服务器、三台服务提供者和一台服务调用者系统应用应用程序后,在浏览器中多次输入http://localhost:10001000/callHelloAsRibbon/Peter以调用服务,这时亲戚亲戚朋友能想看 有如下输出。从输出结果来看,亲戚亲戚朋友以Feign的形式调用的请求虽然被均衡地转发到3台服务提供者的机器上。

    1   Hello Ribbon, there are Server1, my name is:Peter

    2   Hello Ribbon, there are Server2, my name is:Peter

    3   Hello Ribbon, there are Server3, my name is:Peter

    这里亲戚亲戚朋友来总结一下Feign整合Ribbon的要点。

    第一,多个服务器提供者的实例名应当一致,比如这里都在sayHello。

    第二,在Feign的接口中,是通过@FeignClient的注解调用服务提供者的法律最好的办法的。

    第三,这里亲戚亲戚朋友是在application.yml配置文件中指定Ribbon的各种参数,也可不不还都都可否通过@Configuration注解在Java文件中配置Ribbon的参数。

3 在客户端引入Hystrix(Feigh整合Hystrix)

    在通过Feign调用服务时,同样不还都都可否保证服务一定可用,为了提升客户体验,这里可不不还都都可否通过引入Hystrix对访问请求进行“容错保护”。

     在FeignDemo-ServiceCaller的pom.xml中,增加Hystrix的依赖包,关键代码如下。

1       <dependency>
2          <groupId>org.springframework.cloud</groupId> 
3          <artifactId>spring-cloud-hystrix</artifactId>
4       </dependency>

 还是在FeignDemo-ServiceCaller项目的application.yml配置文件中,通过如下配置项启动Hystrix模式,关键代码如下。

1   feign:
2       hystrix:
3           enabled: true   

    此外,还可不不还都都可否通过如下代码配置针对sayHelloServiceProvider服务的hystrix参数。其中,第3行指定了hystrix所作用的服务名,第7行指定了请求时间一旦超过10000毫秒(也而且1秒),就会启动熔断模式,调用定义在回退法律最好的办法中的业务动作。

1   hystrix:
2       command:
3           sayHelloServiceProvider:
4               execution:
5                  isolations:
6                      threads:
7                         timeoutInMilliseconds: 10000   

     在启动类ServiceCallerApp.java中,增加启动hystrix断路器的注解,如第5行所示,这俩 类的关键代码如下。    

1   //省略必要的package和import法律最好的办法
2   EnableFeignClients
3   @EnableDiscoveryClient
4   @SpringBootApplication
5   @EnableCircuitBreakers
6   public class ServiceCallerApp
7   {
8       //省略有些代码
9   }

 新建3个多名为ControllerForFeignHystrix.java的控制器类,代码如下。

1   //省略必要的package和import代码
2   @FeignClient(value = "sayHelloServiceProvider",fallback=FeignClientHystrixToolFallback.class)
3   interface FeignClientHystrixTool{
4       @RequestMapping(method = RequestMethod.GET, value = "/hello/{name}")
5       String sayHelloInClient(@RequestParam("name") String name);
6   }

在第3行中,亲戚亲戚朋友定义了3个多名为FeignClientHystrixTool的接口;在第2行的注解中,亲戚亲戚朋友定义了它将以Feign的形式调用sayHelloServiceProvider中的服务,而且 通过fallback配置指定一旦经常跳出调用异常,将调用FeignClientHystrixToolFallback类中的回退法律最好的办法。

7   @Component
8   class FeignClientHystrixToolFallback implements FeignClientHystrixTool{
9       public String sayHelloInClient(String name)
10      { return "In Fallback Function.";    }  
11  }

    在第8行的FeignClientHystrixToolFallback类中,亲戚亲戚朋友将定义针对FeignClientHystrixTool接口的回退法律最好的办法。

    注意该类不还都都可否和第2行中fallback指定的类同名,而且 ,该类不还都都可否实现(implements)FeignClientHystrixTool接口,在其中的sayHelloInClient法律最好的办法中定义了回退动作,这里的动作是打印励志的话 。

12  @RestController
13  public class ControllerForFeignHystrix {       
14      @Autowired
15      private FeignClientHystrixTool tool;   
16      @RequestMapping(value = "/callHelloAsHystrix/{username}", method = RequestMethod.GET)
17      public String callHelloAsHystrix(@PathVariable("username") String username)
18      { return tool.sayHelloInClient(username);}  
19  }

    在第13行中,亲戚亲戚朋友定义了3个多涵盖@RestController注解的控制器类ControllerForFeignHystrix,在其中第17行的callHelloAsHystrix法律最好的办法中,亲戚亲戚朋友是以Feign的形式调用sayHelloInClient法律最好的办法的。

    至此,完成代码的编写工作。亲戚亲戚朋友依次启动FeignDemo-Server、FeignDemo-ServiceProvider和FeignDemo-ServiceCaller项目,随后在浏览器中输入http://localhost:10001000/callHelloAsHystrix/Peter,此时能想看 “hello Peter”的输出,这俩 是正常的调用流程。

    可能亲戚亲戚朋友关闭FeignDemo-ServiceProvider项目,也而且说sayHelloServiceProvider服务不可用了,可能再次在浏览器中输入http://localhost:10001000/callHelloAsHystrix/Peter,此时就会走熔断保护的流程,触发FeignClientHystrixToolFallback 类中的sayHelloInClient法律最好的办法,在浏览器中输出“In Fallback Function“的字样。

本文谢绝转载,可能要代码,请和作者联系。Spring Cloud相关博文如下:

猜你喜欢

10分飞艇计划客户端_2019 年 12月 25 日 随笔档案

不负时代沉睡的人心潮澎湃热血流过动脉别让梦想带着遗憾醒来总有人被世界淘汰总有人被记载在这尔虞我诈的舞台挺过来初心仍在坎坷不算失败不负时代人生可以了 彩排Oh起落都精彩磨难用双

2020-01-28

腾讯2分彩遗漏_Java匹马行天下之学编程的起点——走进编程的殿堂

前言:知其然,知其只是然,努力否有 只是重要,而且思维的提升会我能 事半功倍,我会用我花费时间换来的“思维”带更多的大伙儿入门,让大伙儿明明白白学编程,学编程,不迷茫。转变

2020-01-28

大发5分快三官方_5分快三登入_有机奶粉雅培菁智口碑如何?人气娘娘奶粉口碑从何而来

 有机奶粉有些人都选进口的大发5分快三官方_5分快三登入,关注其中的国际知品牌——雅培菁智有机系列一定不陌生。身边不少妈妈推荐雅培菁智,又被称作“人气娘娘奶粉”,是明星孙俪同款

2020-01-28

3分pk10下载 _特朗普"加税"引发关注 大众北美支持自由贸易

来自全球多个投资机构的分析认为:中国和美国应该采取务实和理性的态度,通过扩大贸易有利于平衡,以谈判防止分歧和摩擦。“这更像是一场冲突,通过防止其中某些问题图片图片,来平衡两国的

2020-01-28

1.5分pk10官方安卓 _赛博瑞雅 赛博瑞雅代理 最强团队CRV团队招募

最近在微商的信息中“CRV团队”在网络中盛传,同時 走红的还有另外三个面世要能一年的品牌赛博瑞雅以及其子品牌首尔甜橙,创造了无数的微 商神话。席卷中央电视台1.2.6.7.1

2020-01-28