文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringCloud Zuul怎么实现负载均衡和熔断机制

2023-06-20 13:23

关注

小编给大家分享一下SpringCloud Zuul怎么实现负载均衡和熔断机制,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、场景

Zuul网关下实现其负载均衡与熔断机制(雪崩)进行实践,前提是已经导入zuul相关依赖

springboot版本:1.5.9.RELEASE

springcloud版本:Dalston.SR5

<dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-zuul</artifactId>        </dependency>        <dependency>            <groupId>com.netflix.zuul</groupId>            <artifactId>zuul-core</artifactId>            <version>1.3.0</version>        </dependency></dependencies>

二、场景实现

1、在网关的配置文件中配置ribbon(负载均衡)和hystrix(熔断机制)

#熔断机制hystrix:  command:    default:      execution:        isolation:          thread:            timeoutInMilliseconds: 6000 #负载均衡ribbon:  ConnectionTimeout: 500  ReadTimeout: 2000#端口server:  port: 8080spring:  #该配置文件中的配置,对应的服务名称是wc-gateway  application:    name: wc-gateway  profiles:    active: dev#服务网关配置zuul:  host:    connect-timeout-millis: 60000    socket-timeout-millis: 60000  #路由规则  routes:    api:      path: /api/user@RestControllerpublic class UserController {    @Value("${server.port}")    private int port;     @RequestMapping("index")    public String index(){        return "Hello World!"+port;    }}

依次启动注册中心、配置中心、client服务、修改端口再次启动client服务、服务网关

根据网关的路由,访问同一个路由,发现启动的两个不同端口的client服务交替执行

SpringCloud Zuul怎么实现负载均衡和熔断机制

SpringCloud Zuul怎么实现负载均衡和熔断机制

出现该情况即实现了负载均衡

3、验证熔断机制

在网关服务中需要写ZuulFallbackProvider的实现类

package top.wingcloud.filter; import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.MediaType;import org.springframework.http.client.ClientHttpResponse;import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream; @Componentpublic class ApiFallbackProvider implements ZuulFallbackProvider{     @Override    public String getRoute() {        //设置熔断的服务名        //如果是所有服务则设置为*        return "wc-client-user";    }     @Override    public ClientHttpResponse fallbackResponse() {        return new ClientHttpResponse() {            @Override            public HttpStatus getStatusCode() throws IOException {                return HttpStatus.OK;            }             @Override            public int getRawStatusCode() throws IOException {                return 200;            }             @Override            public String getStatusText() throws IOException {                return "{code:0,message:service error =_=}";            }             @Override            public void close() {             }             @Override            public InputStream getBody() throws IOException {                return new ByteArrayInputStream(getStatusText().getBytes());            }             @Override            public HttpHeaders getHeaders() {                HttpHeaders headers = new HttpHeaders();                headers.setContentType(MediaType.APPLICATION_JSON);                return headers;            }        };    }}

这个时候关闭client所有服务,再次访问之前的网关路由

出现了getStatusText()中的提示,即实现了熔断机制

SpringCloud Zuul怎么实现负载均衡和熔断机制好了,zuul下的负载均衡和熔断已经实现!

zuul网关配置+限流熔断

被调方:延时600ms

SpringCloud Zuul怎么实现负载均衡和熔断机制

ahas:

SpringCloud Zuul怎么实现负载均衡和熔断机制

user限流:

SpringCloud Zuul怎么实现负载均衡和熔断机制

trade熔断:(3秒内请求数>4)&&(3s内慢调用/请求数>50%) -》》开启熔断

慢调用标准:响应时间大于500ms

SpringCloud Zuul怎么实现负载均衡和熔断机制

20个请求测试:

SpringCloud Zuul怎么实现负载均衡和熔断机制

测试限流:

SpringCloud Zuul怎么实现负载均衡和熔断机制

测试限流和rt熔断

SpringCloud Zuul怎么实现负载均衡和熔断机制

以上是“SpringCloud Zuul怎么实现负载均衡和熔断机制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯