今天完成的事情:
断路器监控+断路器聚合监控
发现路由网关 Zuul没做
学习Zuul
明天计划的事情:
spring Cloud-Admin
spring Cloud-Security
遇到的问题:
如果要为通过Zuul代理的请求配置套接字超时和读取超时,则根据您的配置,有两种选择:
如果通过指定URL配置了Zuul路由,则需要使用 zuul.host.connect-timeout-millis和zuul.host.socket-timeout-millis。
解决办法,添加以下配置:
收获:
断路器监控
断路器, 当数据服务不可用的时候, 断路器就会发挥作用。
那么数据服务什么时候可用,什么时候不可用,如何监控这个事情呢? 我们就要用到 断路器监控来可视化掌控这个情况了。
1.创建hystrix-dashboard 子项目 并导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</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>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
</dependencies>
2.创建断路器监控启动类,主要就是@EnableHystrixDashboard注解
@SpringBootApplication
@EnableHystrixDashboard
public class ProductServiceHystrixDashboardApplication {
public static void main(String[] args) {
int port = 8020;
if(!NetUtil.isUsableLocalPort(port)) {
System.err.printf("端口%d被占用了,无法启动%n", port );
System.exit(1);
}
new SpringApplicationBuilder(ProductServiceHystrixDashboardApplication.class).properties("server.port=" + port).run(args);
}
3.配置依赖:
spring:
application:
name: hystrix-dashboard
4.接下来修改视图微服务项目,使它可以把信息共享给监控中心。给ProductViewServiceFeignApplication增加 @EnableCircuitBreaker(加入@EnableCircuitBreaker开启熔断器功能)注解,并在配置中开启hustrix
feign.hystrix.enabled: true
5.准备一个不停访问服务的类: AccessViewService。 这样可以不断地访问服务,才便于在监控那里观察现象。
public class AccessViewService {
public static void main(String[] args) {
while(true) {
ThreadUtil.sleep(1000);
access(8012);
access(8013);
}
}
public static void access(int port) {
try {
System.out.printf("%d 地址的视图服务访问成功,返回大小是 %d%n" ,port, html.length());
}
catch(Exception e) {
System.err.printf("%d 地址的视图服务无法访问%n",port);
}
}
}
启动AccessViewService:
效果:
=============
=============
使用Turbine聚合监控
Turbine是Hystrix的另一个组件,Turbin的目的是将多个Hystrix Dashboard组件的数据放在一个页面上监控,进行集中监控。
1.照常创建项目,导入依赖,加上配置,启动运行。
启动两个Feign
==========
==========
Zuul是什么?
基本理解就是对用户的请求进行分发,外界看不到多服务,客户看到的是Zuul。之前以为天猫就是一整个服务,现在想到,天猫应该早就拆解称微服务了。
Zuul还可以做一些用户身份认证,权限认证,防止非法请求操作API接口。
为什么需要Zuul?
1.统一认证,不然每个服务都需要独立认证
2.容易监控,可在微服务网关收集监控数据并将其推送到外部系统进行分析,在高流量情况下,可对某个服务进行降级。
3.API接口从内部服务分离出来,方便做测试
具体的好处,还是要到项目中体会
=========
=========
搭建Zuul
1.导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
</dependencies>
2.创建启动类:
3.配置文件
4.运行:
评论