SpringCloud基础 Consul的引入

前言

首先是为什么引入consul这个组件

我们知道微服务分为很多个模块,这里模块中相互调用,我使用硬编码的模式是不好的

比如微服务模块需要更新的时候,我们使用硬编码的方式可能需要修改很多个地方

但是使用consul之后,就引入了注册中心,我们只需要将对应的服务注册为节点

这样我们可以按照节点的名称去访问对应的服务,即使有多个服务器也可以通过算法来进行访问,比如轮询算法等等

所以我们引入了consul来达成微服务的服务端的负载均衡以及服务治理注册发现等功能

简介

首先还是挂一个官网的地址

www.consul.io

主要功能就是以下几点:

服务发现

健康检测

kv存储

多数据中心

可视化web界面

我们只需要在官网下载对应的版本

解压后只是一个孤零零的exe文件

然后我们输入consul agent -dev即可以开发者模式打开,再在浏览器访问8500端口即可

接着我们应该在idea中将服务给注册进consul了

我们需要修改pom文件,修改yml文件 修改主启动类

pom文件加上这个依赖

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

在yml文件加上这几行

 ####Spring Cloud Consul for Service Discovery
spring:
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

最后给主启动类加上这个注解@EnableDiscoveryClient

标记开启服务发现

注意对应的RestTemplate配置也需要加上负载均衡的注解

java 复制代码
@Configuration
public class RestTemplateConfig
{
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate()
    {
        return new RestTemplate();
    }
}

对应的在consul中加入对应节点的文件夹以及内容,然后我们就可以在本地接口中访问了

因为对应的微服务每个都需要配置文件等,我们觉得大多配置文件显得很冗余

所以consul这里可以帮助我们保存对应的配置文件

这时候我们又需要加上对应的pom文件依赖了

java 复制代码
<!--SpringCloud consul config-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

可以理解为是一个全局配置文件的作用

然后需要新增一个boostrap的yml文件

java 复制代码
spring:
  application:
    name: cloud-payment-service
    ####Spring Cloud Consul for Service Discovery
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
      config:
        profile-separator: '-' # default value is ",",we update '-'
        format: YAML

有人问为啥有了application.yml还需要这个呢

其实可以理解为application.yml是用户级别的配置文件

这里的bootstrap配置文件是系统级别的配置文件,优先级更高

两者是共存的,但是bootstrap的配置文件是优先加载的

这里加入这个我们是希望consul的配置先加载,然后对应的微服务从中获取到全局配置

然后我们需要在web网页中书写对应的配置信息

首先我们需要创建config文件夹

在键值对中输入config/即可创建

然后按照对应的微服务创建对应的文件夹

最后以data文件(非文件夹)结尾,我们就可以找到data中存储的yml文件了

接着我们就可以使用@Value注解来从对应的配置文件中取到信息了

默认是访问不带dev和prod的文件

但是我们可以通过application.yml文件进行设置

随后我们就可以使用controller进行访问拿到对应配置了

consul在window的服务注册和保存文件这里简述

可以建一个mydata文件夹进行保存

修改执行以下脚本即可,并完成开机自启动

@echo.服务启动......  
@echo off  
@sc create Consul binpath= "D:\devSoft\consul_1.17.0_windows_386\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect  1  -data-dir D:\devSoft\consul_1.17.0_windows_386\mydata   "
@net start Consul
@sc config Consul start= AUTO  
@echo.Consul start is OK......success
@pause

服务端负载均衡和客户端的区别

服务端负载均衡主要是nginx等

客户端consul可以完成

服务段主要是处理请求,将请求均匀的分配到空闲的服务器

客户端主要是向注册中心拉取节点数据,找到可以访问的节点发起请求

相关推荐
涔溪2 小时前
Docker简介
spring cloud·docker·eureka
荆州克莱6 小时前
Mysql学习笔记(一):Mysql的架构
spring boot·spring·spring cloud·css3·技术
白总Server16 小时前
Swagger UI
后端·ui·spring cloud·ribbon·架构·scala·1024程序员节
Yweir1 天前
SpringCloud 微服务消息队列灰度方案 (RocketMQ 4.x)
spring cloud·微服务·rocketmq
杨荧2 天前
【JAVA毕业设计】基于Vue和SpringBoot的大学生就业招聘系统
java·开发语言·jvm·vue.js·spring boot·spring cloud·开源
好大的月亮3 天前
自定义springCloudLoadbalancer简述
spring cloud
Chancezhou3 天前
【SpringBoot】SpringCloud一些常用依赖
spring boot·spring cloud
算力魔方AIPC3 天前
三分钟学会Docker基本操作,快速入门容器技术!
java·spring cloud·eureka
Wx-bishekaifayuan4 天前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava