一、集中化配置
集中化配置的优点这些大家可以上网查一查,在这里我只说如何实现。
步骤1(Server):
- 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.0.0.M8</version>
</dependency>
- 启动类加上@EnableConfigServer
- 配置application.properties:
//配置github仓库的路径
spring.cloud.config.server.git.uri=https://github.com/waylau/spring-cloud-microservices-development
//仓库下的具体包名
spring.cloud.config.server.git.searchPaths=config-repo
步骤2(Client):
- 引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>2.0.0.M8</version>
</dependency>
- 启动类不用加注解
- 修改.properties:
spring.cloud.config.profile=dev //指定生产环境
spring.cloud.config.uri=http://localhost:8888/ //server端的url
- 命名规则
二、熔断机制
原理:
集成 Hystrix:
- 引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.0.0.M8</version>
</dependency>
- 启动类加注解@EnableCircuitBreaker
- 在需要进行熔断的controller内的方法上加注解:
@HystrixCommand(fallbackMethod = "自定义的方面名称") //可以自定义个处理方法
public String XXX(){
return "XXX";
}
- 其实Feign客户端以及内嵌了Hystrix的fallback,只需如下:
@FeignClient(name = "注册到服务器中的实例名称",fallback=自定义类.class)
public interface XXX {
@GetMapping("/实例对应的子项目下的接口")
String XXX();
}
- 需要创建这个自定义的类:
@Component
public class 自定义类 implements XXX { //实现上面的接口
@Override
public String XXX() throws Exception {
return null;
}
}
- 正常启动所有项目即可