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 + "\t   " + 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,并且以标签的形式详细区分每个步骤,这个系列文章也会同步更新。

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...