SpringCloud系列(八)——SpringCloud集成Consul

本文详细介绍了如何使用Spring Cloud Consul实现服务发现,包括生产者(服务注册)和消费者(服务调用)的配置与示例。通过创建HelloController和ServiceController,展示了如何在Consul注册服务实例并动态路由请求。
Consul 的服务端:spring-cloud-consul-producer
  1. pom依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</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-consul-discovery</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
  2. 配置文件application.properties(Consul 的地址和端口号默认是 localhost:8500 ,如果不是这个地址可以自行配置。 spring.cloud.consul.discovery.serviceName 是指注册到 Consul 的服务名称,后期客户端会根据这个名称来进行服务调用。)

    spring.application.name=spring-cloud-consul-producer
    server.port=8501
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    #注册到consul的服务名称
    spring.cloud.consul.discovery.serviceName=service-producer

  3. 启动类添加了 @EnableDiscoveryClient 注解表示支持服务发现

    @SpringBootApplication
    @EnableDiscoveryClient
    public class SpringCloudConsulProducerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudConsulProducerApplication.class, args);
    }
    

    }

  4. 创建一个 HelloController,提供 hello 的服务

    @RestController
    public class HelloController {
    @RequestMapping(“/hello”)
    public String hello() {
    return “hello consul”;
    }
    }

为了模拟注册均衡负载复制一份上面的项目重命名为 spring-cloud-consul-producer2 ,修改对应的端口为 8502,修改 hello 方法的返回值为:”hello consul 2”,修改完成后依次启动两个项目。

这里写图片描述

Consul 消费端:spring-cloud-consul-consumer
  1. 创建一个 spring-cloud-consul-consumer项目,pom 文件和上面示例保持一致。

  2. 配置文件(客户端可以设置注册到 Consul 中,也可以不注册到 Consul 注册中心中,根据我们的业务来选择,只需要在使用服务时通过 Consul 对外提供的接口获取服务信息即可。)

    spring.application.name=spring-cloud-consul-consumer
    server.port=8503
    spring.cloud.consul.host=127.0.0.1
    spring.cloud.consul.port=8500
    #设置不需要注册到 consul 中
    spring.cloud.consul.discovery.register=false

  3. 启动类

    @SpringBootApplication
    public class SpringCloudConsulConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudConsulConsumerApplication.class, args);
    }
    

    }

  4. 测试,创建一个 ServiceController ,试试如果去获取 Consul 中的服务。

    @RestController
    public class ServiceController {
    @Autowired
    private LoadBalancerClient loadBalancerClient;
    @Autowired
    private DiscoveryClient discoveryClient;

    /**
     * 获取所有服务
     */
    @RequestMapping("/services")
    public Object services() {
        return discoveryClient.getInstances("service-producer");
    }
    
    /**
     * 从所有服务中选择一个服务(轮询)
     */
    @RequestMapping("/discover")
    public Object discover() {
        return loadBalancerClient.choose("service-producer").getUri().toString();
    }
    

    }

  5. 第二种方法来模拟调用服务端提供的 hello 方法,创建 CallHelloController。

    @RestController
    public class CallHelloController {
    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @RequestMapping("/call")
    public String call(){
        ServiceInstance serviceInstance = loadBalancerClient.choose("service-producer");
        System.out.println("服务地址:" + serviceInstance.getUri());
        System.out.println("服务名称:" + serviceInstance.getServiceId());
    
        String callServiceResult = new RestTemplate().getForObject(serviceInstance.getUri().toString() + "/hello", String.class);
        System.out.println(callServiceResult);
        return callServiceResult;
    }
    

    }

这里写图片描述

这里写图片描述

内容概要:本文详细介绍了一个基于Python实现的Transformer-GRU组合模型的故障诊断项目。该项目旨在通过深度学习技术,从多通道传感器采集的时序数据中自动提取特征,进行多类别故障识别。项目涵盖了从数据预处理、模型设计与构建、训练到评估的完整流程,解决了多源异构时序数据融合、长短期依赖特征提取、数据噪声与异常值处理等关键问题。此外,项目还设计了轻量化的网络结构以支持实时推断,并引入了透明可解释性设计,确保模型在工业现场的高效部署与应用。适合人群:具备一定编程基础,尤其是熟悉Python和深度学习框架(如PyTorch)的研发人员;从事工业设备维护与故障诊断的技术人员;以及对智能维护决策感兴趣的工程师。使用场景及目标:①适用于旋转机械、电力设备、汽车与轨道交通系统、制造业生产线、航空航天设备、智能电网、可再生能源设备及智能楼宇等多个领域的设备状态监测与故障诊断;②实现对复杂工况下多种故障类型的准确判别,极大提升工业设备维护的智能化水平,降低维修成本和设备停机风险;③推动工业大数据与人工智能的深度融合,为智慧工厂建设提供技术支持。其他说明:项目强调了数据质量与预处理的重要性,包括信号滤波、异常值检测与修正等步骤,确保输入模型的数据干净、完整和规范。同时,项目采用了多头自注意力机制与门控循环单元相结合的方式,充分发挥两者优势,既能够抓取设备运行信号的全局特征,又能细致捕获局部时序变化。此外,项目还设计了基于注意力权重的特征重要性可视化工具,帮助用户理解模型决策依据,提升用户对诊断结果的信任度。最后,项目支持多平台部署,包括本地服务器、云端平台及边缘计算设备,结合容器化技术与GPU加速,实现了模型的高效推理和灵活集成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值