一、配置服务
Spring Cloud提供了Config Service,它在分布式系统开发中外部配置的功能,通过ConfigServer,我们可以集中存储所有应用的配置文件。
Config Server 支持在git或在文件系统中放置配置文件,可以使用以下格式来区分不同应用的不同配置文件。
/{application}/{profile}{/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
Spring Cloud提供了注解@EnableConfigServer来启用配置服务。
二、服务发现
Spring cloud通过Netflix OSS的Eureka来实现服务发现,服务发现的主要目的是为了让每个服务之间可以互相通信。Eureka Server为微服务注册中心。
Spring Cloud 使用了注解的方式提供了EureKa Server为微服务注册中心。
Spring Cloud使用注解的方式提供了Eureka服务端(@EnableEurekaServer)和客户端(@EnableEurekaClient)。
三、路由网关
路由网关的主要目的是为了让所有的微服务对外只有一个接口,我们只需访问一个网关地址,即可由网关将我们的请求代理到不同的服务中。
Spring Cloud是通过Zuul来实现的,支持自动路由映射到在Eureka Server上注册的服务。Spring Cloud提供了注解@EnableZuulProxy来启用路由代理。
四、负载均衡
Spring cloud提供了Ribbon和Feign作为客户端的负载均衡。在Spring Cloud 下,使用Ribbon直接注入一个RestTemplate对象即可,此RestTemplate已做好负载均衡的配置;而使用Fegin只需要定义个注解,有@FeignClient注解的接口,然后使用@RequestMapping注解在方法上映射远程的REST服务。此方法也是做好负载均衡配置的。
四、断路器
断路器(Circuit Breaker),主要是为了解决当某个方法调用失败的时候,调用后备方法来替代失败的方法,以达到容错、阻止级联错误等功能。
Spring Cloud使用@EnableCircuitBreaker来启用断路器支持,使用@HystrixCommand的fallbackMethod来指定后备方法。
Spring Cloud还给我们提供了一个控制台来监控断路器的运行情况。通过@EnableHystrixDashboard注解开启。