发表于: 2021-05-02 22:48:20

1 1147


今天完成的事情:
断路器监控+断路器聚合监控
发现路由网关   Zuul没做

学习Zuul




明天计划的事情:
spring Cloud-Admin

spring Cloud-Security




遇到的问题:



8.14 Zuul超时

如果要为通过Zuul代理的请求配置套接字超时和读取超时,则根据您的配置,有两种选择:
  • 如果Zuul使用服务发现,则需要使用ribbon.ReadTimeoutribbon.SocketTimeout功能区属性配置这些超时 。

如果通过指定URL配置了Zuul路由,则需要使用 zuul.host.connect-timeout-milliszuul.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 {
String html= HttpUtil.get(String.format("http://127.0.0.1:%d/products",port));
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.运行:






返回列表 返回列表
评论

    分享到