五大组件:
Eureka:注册中心
Ribbon:负载均衡
FeintClient:客户端服务
Zuul:网关
Hystrix:断路器
openfeign:(服务调用)
你可以按照Ribbon的方式调用(具体参考:https://www.yuque.com/btcabc/java/eureka)
这里是采用Feign的依赖使用.
1添加Maven依赖:
1 | <dependency> |
2在的启动类上加注解@EnableFeignClients
3在调用时,写一个接口类,类上加注解@FeignClient(“应用名”)
在抽象方法上,添加注解@RequestMapping(“/服务名”)
你也可以使用其他的REST风格请求.
你可以像使用本地接口一样的调用远程服务.
Ribbon:负载均衡策略
1Maven依赖:
1 | <dependency> |
2在启动类下任何类中添加以下代码
1 | // IRule接口可以自定义策略 |
我们定义了一个IRule接口,该接口允许用户自定义负载均衡策略.(默认为轮训)
其他设置请参考下图.
Hystrix Dashboard:(监控API)
首先我们要单独开启一个监控端信息,即豪猪面板.
1Maven依赖:
1 | <!-- 数据流--> |
2在启动类上添加注解@EnableHystrixDashboard
3程序运行后访问:http://localhost:9001/hystrix/
然后我们需要在监控的服务中开启数据流并监控.
一般情况下,这个监控需要有在网关服务上即可.
1Maven依赖:
1 | <dependency> |
2在启动类下任何类中添加以下代码:
1 | //增加一个servlet |
3为了调试方便,建议修改配置文件
1 | # 以IP形式暴露 |
4我们测试数据流是否正常
http://localhost:8083/actuator/hystrix.stream
如无数据,请发送调用任意服务请求.
现在你可以回到监控面板输入地址去测试了,测试结果如下图所示:
为什么Stream的地址不是locahost而是IP,因为我准备把他监控和运行分开部署,所以才需要暴露IP,如果只是本机测试完全可以使用locahost省时又省力。
Hystrix:(断路器)
1Maven依赖:
1 | <!-- 添加断路器--> |
2在启动类上添加注解@EnableHystrix //开启断路器
3在具体的调用方法上面添加
1 | //当前服务调用出错啦,调用默认方法 |
此外最好一个一个错误的方法,当服务熔断时返回.
Zuul:(网关)
1Maven依赖:
1 | <dependency> |
2在启动类上添加注解
@EnableZuulProxy _// 开启zuul网关
_@EnableEurekaClient // 开启链接Eureka注册中心
3通过动态路由访问: http://locahost:7002/应用名/服务名
如: http://localhost:7002/con3/hello
GateWay(动态路由):
1Maven依赖:
1 | <dependency> |
2配置文件:
1 | # 开启动态路由 |
3在启动类上添加注解@EnableEurekaClient
4通过动态路由访问: http://locahost:6666/应用名/服务名
如:http://localhost:6666/con3/hello
自由学习:
更多资料请参考Spring官网,Spring Cloud Netflix部分内容:
https://spring.io/projects/spring-cloud-netflix