一、简介

Turbine是聚合服务器发送事件流数据的一个工具,Hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过Turbine来监控集群下Hystrix的metrics情况

Turbine的github地址:https://github.com/Netflix/Turbine

二、基本环境

  • 一个eureka模块
  • 两个消费者模块
  • 一个turbine监控模块

三、创建eureka模块

(1)创建项目

创建一个spring boot项目

(2)依赖


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.abc</groupId>
  6. <artifactId>00-eurekaserver-8000</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <parent>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-parent</artifactId>
  12. <version>2.1.7.RELEASE</version>
  13. <relativePath/> <!-- lookup parent from repository -->
  14. </parent>
  15. <properties>
  16. <java.version>1.8</java.version>
  17. <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.cloud</groupId>
  22. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. <!--热部署依赖-->
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-devtools</artifactId>
  33. <optional>true</optional>
  34. </dependency>
  35. </dependencies>
  36. <dependencyManagement>
  37. <dependencies>
  38. <dependency>
  39. <groupId>org.springframework.cloud</groupId>
  40. <artifactId>spring-cloud-dependencies</artifactId>
  41. <version>${spring-cloud.version}</version>
  42. <type>pom</type>
  43. <scope>import</scope>
  44. </dependency>
  45. </dependencies>
  46. </dependencyManagement>
  47. <build>
  48. <plugins>
  49. <plugin>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-maven-plugin</artifactId>
  52. </plugin>
  53. </plugins>
  54. </build>
  55. </project>

(3)application.yml配置


  1. server:
  2. port: 8000
  3. eureka:
  4. instance:
  5. hostname: localhost # 指定Eureka主机
  6. client:
  7. register-with-eureka: false # 指定当前主机是否向Eureka服务器进行注册
  8. fetch-registry: false # 指定当前主机是否要从Eurka服务器下载服务注册列表
  9. service-url: # 服务暴露地址
  10. defaultZone: http://localhost:8000/eureka
  11. # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
  12. # server:
  13. # enable-self-preservation: false # 关闭自我保护

(4)启动类


  1. package com.abc.eureka;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. @SpringBootApplication
  6. @EnableEurekaServer // 开启Eureka服务
  7. public class EurekaServerApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(EurekaServerApplication.class, args);
  10. }
  11. }

四、创建消费者09-consumer-turbine-8080

(1)创建项目

创建一个spring boot项目

(2)依赖


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.1.7.RELEASE</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.abc</groupId>
  12. <artifactId>09-consumer-turbine-8080</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>09-consumer-turbine-8080</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
  19. </properties>
  20. <dependencies>
  21. <!--hystrix依赖-->
  22. <dependency>
  23. <groupId>org.springframework.cloud</groupId>
  24. <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  25. </dependency>
  26. <!--feign依赖-->
  27. <dependency>
  28. <groupId>org.springframework.cloud</groupId>
  29. <artifactId>spring-cloud-starter-openfeign</artifactId>
  30. </dependency>
  31. <!-- hystrix-dashboard依赖 -->
  32. <dependency>
  33. <groupId>org.springframework.cloud</groupId>
  34. <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
  35. </dependency>
  36. <!--actuator依赖-->
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-actuator</artifactId>
  40. </dependency>
  41. <!--eureka客户端依赖-->
  42. <dependency>
  43. <groupId>org.springframework.cloud</groupId>
  44. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework.boot</groupId>
  48. <artifactId>spring-boot-starter-web</artifactId>
  49. </dependency>
  50. <!-- https://mvnrepository.com/artifact/org.webjars.bower/jquery -->
  51. <dependency>
  52. <groupId>org.webjars.bower</groupId>
  53. <artifactId>jquery</artifactId>
  54. <version>2.1.1</version>
  55. </dependency>
  56. <dependency>
  57. <groupId>org.projectlombok</groupId>
  58. <artifactId>lombok</artifactId>
  59. <optional>true</optional>
  60. </dependency>
  61. <dependency>
  62. <groupId>org.springframework.cloud</groupId>
  63. <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
  64. </dependency>
  65. <!--热部署依赖-->
  66. <dependency>
  67. <groupId>org.springframework.boot</groupId>
  68. <artifactId>spring-boot-devtools</artifactId>
  69. <optional>true</optional>
  70. </dependency>
  71. </dependencies>
  72. <dependencyManagement>
  73. <dependencies>
  74. <dependency>
  75. <groupId>org.springframework.cloud</groupId>
  76. <artifactId>spring-cloud-dependencies</artifactId>
  77. <version>${spring-cloud.version}</version>
  78. <type>pom</type>
  79. <scope>import</scope>
  80. </dependency>
  81. </dependencies>
  82. </dependencyManagement>
  83. <build>
  84. <plugins>
  85. <plugin>
  86. <groupId>org.springframework.boot</groupId>
  87. <artifactId>spring-boot-maven-plugin</artifactId>
  88. </plugin>
  89. </plugins>
  90. </build>
  91. </project>

(3)application.yml配置


  1. # 在微服务网关zuul中演示时需要该工程的端口号为8090
  2. server:
  3. port: 8080
  4. spring:
  5. application: # 指定微服务对外暴露的名称
  6. name: abcmsc-consumer-depart01
  7. eureka:
  8. client:
  9. service-url:
  10. defaultZone: http://localhost:8000/eureka
  11. # instance:
  12. # metadata-map:
  13. # cluster: ribbon
  14. # 开启Feign对Hystrix的支持
  15. feign:
  16. hystrix:
  17. enabled: true
  18. client:
  19. config:
  20. default:
  21. connectTimeout: 5000 # 指定Feign连接提供者的超时时限
  22. readTimeout: 5000 # 指定Feign从请求到获取提供者响应的超时时限
  23. # 开启actuator的所有web终端
  24. management:
  25. endpoints:
  26. web:
  27. exposure:
  28. include: "*"
  29. # 设置服务熔断时限
  30. hystrix:
  31. command:
  32. default:
  33. execution:
  34. isolation:
  35. thread:
  36. timeoutInMilliseconds: 3000

(4)实体类Depart


  1. package com.abc.consumer.bean;
  2. import lombok.Data;
  3. @Data
  4. public class Depart {
  5. private Integer id;
  6. private String name;
  7. }

(5)DepartCodeConfig类


  1. package com.abc.consumer.codeconfig;
  2. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.client.RestTemplate;
  6. @Configuration
  7. public class DepartCodeConfig {
  8. @LoadBalanced // 开启消息者端的负载均衡功能,默认是轮询策略
  9. @Bean
  10. public RestTemplate restTemplate() {
  11. return new RestTemplate();
  12. }
  13. }

(6)DepartController类


  1. package com.abc.consumer.controller;
  2. import com.abc.consumer.bean.Depart;
  3. import com.abc.consumer.service.DepartService;
  4. import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7. import java.util.List;
  8. @RestController
  9. @RequestMapping("/consumer/depart")
  10. public class DepartController {
  11. @Autowired
  12. DepartService service;
  13. // 服务降级:若当前处理器方法发生异常,则执行fallbackMethod属性指定的方法
  14. @HystrixCommand(fallbackMethod = "getHystrixHandle")
  15. @GetMapping("/get/{id}")
  16. public Depart getHandle(@PathVariable("id") int id) {
  17. return service.getDepartById(id);
  18. }
  19. public Depart getHystrixHandle(@PathVariable("id") int id) {
  20. Depart depart = new Depart();
  21. depart.setId(id);
  22. depart.setName("no this depart -- 方法级别");
  23. return depart;
  24. }
  25. }

(7)DepartService类


  1. package com.abc.consumer.service;
  2. import com.abc.consumer.bean.Depart;
  3. import org.springframework.cloud.openfeign.FeignClient;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.web.bind.annotation.*;
  6. import java.util.List;
  7. @Service
  8. // 指定当前Service所绑定的提供者微服务名称
  9. // fallback指定该接口所绑定的服务降级类
  10. @FeignClient(value = "abcmsc-provider-depart")
  11. @RequestMapping("/provider/depart")
  12. public interface DepartService {
  13. @GetMapping("/get/{id}")
  14. Depart getDepartById(@PathVariable("id") int id);
  15. }

(8)启动类


  1. package com.abc.consumer;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.cloud.client.SpringCloudApplication;
  4. import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
  5. import org.springframework.cloud.openfeign.EnableFeignClients;
  6. // 指定Service接口所在的包,开启OpenFeign客户端
  7. @EnableFeignClients(basePackages = "com.abc.consumer.service")
  8. @SpringCloudApplication
  9. @EnableHystrixDashboard // 开启Hystrix仪表盘功能
  10. public class Consumer01Application {
  11. public static void main(String[] args) {
  12. SpringApplication.run(Consumer01Application.class, args);
  13. }
  14. }

五、创建消费者09-consumer-turbine-8081

(1)复制项目09-consumer-turbine-8080

(2)修改依赖

(3)修改application.yml配置

(4)修改09-consumer-turbine-8081.iml

六、创建消费者turbine监控

(1)创建项目

创建一个spring boot项目

(2)依赖


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.1.7.RELEASE</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.abc</groupId>
  12. <artifactId>09-consumer-turbine-monitor-9000</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>09-consumer-turbine-monitor-9000</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.springframework.cloud</groupId>
  23. <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
  24. </dependency>
  25. <!--hystrix依赖-->
  26. <dependency>
  27. <groupId>org.springframework.cloud</groupId>
  28. <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  29. </dependency>
  30. <!--feign依赖-->
  31. <dependency>
  32. <groupId>org.springframework.cloud</groupId>
  33. <artifactId>spring-cloud-starter-openfeign</artifactId>
  34. </dependency>
  35. <!-- hystrix-dashboard依赖 -->
  36. <dependency>
  37. <groupId>org.springframework.cloud</groupId>
  38. <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
  39. </dependency>
  40. <!--actuator依赖-->
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-actuator</artifactId>
  44. </dependency>
  45. <!--eureka客户端依赖-->
  46. <dependency>
  47. <groupId>org.springframework.cloud</groupId>
  48. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.boot</groupId>
  52. <artifactId>spring-boot-starter-web</artifactId>
  53. </dependency>
  54. <!-- https://mvnrepository.com/artifact/org.webjars.bower/jquery -->
  55. <dependency>
  56. <groupId>org.webjars.bower</groupId>
  57. <artifactId>jquery</artifactId>
  58. <version>2.1.1</version>
  59. </dependency>
  60. <dependency>
  61. <groupId>org.projectlombok</groupId>
  62. <artifactId>lombok</artifactId>
  63. <optional>true</optional>
  64. </dependency>
  65. <!--热部署依赖-->
  66. <dependency>
  67. <groupId>org.springframework.boot</groupId>
  68. <artifactId>spring-boot-devtools</artifactId>
  69. <optional>true</optional>
  70. </dependency>
  71. </dependencies>
  72. <dependencyManagement>
  73. <dependencies>
  74. <dependency>
  75. <groupId>org.springframework.cloud</groupId>
  76. <artifactId>spring-cloud-dependencies</artifactId>
  77. <version>${spring-cloud.version}</version>
  78. <type>pom</type>
  79. <scope>import</scope>
  80. </dependency>
  81. </dependencies>
  82. </dependencyManagement>
  83. <build>
  84. <plugins>
  85. <plugin>
  86. <groupId>org.springframework.boot</groupId>
  87. <artifactId>spring-boot-maven-plugin</artifactId>
  88. </plugin>
  89. </plugins>
  90. </build>
  91. </project>

(3)application.yml配置


  1. server:
  2. port: 9000
  3. spring:
  4. application: # 指定微服务对外暴露的名称
  5. name: 09-consumer-turbine-monitor-9000
  6. eureka:
  7. client:
  8. service-url: # 指定Eureka服务注册中心
  9. defaultZone: http://localhost:8000/eureka
  10. # 开启Feign对Hystrix的支持
  11. feign:
  12. hystrix:
  13. enabled: true
  14. client:
  15. config:
  16. default:
  17. connectTimeout: 5000 # 指定Feign连接提供者的超时时限
  18. readTimeout: 5000 # 指定Feign从请求到获取提供者响应的超时时限
  19. # 开启actuator的所有web终端
  20. management:
  21. endpoints:
  22. web:
  23. exposure:
  24. include: "*"
  25. # 设置服务熔断时限
  26. hystrix:
  27. command:
  28. default:
  29. execution:
  30. isolation:
  31. thread:
  32. timeoutInMilliseconds: 3000
  33. turbine:
  34. app-config: abcmsc-consumer-depart01,abcmsc-consumer-depart02
  35. cluster-name-expression: new String("default")
  36. combine-host-port: true
  37. instanceUrlSuffix: /actuator/hystrix.stream #turbine默认监控actuator/路径下的端点,修改直接监控hystrix.stream
  38. #cluster-name-expression: metadata['cluster']
  39. #aggregator:
  40. # cluster-config: ribbon
  41. #instanceUrlSuffix: /hystrix.stream #turbine默认监控actuator/路径下的端点,修改直接监控hystrix.stream

(4)启动类


  1. package com.abc.consumer;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  5. import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
  6. import org.springframework.cloud.netflix.turbine.EnableTurbine;
  7. @SpringBootApplication
  8. @EnableTurbine
  9. @EnableHystrixDashboard
  10. @EnableEurekaClient
  11. public class MonitorApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(MonitorApplication.class, args);
  14. }
  15. /*@Bean
  16. public ServletRegistrationBean getServlet() {
  17. HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
  18. ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
  19. registrationBean.setLoadOnStartup(1);
  20. registrationBean.addUrlMappings("/actuator/hystrix.stream);
  21. registrationBean.setName("HystrixMetricsStreamServlet");
  22. return registrationBean;
  23. }*/
  24. }

七、启动

(1)启动eureka模块

(2)启动两个消费者模块

(3)启动turbine监控模块

八、效果

(1)请求http://localhost:8080/consumer/depart/get/1

(1)请求http://localhost:8081/consumer/depart/get/1

浏览器访问http://localhost:9000/hystrix

输入http://localhost:9000/turbine.stream

其他说明

图片说明借鉴  https://www.jianshu.com/p/590bad4c8947

Turbine使用的更多相关文章

  1. 第二十六章 hystrix-dashboard + turbine

    一.使用turbine的意义 引入多个hystrix stream: 1.使用hystrix-dashboard的可以添加多个stream的功能 图中添加的两个stream会在真正monitor的时候 ...

  2. 附7 turbine

    一.作用 聚集同一个微服务的相同的commandKey.Threadpool.commandGroupKey数据进行聚合 二.配置 1.集群(cluster)(turbine聚集数据的粒度) turb ...

  3. apache开源项目-- Turbine

    1.缘起 Jetspeed是Apache Jakarta小组的开放源码门户系统.它使得最终用户可以通过WAP手机.浏览器.PDA等各种设备来使用各种各样的网络资源(比如应用程序.数据以及这之外的任何网 ...

  4. springcloud(五):熔断监控Hystrix Dashboard和Turbine

    Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数 ...

  5. spring cloud熔断监控Hystrix Dashboard和Turbine

    参考: http://blog.csdn.net/ityouknow/article/details/72625646 完整pom <?xml version="1.0" e ...

  6. 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务

    在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...

  7. spring cloud(五)熔断监控Hystrix Dashboard和Turbine

    Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数 ...

  8. Spring Cloud Turbine微服务集群实时监控

    本文代码下载地址: https://gitlab.com/mySpringCloud/turbine SpringBoot版本:1.5.9.RELEASE (稳定版) SpringCloud版本:Ed ...

  9. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)

    1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢? 当现在服务的 ...

  10. Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine

    1. Hystrix Dashboard (断路器:hystrix 仪表盘)  Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboa ...

随机推荐

  1. feign微服务调用携带浏览器信息(header、cookie)

    import feign.RequestInterceptor; import feign.RequestTemplate; import org.apache.commons.collections ...

  2. django前后端分离403 csrf token missing or incorrect

    根据这个链接https://stackoverflow.com/a/26639895 这是一个django的跨域访问问题. django,会对合法的跨域访问做这样的检验,cookies里面存储的'cs ...

  3. 菜鸡的Java笔记 第三十一 扩展结构

    .新特性        可变参数的意义以及实现                那么下面通过一个简单的思考来分析可变参数的存在意义        范例:如果说现在要定义一个方法,这个方法可以实现任意多个 ...

  4. [hdu6987]Cycle Binary

    定义$x$为$s$的周期,当且仅当$\forall 1\le i\le |s|-x,s_{i}=s_{i+x}$​​(字符串下标从1开始) 令$per(s)$为$s$的正周期构成的集合,$\min p ...

  5. [bzoj5338]xor

    维护两颗可持久化字典树(当然可以放在一起),第一棵维护每一个点到根的每一位的二进制数量,在其父亲的基础上建立:第二棵维护dfs序上每一个点到第1个点的二进制数量,在其上一个点的基础上建立. 对于询问1 ...

  6. ThinkPad笔记本外放没声音解决办法(不是驱动的原因)

    本人的本子是T480,自从装完Ubuntu系统之后W10系统就没有外放声音了,卸载Ubuntu之后还是没有声音,重装声卡驱动.重装系统之后依然无效. 我的解决办法是升级主板Bois,具体如下: 进入官 ...

  7. 低代码开发Paas平台时代来了

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 低代码理论 概念 低代码开发基于可视化和模型驱动的概念,结合了云原生和多终端体验技术,它可以在大多数业务场景中,帮助企业显著 ...

  8. x86汇编反编译到c语言之——(1)表达式求值及赋值语句

    一. 反编译一种可能的实现方式 我们的目的是将多种平台的汇编如x86,ARM,6502反编译为c语言,所以实现时先将多种汇编转化为 特定虚拟机汇编语言,然后只需要将虚拟机汇编语言反编译为c语言.其中多 ...

  9. vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽

    刚开始使用 script setup 语法糖的时候,编辑器会提示这是一个实验属性,要使用的话,需要固定 vue 版本. 在 6 月底,该提案被正式定稿,在 v3.1.3 的版本上,继续使用但仍会有实验 ...

  10. 网络管理之命令行工具nmcli

    参考Ubuntu官方文档和Red Hat,本文采用Google翻译. NETWORKMANAGER 简介 介绍 NetworkManager 提供的默认联网服务是一个动态网络控制和配置守护进程,它尝试 ...