1.服务(提供者)注册中心(多个,相互注册为服务)和发现(eureka)多个进行服务发现
eureka注册中心:提供服务的注册与查询(发现轮询server),Ribbon会从Eureka注册中心去获取服务端列表
多server1:服务提供者:服务的提供方,提供服务的一方。
多client2:服务消费者:服务的消费方,使用服务的一方。
服务提供者与服务消费者同样可以调用,通过spring中的RestTemplate
断路器hystrix:保证在一台服务提供者崩溃时,轮询到服务崩溃的服务器就会去提示对应的错误信息。需在消费者中配置@EnableCircuitBreaker。
//自定义命令:使用restTemplate注入
//使用对象控制请求返回
//同步
//Book book1 = bookCommand.execute();
//异步调用,较慢,或使用注解@HystrixCommand
Future queue = bookCommand.queue();
Book book = queue.get();
//服务降级
注解@HystrixCommand(fallbackMethod = “方法名”)
//异常处理,可以使用在方法参数加入Throwable对象这样可以直接自动服务降级
//请求缓存,通过Service注解@CacheResult、@CacheKey、@CacheRemove或restTemplate中方法getCacheKey开启某参数请求后缓存数据,然后都要在控制器对断路器请求内容进行初始化
protected String getCacheKey() {
return String.valueOf(id);
}
//请求合并
1.注解合并请求
初始化HystrixRequestContext
@HystrixCollapser(batchMethod = “方法名”,collapserProperties = {@HystrixProperty(name =“timerDelayInMilliseconds”,value = “100”)})
以及使用@HystrixCommand注解service层合并请求的方法
2.初始化HystrixRequestContext,创建类使用批量处理继承HystrixCommand和创建类合并处理继承HystrixCollapser和service使用restTemplate进行调用提供者的服务
turbine集群监控:必须Hystrix Dashboard
①注解式:
@EnableHystrixDashboard
spring.application.name=turbine
server.port=2002
management.port=2003
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
turbine.app-config=ribbon-consumer
turbine.cluster-name-expression=“default”
turbine.combine-host-port=true
http://localhost:9000/hystrix
开启Feign简化了我们的封装操作
注解@EnableFeignClients/@FeignClient注解在service中绑定服务
spring.application.name=feign-consumer
server.port=2005
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/