• SpringCloud学习笔记【六】:Consul实现服务注册与发现


    Consul简介

    官网: https://www.consul.io/docs/intro

    Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用go语言开发。

    提供了微服务系统中的服务治理、配置中心、控制总线等功能,他们可以单独使用,也可一起使用构建全方位的服务网格。 总之,Consul提供了一种完整的服务网格解决方案。

    关键特性:

    1. Service Discovery服务发现
    2. Health Checking健康检查
    3. KV Store键值对存储
    4. Secure Service Communication安全的服务通信
    5. Multi多数据中心

    Consul安装与使用

    Windows安装

    进入下载界面:https://www.consul.io/downloads

    consul.exe同级目录中打开控制台,执行:

    consul --version #查看版本
    consul agent -dev #开发者模式启动
    

    Docker安装

    直接看这篇文章就好了:Docker安装Consul

    注册服务提供者

    引入依赖

    <!--SpringCloud consul-server -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
    

    配置yml

    #consul服务端口号
    server:
      port: 8006
    
    spring:
      application:
        name: consul-provider-payment
      #consul注册中心地址
      cloud:
        consul:
          host: 127.0.0.1
          port: 8500
          discovery:
            #hostname: 127.0.0.1
            service-name: ${spring.application.name}
    

    添加注解

    @SpringBootApplication
    @EnableDiscoveryClient
    public class PaymentConsul8006Application {
        public static void main(String[] args) {
            SpringApplication.run(PaymentConsul8006Application.class, args);
        }
    }
    

    编写Controller

    @RestController
    @Slf4j
    public class PaymentController {
        @Value("${server.port}")
        private String serverPort;
    
        @GetMapping(value = "/payment/consul")
        public String paymentConsul() {
            return "spring cloud with consul: " + serverPort + "	   " + UUID.randomUUID().toString();
        }
    }
    

    同样的,我们希望将这个服务注册进Consul服务中心。

    测试

    我们启动PaymentConsul8006Application,再查看localhost:8500/

    注册服务消费者

    pom,yml,启动类注解差不太多,这里就不赘述了,感兴趣可以查看仓库代码:https://gitee.com/tqbx/spring-cloud-learning,以标签的形式详细区分每个步骤。

    当我们同时启动消费者和提供者,Consul中就会注册进两个service。消费者访问localhost/consumer/payment/consul,将会调用提供者的接口,完成需求。

    源码下载

    本系列文章为《尚硅谷SpringCloud教程》的学习笔记【版本稍微有些不同,后续遇到bug再做相关说明】,主要做一个长期的记录,为以后学习的同学提供示例,代码同步更新到Gitee:https://gitee.com/tqbx/spring-cloud-learning,并且以标签的形式详细区分每个步骤,这个系列文章也会同步更新。

  • 相关阅读:
    Java面试题3
    Git 命令
    Flutter 基础控件
    Flutter工程目录
    GitHub简介
    Android Studio 安装 Flutter
    Android 权限管理
    结构型模式-适配器模式
    结构型模式-外观模式
    结构型模式-组合模式
  • 原文地址:https://www.cnblogs.com/summerday152/p/14013553.html
Copyright © 2020-2023  润新知