官网的安装说明https://learn.hashicorp.com/tutorials/consul/get-started-install

1.下载安装

  环境:阿里云服务器,consul1.9.5,

  consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。

  consul用于微服务下的服务治理,主要特点有:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等

1.1下载

  https://www.consul.io/downloads

  

    选择linux版本下载

  1.2.上传到服务器

  

  1.3解压

  命令:unzip consulzip文件名字

  

  1.4把解压出来的consul文件移动到可用目录下

  命令:echo $PATH 查看可用目录,下面列出了很多目录,冒号隔开的。选择一个目录,把consul文件移动到该目录下。我选择的是/usr/local/bin

  1.5验证安装

  如下表示成功

  命令:consul

  

  1.6启动consul代理

  命令:./consul agent -dev -ui -node=consul-dev -client=192.168.128.149

  后面的ip是阿里云的私网ip

  1.7阿里云配置规则,打开8500端口

  1.8访问

2.搭建服务提供者

  2.1、新建一个maven项目(cloud-providerconsul-payment8006)

    结构如下:

    

  2.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.atguigu.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>cloud-providerconsul-payment8006</artifactId> <dependencies>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<!--热部署-代码改变自动编译-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <!-- consul-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency> </dependencies> </project>

  2.3、编辑配置文件application.yml

server:
port: 8006 #当前服务端口
spring:
application:
name: consul-provider-payment #服务名称 注意这个名称不要太长,我前面名字是consul-provider-payment-con,导致访问consul页面的额时候这个服务有红叉
cloud:
consul:
host: 59.120.138.4 #consul所在服务器ip
port: 8500 #consul端口
discovery:
service-name: ${spring.application.name}
heartbeat:
enabled: true #维持心跳

  2.4、编写主启动类

package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /**
* @Classname Payment8006
* @Description TODO
* @Date 2021/4/22 0022 下午 2:23
* @Created by jcc
*/
@SpringBootApplication
@EnableDiscoveryClient
public class Payment8006 {
public static void main(String[] args) {
SpringApplication.run(Payment8006.class,args);
}
}

 

  2.5、编写Controller

package com.atguigu.springcloud.controller;

import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import javax.annotation.Resource;
import java.util.UUID; @RestController
@Slf4j
public class PaymentController { @Value("${server.port}")
private String serverPort; @GetMapping(value = "/payment/consul")
public String paymentConsul(){
return "springcloud with consul: "+serverPort+"\t"+ UUID.randomUUID().toString();
}
}

 

  2.6、启动项目,测试

    1)查看consul页面

  

    2)使用地址:http://localhost:8006/payment/consul

     

3搭建服务消费者

  1、新建一个maven项目(cloud-consumerconsul-order80)

    项目结构如下:

    

  2、引入pom依赖,同上(与服务提供者依赖相同)

  3、编辑application.yml文件

server:
port: 80
spring:
application:
name: consul-consumer-order
cloud:
consul:
host: 59.120.138.4
port: 8500
discovery:
service-name: ${spring.application.name}
heartbeat:
enabled: true

 

  4、编写主启动类

package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /**
* @Classname ConsulOrder80
* @Description TODO
* @Date 2021/4/22 0022 下午 3:14
* @Created by jcc
*/
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulOrder80 {
public static void main(String[] args) {
SpringApplication.run(ConsulOrder80.class,args);
}
}

 

  5、编辑配置类,注入RestTemplate对象

package com.atguigu.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate; /**
* @Classname ApplicationContextConfig
* @Description TODO
* @Date 2021/4/22 0022 下午 3:02
* @Created by jcc
*/
@Configuration
public class ApplicationContextConfig {
@LoadBalanced
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}

 

  6、编辑Controller

package com.atguigu.springcloud.controller;

import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate; import javax.annotation.Resource;
import java.util.UUID; @RestController
@Slf4j
public class PaymentController { @Value("${server.port}")
private String serverPort; public static final String INVOME_URL = "http://consul-provider-payment"; @Resource
private RestTemplate restTemplate; @GetMapping("/consumer/payment/consul")
public String payment (){
String result = restTemplate.getForObject(INVOME_URL+"/payment/consul",String.class);
return result;
}
}

 

  7、启动项目测试

    1)查看consul页面

    

    2)访问http://localhost/consumer/payment/consul

    

spring-cloud03-consul的更多相关文章

  1. Spring Cloud Consul入门

    1. Consul介绍 Consul是一套开源的分布式服务发现和配置管理系统,支持多数据中心分布式高可用.Consul是HashiCorp( Vagrant的创建者)开发的一个服务发现与配置项目,用G ...

  2. Spring Cloud Consul 实现服务注册和发现

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布 ...

  3. Spring Cloud Consul使用——服务注册与发现(注册中心)

    整理自该文章 一.Consul 服务端接下来我们开发 Consul 的服务端,创建一个 spring-cloud-consul-producer 项目 1.添加依赖包 <dependencies ...

  4. Spring Cloud Consul

    1.2.0.RELEASE 该项目通过自动配置并绑定到Spring环境和其他Spring编程模型成语,为Spring Boot应用程序提供Consul集成.通过几个简单的注释,您可以快速启用和配置应用 ...

  5. Spring Cloud Consul 之Greenwich版本全攻略

    什么是Consul Consul是HashiCorp公司推出的开源软件,使用GO语言编写,提供了分布式系统的服务注册和发现.配置等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全 ...

  6. 服务注册发现、配置中心集一体的 Spring Cloud Consul

    前面讲了 Eureka 和 Spring Cloud Config,今天介绍一个全能选手 「Consul」.它是 HashiCorp 公司推出,用于提供服务发现和服务配置的工具.用 go 语言开发,具 ...

  7. Spring Cloud Consul Config 知识点

    Spring Cloud Consul Config 是 Config Server 和 Client的替代方案. 搭建一个配置中心,可以选择的方案: Spring Cloud Config 或者 S ...

  8. spring cloud consul上下线体验

    spring cloud consul中默认会将spring.application.name作为ID 同一服务起多个实例时,ID默认会变成${spring.application.name}-${s ...

  9. Spring Cloud Consul综合整理

    该项目通过自动配置和Spring环境以及其他Spring编程模型习惯用法提供了Spring Boot应用程序的Consul集成. 通过一些简单的注释,您可以快速启用和配置应用程序内的通用模式,并使用基 ...

  10. Spring Cloud Consul 入门指引

    1 概述 Spring Cloud Consul 项目为 Spring Boot 应用程序提供了与 Consul 的轻松集成. Consul 是一个工具,它提供组件来解决微服务架构中一些最常见的挑战: ...

随机推荐

  1. 【项目】AtCoder for Chinese

    前排提示:Github 内容搭配梯子食用效果更佳( 项目地址 网页 插件安装 Join us or Give us a star ! 注:因内容迁移,下列链接暂时失效(用空再搬一遍)qwq Trans ...

  2. PS2023下载安装保姆级教程中文汉化完整版

    PS2023Windows安装教程退出安全软件①:下载PS2023安装包 ②:打开下载好的文件,鼠标右键把安装包解压③:打开解压好的"PS 24.0.0"文件夹,找到并选中&quo ...

  3. django 多 APP urls的实现

    项目下urls.py 引入admin from django.contrib import admin 引入path,include from django.urls import path,incl ...

  4. flex布局中,元素等间距设置,包括第一个元素的左边,最后一个元素的右边,也等间距

    项目中很多地方会用到等间距排放的场景,使用flex 布局可以很方便的实现 .fu{ display: flex; ustify-content: space-between; } 通过上面代码,可以实 ...

  5. sublime text设置build system automatic提示no build system

    解决办法: 将: "selector": "source.asm" 改为: "selector": ["source.asm&qu ...

  6. BFS和DFS学习笔记

    1 算法介绍 1.1 BFS Breadth First Search(广度优先搜索),将相邻的节点一层层查找,找到最多的 以上图为例,首先确定一个根节点,然后依次在剩下的节点中找已找出的节点的相邻节 ...

  7. 数据结构学习——BST删除特定节点

    BST删除特定节点 前言 一个平常的星期三晚上,一节通选课中,在老师放的视频和极寒空调的折磨之下,想着做点别的什么的我,打开了博客园.想起来做题下午数据结构课中老师最后在讲BST删除节点的操作,并且以 ...

  8. 你不知道的Map家族中的那些冷门容器

    概述 本篇文章主要讲解下Map家族中3个相对冷门的容器,分别是WeakHashMap.EnumMap.IdentityHashMap, 想必大家在平时的工作中也很少用到,或者压根不知道他们的特性以及适 ...

  9. STM32标准库中GPIO_ReadInputData与GPIO_ReadInputDataBit的区别

    GPIO_ReadInputData读的是GPIOx的整个IDR寄存器的数据,返回一个十六位数,对应IDR寄存器的十六位.反映GPIOx所有端口的电平状态,所以参数只用传入GPIOx. uint16_ ...

  10. python之实现文件的读写

    很早之前做自动化测试,并没有将测试数据与数据库关联,而是直接通过json.ymal.excel等文件管理的.那么怎么用python读写文件呢? 在操作文件前,都需要打开文件,打开文件用内置函数open ...