SpringCloud 基础 Hystrix、Zuul、Config

springcloud 基础项目 github https://github.com/ybsdegit/SpringCloud

服务熔断 Hystrix (断路器)服务端

  • 服务雪崩
    对于高流量的应用,单一的后端依赖坑你导致所有服务在几秒内饱和
    我们需要 弃车保帅

  • Hystrix
    避免级联故障,提高分布式系统的弹性
    备选响应

  • 服务熔断
    熔断机制是应对雪崩效应的一种微服务链路保护机制

    当链路某个微服务不可用获取响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息

服务降级 Hystrix (客户端)

  • 服务熔断
    • 服务端
    • 某个服务超时或者异常,引起熔断
  • 服务降级
    • 客户端
    • 从整体网站请求负载考虑 当某个服务熔断或者关闭之后,服务将不被调用
    • 此时客户端可以准备一个 FallbackFactory, 返回一个默认的值(缺省值)
    • 整体服服务水平下降了。好歹能用,比直接挂掉强

@SpringBootApplication
@EnableEurekaClient  // 在服务启动后自动注册到eureka中
@EnableDiscoveryClient  // 服务发现
@EnableCircuitBreaker   // 添加对熔断的支持 断路器
@Bean
    public ServletRegistrationBean hystrixMetricsStreamServlet(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HystrixMetricsStreamServlet());
        registrationBean.addUrlMappings("/actuator/hystrix.stream");
        return registrationBean;
    }

Zuul 网关

  • 实现外部访问统一入口
  • 过滤
  • Zuul 和 Eureka 整合

zuul 配置

server:
  port: 9527

spring:
  application:
    name: springcloud-zuul



# Eureka 配置,服务注册地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: springcloud-zuul-9527 # 修改Eureka上的默认,描述信息
    prefer-ip-address: true  # true 可以显示ip地址

info:
  app.name: paulson-springcloud
  company.name: ybs

zuul:
  routes:
    mydept.serviceId: springcloud-provider-dept
    mydept.path: /mydept/**
  ignored-services: springcloud-provider-dept  # 不能再使用这个路径访问了
  prefix: /ybs  # 公共的访问前缀
#  ignored-services: *  # 隐藏全部

Spring Cloud Config

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
server:
  port: 3344

spring:
  application:
    name: springcloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/paulsonwier/springcloud-config.git

# 通过config-server可以连接到git访问其中的资源和配置


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐