5. 服务注册中心——Consul

1. 简介

1.1 是什么?

https://www.consul.io/intro/index.html

        Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发。
        提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网络解决方案。

        它具有很多优点。包括:基于raft协议、 比较简洁;支持健康检查,同时支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供图形界面,跨平台,支持Linux、Mac、Windows

1.2 能干嘛?(特性)

1)服务发现:提供HTTP和DNS两种发现方式

2)健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化

3)KV存储:Key、Value存储方式

4)多数据中心:Consul支持多数据中心

5)可视化Web界面

下载地址:https://www.consul.io/downloads.html

1.3 如何使用

参看使用说明:https://www.springcloud.cc/spring-cloud-consul.html

2. 安装与运行

2.1 安装

2.1.1 Linux版本

安装说明:https://learn.hashicorp.com/consul/getting-started/install.html

2.1.2 windows版本

下载之后,解压,有一个exe的安装文件,如图:

5. 服务注册中心——Consul_第1张图片

运行方法:使用开发模式启动

在当前目录,打开cmd命令窗口,输入命令 consul --version  查看版本,如图:

5. 服务注册中心——Consul_第2张图片

启动命令:consul agent -dev

5. 服务注册中心——Consul_第3张图片

2.2 查看web界面

localhost:8500

如图:

5. 服务注册中心——Consul_第4张图片

3. 服务提供者注册进Consul

3.1 操作步骤

1)参考cloud-provider-payment8004新建cloud-providerconsul-payment8006

2)引入pom.xml

参考cloud-provider-payment8004的pom,将zookeeper换成consul即可,如图:

5. 服务注册中心——Consul_第5张图片

完整的pom.xml



    
        cloud2020
        com.bjc.cloud
        1.0-SNAPSHOT
    
    4.0.0

    cloud-providerconsul-payment8006

    
        
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
        
            org.springframework.boot
            spring-boot-starter-test
        
        
            com.bjc.cloud
            cloud-api-commons
            ${project.version}
        
    

3)yml配置文件

# 8006 表示注册到consul服务器的支付服务提供者端口号
server:
  port: 8006

# 服务别名   注册zookeeper到注册中心名称
spring:
  application:
    name:
      cloud-providerconsul-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

4)启动类

package com.bjc.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

5)业务Controller

package com.bjc.cloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

@RestController
public class Paymentcontroller {
	@Value("${server.port}")
	private String serverport;

	@GetMapping("/payment/consul")
	public String paymentconsul(){
		return "spring cloud width consul: " + serverport + "\t" + UUID.randomUUID().toString();
	}
}

3.2 测试

启动8006微服务

查看consul控制台,可以成功的看到我们的服务,如图;

5. 服务注册中心——Consul_第6张图片

说明我们的服务成功的注册进了consul中

然后,我们访问一下controller,如图;

5. 服务注册中心——Consul_第7张图片

4. 服务消费者注册进注册中心

4.1 操作步骤

1)参考cloud-consumerzk-order80新建Module,cloud-consumerconsul-order80

2)修改pom.xml



    
        cloud2020
        com.bjc.cloud
        1.0-SNAPSHOT
    
    4.0.0

    cloud-consumerconsul-order80

    
        
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
        
            org.springframework.boot
            spring-boot-starter-test
        
        
            com.bjc.cloud
            cloud-api-commons
            ${project.version}
        
    

3)修改yml配置文件

server:
  port: 80

spring:
  application:
    name: cloud-consumerconsul-order
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

4)配置类

package com.bjc.cloud.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;

@Configuration
public class ConfigBean {
	@Bean
	@LoadBalanced
	public RestTemplate getRestTemplate(){
		return new RestTemplate();
	}
}

5)启动类

package com.bjc.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

6)controller

package com.bjc.cloud.controller;

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

import javax.annotation.Resource;

@RestController
public class OrderController {
	private static final String INVOKE_URL = "http://cloud-providerconsul-payment";
	@Resource
	private RestTemplate restTemplate;
	@GetMapping("/consumer/consul/paymentinfo")
	public String paymentInfo(){
		return restTemplate.getForObject(INVOKE_URL + "/payment/consul",String.class);
	}
}

4.2 测试

运行cloud-consumerconsul-order80,查看控制台,如图:

5. 服务注册中心——Consul_第8张图片

调用cloud-consumerconsul-order80的controller,如图:

5. 服务注册中心——Consul_第9张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(#,springCloud,H版本与Boot2.2)