前言
分布式系统中,所有服务需要注册到中心(可能是高可用),进行统一管理,这个中心就是服务注册中心。这样,所有服务可以通过注册中心了解到其他服务的存在。spring cloud注册中心具有如下特性:
- 服务发现:可以注册Eureka实例,客户端可以使用spring管理的bean发现实例。
- 服务发现:可以使用声明式Java配置创建嵌入式Eureka服务器。
- 断路器:Hystrix客户端可以用一个简单的注释驱动的方法装饰器来构建。
- 断路器:嵌入式Hystrix仪表板,声明式Java配置。
- 声明性REST客户端:Feign创建一个用JAX-RS或Spring MVC注释装饰的接口的动态实现。
- 客户端负载均衡器:Ribbon。
- 外部配置:从Spring环境到Archaius的桥梁(允许使用Spring引导约定对Netflix组件进行本地配置)。
- 路由器和过滤器:自动注册Zuul过滤器,和一个简单的约定优于配置的方法来反向创建代理。
注册配置
gradle依赖
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
服务发现
服务端
可以有多个服务端,服务端相互注册,构成高可用的注册中心。
客户端
可以配置多个服务端地址。
断路器
apache commons-lang也有一个断路器org.apache.commons.lang3.concurrent.CircuitBreaker
微服务图
Hystrix回退防止了级联失败
采用开路电路可以停止级联故障,并允许过载或故障服务有时间恢复。回退可以是另一个Hystrix保护调用、静态数据或合理的空值。可以对回退进行链接,以便第一个回退进行一些其他业务调用,这些业务调用将返回到静态数据。
目前netflix-hystrix闭源了,使用resilience4j作为替代。