服务注册与发现——Consul

本文介绍Consul作为服务发现和配置管理系统的功能特点及安装步骤,并详细演示如何通过Spring Cloud将服务提供者和服务消费者注册到Consul服务注册中心。

一、Consul简介

1、官网

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

2、什么是consul

Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发。提供了微服务系统中的 服务治理配置中心控制总线 等功能。

Consul需要一个数据平面,并支持代理和本机集成模型。

Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。

3、consul的特点

  • 服务发现Service Discovery:Consul的客户端可以注册服务,例如 apimysql,其他客户端可以使用Consul来发现给定服务的提供者。提供HTTP和DNS两种发现方式。
  • 健康监测Health Checking:客户端可以查询监视群集的运行状况。
  • KV存储:Key、Value的存储方式
  • 多数据中心:满足一致性、分许容错性的系统,通常性能不是特别高。满足CAP中的CP
  • 具有可视化Web界面

二、安装与运行

在官网下载windows64版本后,双击解压后得到consul.exe

在这里插入图片描述

在当前目录下进入cmd中,可以查看和使用consul

在这里插入图片描述

打开本地8500端口查看集群状态

在这里插入图片描述

默认绑定的端口

在这里插入图片描述

修改默认端口:打开consul.exe的根目录 ,在次目录下创建一个 basic.json 的文本,以及一个data命名的空文件夹,文本内容如下:

{
  "ports": {
    "server": 9300,
    "serf_lan": 9301,
    "serf_wan": 9302,
    "http": 9500,
    "dns": 9600
  }
}

Consul最多需要6个不同的端口才能正常工作,有些使用TCP,UDP或两种协议。下面我们记录每个端口的要求。

端口号协议功能
RPC:8300TCPagent server 使用的,用于处理其他agent发来的请求
Serf LAN:8301TCP 、UDPagent使用此端口处理LAN中的gossip
Serf WAN:8302TCP 、UDPagent server使用此端口处理WAN中的与其他server的gossip
8400TCPagent用于处理从CLI来的RPC请求
HTTP API:8500TCPagent用于处理HTTP API
DNS:8600TCP 、UDPagent用于处理 DNS 查询

三、服务提供者注册到Consul服务注册中心

1、pom

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

2、yaml配置文件

server:
  port: 8006

spring:
  application:
    name: consul-Order
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        hostname: 127.0.0.1
        service-name: ${spring.application.name}

3、验证

先运行consul,再运行项目,可以看到已经注册到consul中了

在这里插入图片描述

四、服务消费者注册到Consul服务注册中心

1、yaml配置文件

server:
  port: 80

spring:
  application:
    name: consul-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        hostname: 127.0.0.1
        service-name: ${spring.application.name}

2、config配置类:使当前微服务能够使用其他微服务

package org.jun.Config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author junfeng.lin
 * @date 2021/2/9 16:43
 */
@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced//使用该注解赋予RestTemplate负载均衡的能力
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

3、Controller

package org.jun.Controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author junfeng.lin
 * @date 2021/2/9 16:36
 */
@RestController
public class myController {
    //要访问的服务提供方的微服务名称
    public static final String INVOKE_URL = "http://consul-Order";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/showConsumer")
    public String paymentInfo() {
        String re = restTemplate.getForObject(INVOKE_URL + "/showOrder", String.class);
        return re;
    }
}

4、验证

先运行consul,再运行项目,可以看到已经注册到consul中了

在这里插入图片描述

访问给定的url,实际上是访问其他服务提供者的服务

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值