微服务中间件学习笔记two

本文介绍了微服务架构中Hystrix的作用,如防止雪崩效应,通过熔断和降级策略保障服务稳定性。同时,讲解了Zuul网关的功能,包括过滤器的使用,如身份验证、动态路由和压力测试等,以提升服务性能和用户体验。
摘要由CSDN通过智能技术生成

四、Hystrix

相关概念,“雪崩效应”(个人理解):

在分布式的环境中,服务之间相互关联,当某一服务不可用时,会导致用户请求阻塞,越来越多的用户访问当前服务,进而导致服务器崩溃

在这里插入图片描述

在这里插入图片描述

Hystrix 作用(个人理解):

熔断与降级,熔断类似生活中的“电路保险丝”,当某一服务发生故障时,对整个服务进行熔断,防止服务器崩溃;
降级指的是发生熔断操作时,执行的兜底逻辑,不至于用户看到错误页面,产生不友好的浏览体验

springcloud整合Hystrix简单配置

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
---------------------------------------------------------------
# 断路器
feign:
  hystrix:
    enabled: true
-------------------------------------------------------------------
@SpringBootApplication
@EnableFeignClients
//开启断路器
@EnableCircuitBreaker
public class CoursePriceApplication {

    public static void main(String[] args) {
        SpringApplication.run(CoursePriceApplication.class,args);
    }
}
/**
 * course-list 的feign客户端
 */
//正常情况下访问course-list模块,当course-list模块发生故障时,访问CourseListClientHystrix类
@FeignClient(value = "course-list",fallback = CourseListClientHystrix.class)
public interface CourseListClient {
    @GetMapping("/courses/{id}")
    List<Course> courseList(@PathVariable Integer id);
}
package com.study.course.client;

import com.study.course.entity.Course;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class CourseListClientHystrix implements CourseListClient{

    @Override
    public List<Course> courseList(Integer id) {
        List<Course> defaultCourses = new ArrayList<>();
        Course course = new Course();
        course.setId(1);
        course.setCourseId(1);
        course.setCourseName("默认课程");
        course.setValid(1);
        defaultCourses.add(course);
        return defaultCourses;
    }
}

五、zuul网关

作用:
Zuul 使用一系列不同类型的过滤器。这些过滤器帮助我们执行以下功能:

  • 身份验证和安全性 - 确定每个资源的身份验证要求并拒绝不满足要求的请求。

  • 洞察力和监控 - 在边缘跟踪有意义的数据和统计数据,以便为我们提供准确的生产视图。

  • 动态路由 - 根据需要将请求动态路由到不同的后端集群。

  • 压力测试 - 逐渐增加集群的流量以衡量性能。

  • 减载 - 为每种类型的请求分配容量并丢弃超出限制的请求。

  • 静态响应处理 - 直接在边缘构建一些响应,而不是将它们转发到内部集群

  • 多区域弹性 - 跨 AWS 区域路由请求,以使我们的 ELB 使用多样化并使我们的优势更接近我们的成员

  • 在这里插入图片描述

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>


zuul:
  prefix: /study #配置统一url前缀
  routes:
    course-list:
      path: /list/**  #localhost:9000/study/list/*****
      serviceId: course-list
    course-price:
      path: /price/**  #localhost:9000/study/price/*****
      serviceId: course-price


//启用zuul网关
@EnableZuulProxy
@SpringCloudApplication
public class ZuulGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulGatewayApplication.class,args);
    }
}

利用网关实现过滤器

pro过滤器 在路由请求之前运行
route过滤器 可以处理请求的实际路由
post过滤器 路由请求后运行
error过滤器 报错后运行

@Component
public class PreRequestFilter extends ZuulFilter {
    @Override
    public String filterType() {
        //过滤器类型
        return FilterConstants.PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        //过滤器执行顺序
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        //是否启用过滤器
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        //过滤器核心内容
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值