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可以完成

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

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

相关推荐
蓝眸少年CY12 小时前
(第十二篇)spring cloud之Stream消息驱动
后端·spring·spring cloud
南朝雨19 小时前
Spring Boot Admin日志监控坑点:远程配置的logging.file.name为何生效又失效?
java·spring boot·spring cloud·微服务·logback
深入技术了解原理20 小时前
eureka-client依赖爆红无法下载
spring cloud·云原生·eureka
ZePingPingZe20 小时前
深入理解网络模型之Spring Cloud微服务通信、Socket、HTTP与RPC
网络协议·spring cloud·rpc·dubbo
叫码农就行20 小时前
spring cloud 笔记
java·笔记·spring cloud
七夜zippoe21 小时前
微服务架构演进实战 从单体到微服务的拆分原则与DDD入门
java·spring cloud·微服务·架构·ddd·绞杀者策略
Leo July2 天前
【Java】Spring Cloud 微服务生态全解析与企业级架构实战
java·spring cloud
李慕婉学姐2 天前
【开题答辩过程】以《基于springcloud的空气质量监控管理系统》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
后端·spring·spring cloud
CV_J2 天前
安装kibana
java·elasticsearch·spring cloud·docker·容器