SpringCloud 基础 Hystrix、Zuul、Config
springcloud 基础项目 github
https://github.com/ybsdegit/SpringCloud
服务熔断 Hystrix (断路器)服务端
-
服务雪崩
对于高流量的应用,单一的后端依赖坑你导致所有服务在几秒内饱和
我们需要 弃车保帅 -
Hystrix
避免级联故障,提高分布式系统的弹性
备选响应 -
服务熔断
熔断机制是应对雪崩效应的一种微服务链路保护机制当链路某个微服务不可用获取响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息
服务降级 Hystrix (客户端)
- 服务熔断
- 服务端
- 某个服务超时或者异常,引起熔断
- 服务降级
- 客户端
- 从整体网站请求负载考虑 当某个服务熔断或者关闭之后,服务将不被调用
- 此时客户端可以准备一个 FallbackFactory, 返回一个默认的值(缺省值)
- 整体服服务水平下降了。好歹能用,比直接挂掉强
@SpringBootApplication
@EnableEurekaClient // 在服务启动后自动注册到eureka中
@EnableDiscoveryClient // 服务发现
@EnableCircuitBreaker // 添加对熔断的支持 断路器
@Beanpublic ServletRegistrationBean hystrixMetricsStreamServlet(){
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registrationBean.addUrlMappings("/actuator/hystrix.stream");return registrationBean;}
Zuul 网关
- 实现外部访问统一入口
- 过滤
- Zuul 和 Eureka 整合
zuul 配置
server:port: 9527spring: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-springcloudcompany.name: ybszuul:routes:mydept.serviceId: springcloud-provider-deptmydept.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: 3344spring:application:name: springcloud-config-servercloud:config:server:git:uri: https://gitee.com/paulsonwier/springcloud-config.git# 通过config-server可以连接到git访问其中的资源和配置