Spring Cloud +Zuul + Hystrix + Ribbon

继上一次初步搭建 springcloud 之后,我们来集成一下五大组件的 ribbon、zuul、hystrix。
初步搭建springcloud

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

当我们引入 openfeign 的时候,已经将 ribbon 和 hystrix 一并引入了,因为 openfeign 封装了 ribbon、hystrix。

Ribbon

feign 负责各模块间的调用,而 ribbon 负责调用的负载均衡。

上一章我们展示了如何在 service-b 中调用 service-a,现在我们升级一下,加入 ribbon。
在 service-b 中添加以下配置:

#其中“service-a”指明对哪个微服务的调用进行配置,修改策略修改最后的类名即可
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置规则 随机
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置规则 轮询
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置规则 重试
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置规则 响应时间权重
service-a:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    # 每台服务器最多重试次数,但是首次调用不包括在内
    MaxAutoRetries: 1
    # 最多重试多少台服务器
    MaxAutoRetriesNextServer: 1
    # 无论是请求超时或者socket read timeout都进行重试
    OkToRetryOnAllOperations: true
    ReadTimeout: 5000
    ConnectTimeout: 5000

然后我们启动两个 service-a 实例,端口分别为 7001、7003,使用 postman 调用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们使用的是随机策略,默认使用的是轮询策略。

Hystrix

当我们的模块间相互调用的使用,会发生超时等调用失败的情况,这有时会导致我们调用接口时长时间等待,造成不好的交互体验,所以我们需要 “快速失败”,而 hystrix 刚好能满足这一点。

service-b 调用 service-a ,需要在 service-b 中添加配置项

# 开启熔断
feign:
  hystrix:
    enabled: true

之前我们远程调用定义了一个feignclient:

@FeignClient(value = "service-a")
@RequestMapping("/a")
public interface ServiceAFeignClient {
   

    @GetMapping("/test")
    String TestA(@RequestParam("s") String s);

    @PostMapping("/index")
    String IndexA(@RequestBody String s);
}

现在我们需要添加一个 feignclient 实现类:

@Component
@RequestMapping(value = &#
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值