• II第三章:(6)Consul注册中心


    一、Consul 简介

    1、Consul 是什么

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

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

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

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

    2、Consul 能干嘛

    Spring Cloud Consul 具有如下特性:

    • 服务发现,提供HTTP和DNS两种发现方式。
    • 健康监测,支持多种方式,HTTP、TCP、Docker、Shell脚本定制化监控
    • KV存储,Key、Value的存储方式
    • 多数据中心,Consul支持多数据中心
    • 可视化Web界面

    3、下载

    https://www.consul.io/downloads.html

    4、使用

    https://www.springcloud.cc/spring-cloud-consul.html

    二、安装并运行 Consul

    1、官网安装说明

    https://learn.hashicorp.com/consul/getting-started/install.html

    2、安装

    下载完成后只有一个consul.exe文件,硬盘路径下双击运行,查看版本号信息

    3、启动

    使用开发模式启动,在 cmd 命令行输入以下命令 consul agent -dev

    通过以下地址可以访问Consul的首页:http://localhost:8500

    结果页面:

    三、服务提供者

    1、新建服务提供者

    新建Module支付服务provider8006,cloud-providerconsul-payment8006

    2、改 POM

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <parent>
            <artifactId>cloud2020</artifactId>
            <groupId>com.njf.springcloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>

        <artifactId>cloud-providerconsul-payment8006</artifactId>

        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>

        <dependencies>
            <!--SpringCloud consul-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
            <!-- SpringBoot整合Web组件 -->
            <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>
            <!--日常通用jar包配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

    </project>

    3、写 YML

    ###consul服务端口号
    server:
      port: 8006

    spring:
      application:
        name: consul-provider-payment
      ####consul注册中心地址
      cloud:
        consul:
          host: localhost
          port: 8500
          discovery:
            #hostname: 127.0.0.1
            service-name: ${spring.application.name}

    4、主启动类

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

    5、业务类

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

        @GetMapping("/payment/consul")
        public String paymentInfo() {
            return "springcloud with consul: "+serverPort+"\t\t"+ UUID.randomUUID().toString();
        }
    }

    6、验证测试

    浏览器测试:http://localhost:8006/payment/consul

    四、服务消费者

    1、新建服务消费者

    新建Module消费服务order80,cloud-consumerconsul-order80

    2、改 POM

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <parent>
            <artifactId>cloud2020</artifactId>
            <groupId>com.njf.springcloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>

        <artifactId>cloud-consumerconsul-order80</artifactId>

        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>

        <dependencies>
            <!--SpringCloud consul-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
            <!-- SpringBoot整合Web组件 -->
            <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>
            <!--日常通用jar包配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

    </project>

    3、写 YML

    ###consul服务端口号
    server:
      port: 80

    spring:
      application:
        name: cloud-consumer-order
      ####consul注册中心地址
      cloud:
        consul:
          host: localhost
          port: 8500
          discovery:
            #hostname: 127.0.0.1
            service-name: ${spring.application.name}

    4、主启动类

    @SpringBootApplication
    @EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务
    public class OrderConsulMain80 {
        public static void main(String[] args) {
            SpringApplication.run(OrderConsulMain80.class,args);
        }
    }

    5、配置 Bean

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

    6、controller

    @RestController
    public class OrderConsulController {
        public static final String INVOKE_URL = "http://cloud-provider-payment"//consul-provider-payment

        @Autowired
        private RestTemplate restTemplate;

        @GetMapping(value = "/consumer/payment/consul")
        public String paymentInfo() {
            String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul", String.class);
            System.out.println("消费者调用支付服务(consule)--->result:" + result);
            return result;
        }
    }

    7、验证测试

    8、访问测试地址

    浏览器测试:http://localhost/consumer/payment/consul

  • 相关阅读:
    微信支付授权目录填写规则
    前后端分离之vue2.0+webpack2 实战项目 -- html模板拼接
    前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
    windows下nginx的安装及使用方法入门
    抛弃vue-resource拥抱axios
    Eslint检测出的问题如何自动修复
    用webpack2.0构建vue2.0单文件组件超级详细精简实例
    SQLAlchemy 教程 —— 基础入门篇
    Linux下python2.7安装pip
    python 创建虚拟环境(virtualenv)
  • 原文地址:https://www.cnblogs.com/niujifei/p/16215397.html
Copyright © 2020-2023  润新知