HyStrix
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
启动了需要启动熔断
@SpringBootApplication
@EnableCircuitBreaker //启动熔断
public class HystrixApp {
public static void main(String[] args) {
SpringApplication.run(HystrixApp.class, args);
}
}
feign和hystrix一起使用
启动类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@EnableCircuitBreaker//启动熔断
public class FeignHystrixApp {
public static void main(String[] args) {
SpringApplication.run(FeignHystrixApp.class, args);
}
}
Hystrix-DashBoard监控单个应用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
启动类
@SpringBootApplication
@EnableHystrixDashboard
public class Dashboard {
public static void main(String[] args) {
SpringApplication.run(Dashboard.class, args);
}
}
访问地址
http://192.168.1.102:8900/hystrix.stream
监控集群Turbine
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
application.properties配置文件
server.port=8300
spring.application.name=09springcloud-hystrix-turbine
eureka.client.serviceUrl.defaultZone=http://user:123@localhost:10000/eureka
eureka.instance.prefer-ip-address=true
#监控单个应用下的所有机器
turbine.aggregator.clusterConfig=HYSTRIS01
trubine.appConfig=hystris01
启动类
@SpringBootApplication
@EnableEurekaClient
@EnableTurbine
public class HystrixTurbineApp {
public static void main(String[] args) {
SpringApplication.run(HystrixTurbineApp.class, args);
}
}
#监控单个应用下的所有机器
turbine.aggregator.clusterConfig=HYSTRIS01
trubine.appConfig=hystris01
http://192.168.1.102:8300/turbine.stream?cluster=HYSTRIS01
监控HYSTRIS01应用下面的所有机器,相当于监控多个
http://192.168.1.102:8901/hystrix.stream
http://192.168.1.102:8902/hystrix.stream
http://192.168.1.102:8903/hystrix.stream
Turbine监控多个应用
#监控多个应用下的所有机器
turbine.aggregator.clusterConfig=defualt
trubine.appConfig=hystris01,hystris02
trubine.cluster-name-expression='defualt'
Turbine监控地址变动context-path项目
注册项目配置server.context-path=/hystrix01
就得添加如下配置
eureka.instance.prefer-ip-address=true
eureka.instance.home-page-url-path=/hystrix01
访问地址
http://192.168.1.102:8903/hystrix01/hystrix.stream
那么在监控项目的配置文件修改
注释掉这配置trubine.cluster-name-expression='defualt'
在application.properties文件添加这个配置
trubine.instanceUrlSuffix.HYSTRIS01=/hystrix01/hystrix.stream
这样就可以实时监控了
turbine Management Port
微服务之APIGetWay(网关)
一次性请求太多的微服务太麻烦,任何一个地方出现问题都不好
提供统一对外接口
统一鉴权
服务注册与授权
服务限流
全局网络跟踪
微服务之Zuul
服务端的负载均衡
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 不添加的华,zuul的路由页面无法访问 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
提供者
注册:provider-user
访问地址,多台机器
http://192.168.1.102:7900/user/1
http://192.168.1.102:7901/user/1
http://192.168.1.103:7901/user/1
Zuul访问地址,代理(自动匹配地址)
http://192.168.1.102:10900/provider-user/user/1
自定义服务映射地址
#给指定的服务做映射,当前是给provider-user添加映射地址为/abc
zuul.routes.provider-user=/abc/**
zuul取消代理某服务
#取消代理某服务
zuul.routes.ignored-services=provider-user1
zull之path映射
#path配置,abcdef随便写但是必须保证是唯一的,path映射路径,serviceId给哪个服务做映射
zuul.routes.abcdef.path=/abc/**
zuul.routes.abcdef.serviceId=provider-user1
zuul之URL方式映射
#url映射
zuul.routes.abcdef.path=/abc/**
zuul.routes.abcdef.serviceId=provider-user1
#在eureka中禁用ribbon的负载均衡
ribbon.eureka.enabled=false
#给上面的serviceId对应的服务名字制定一个ribbon的负载均衡,从listOfServers配置的地址中选择
provider-user1.ribbon.listOfServers=http://192.168.1.102:8901/,http://192.168.1.102:8902/
zuul表达式映射
启动类添加如下代码
@Bean
public PatternServiceRouteMapper serviceRouteMapper() {
return new PatternServiceRouteMapper(
"(?<name>^.+)-(?<version>v.+$)",
"${version}/${name}");
}
注册eureka的项目修改配置文件
spring.application.name=provider-user-v1
访问地址
http://192.168.1.102:10900/v1/provider-user/user/1
Zuul之前缀映射方式
zuul.prefix=/suibia
在所有访问地址前面都加前缀,访问地址
http://192.168.1.102:10900/suibia/provider-user/user/1