SpringCloud整合consul实现服务注册中心

本文介绍了如何使用SpringCloud与Consul搭建服务注册中心。首先,详细讲解了Consul的基本功能和环境准备,包括下载安装及启动。然后,通过创建服务提供者模块,添加相关依赖和配置,实现了服务的注册。接着,展示了如何建立服务消费者,并使用RestTemplate进行远程调用。最后,启动服务消费者并验证了服务间的通信。整个过程中强调了心跳检查在服务发现中的重要性。
摘要由CSDN通过智能技术生成

SpringCloud整合consul实现服务注册中心

consul简介

  consul是一套开源的分布式服务发现和配置管理系统由GO语言编写。

  consul的主要功能有:服务发现、运行状况检查、KV 存储、安全服务通信、多数据中心等功能。每个功能都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。本次介绍服务发现功能

consul环境准备

  • 参考官网下载并安装https://learn.hashicorp.com/tutorials/consul/get-started-install,官网已经讲的很详细了,我的consul安装在了阿里云服务器上
  • 启动consul
    IP地址一定要是私有IP否则会报错
    consul agent -dev -ui -node=consul-dev -client=IP地址 
    
  • 访问:http://139.196.195.43:8500/
    在这里插入图片描述

搭建服务提供者

  • 创建Module:consul-client8014

  • 更改POM文件

    <!--consul-discovery依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</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.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.5.2</version>
            </dependency>
    
  • 添加application.yml

    server:
      port: 8014 #端口号
    
    spring:
      application:
        name: consul-service8014 #服务名称
      cloud:
        consul:
          host: 139.196.195.43 #consul安装所在机器的外网IP
          port: 8500 #consul默认端口号
    
  • 添加主启动类

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ConsulClientMain8014 {
    
        public static void main(String[] args) {
            SpringApplication.run(ConsulClientMain8014.class,args);
        }
    }
    
  • 编写业务类

    @RestController
    @Slf4j
    public class TestController {
    
        @Value("${server.port}")
        private String port;
    
        @GetMapping(value = "/eat")
        public String eat(){
            return "吃饭喽!服务端口号是"+port+"-"+ IdUtil.simpleUUID();
        }
    }
    
  • 启动项目访问consul:http://139.196.195.43:8500/
    在这里插入图片描述
    这里报错是因为spring. cloud. consul默认心跳检查没有打开

    server:
      port: 8014 #端口号
    
    spring:
      application:
        name: consul-service8014 #服务名称
      cloud:
        consul:
          host: 139.196.195.43 #consul安装所在机器的外网IP
          port: 8500 #consul默认端口号
          discovery:
            heartbeat:
              enabled: true #打开心跳检查
    
  • 再次启动查看服务已经成功注册进来,并且红叉也消失了
    在这里插入图片描述

搭建服务消费者

  • 新建Module:consul-client80

  • 更改POM文件

    <!--consul-discovery依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</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.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
  • 添加application.yml

    server:
      port: 80 #端口号
    
    spring:
      application:
        name: consul-consumption80 #服务名称
      cloud:
        consul:
          host: 139.196.195.43 #consul安装所在机器的外网IP
          port: 8500 #consul默认端口号
          discovery:
            heartbeat:
              enabled: true #打开心跳检查
    
  • 添加主启动类

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ConsulClientMain80 {
    
        public static void main(String[] args) {
            SpringApplication.run(ConsulClientMain80.class,args);
        }
    }
    
    
  • 注入RestTemplate实现远程调用

    @Configuration
    public class BeanConfig {
    
        @Bean
        @LoadBalanced  //开启负载均衡的功能
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    }
    
    
  • 编写业务类

    @RestController
    @Slf4j
    public class TestController {
    
        /**
         * CONSUL_SERVICE8014:就是consul-service8014对外提供的服务名称
         */
        private static final String CONSUL_SERVICE8014 = "http://consul-service8014";
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping(value = "/eat")
        public String eat(){
            return restTemplate.getForObject(CONSUL_SERVICE8014+"/eat",String.class);
        }
    }
    
  • 启动80服务访问:http://127.0.0.1/eat
    在这里插入图片描述

  • 至此consul单机版实现服务注册中心已完成(后续如果有时间会出集群版的教程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值