三. Consul 作为 SpringCloud 注册中心配置

2023-11-13

一. Consul 简单介绍

  1. Consul 用 go 语言写的服务管理系统,提供了服务治理,配置中心,控制总线等功能,优点: 基于raft协议比较简洁,支持健康检查,支持http和dns协议,支持夸数据中心的wan集群,提供图形化界面,夸平台包括Linux,Mac,Windows
    在这里插入图片描述
  2. Consul 下载地址 : http://www.consul.io/downloads.html
  3. 推荐 Consul 教程中文文档 : http://springcloud.cc/spring-cloud-consul.html
  4. Consul 默认端口号是 8500

1. Consul 的 windows 单机版安装运行

  1. 在官网下载windows 64 位 Consul 压缩包,解压到非中文路径下,只有一个".exe"结尾的文件,双击文件运行
  2. 在文件路径下cmd打开命令行输入 “consul --version” 可以查看版本
    在这里插入图片描述
    在这里插入图片描述
  3. 也可以在路径下进入cmd命令行,输入"consul agent -dev" 命令运行
  4. 运行成功后也可访问 Consul 图形化界面 “http://localhost:8500/ui/dc1/services”
    在这里插入图片描述

二. 配置服务注册到 Consul

  1. 安装启动 Consul
  2. 服务提供方服务消费方同时引入 Consul 依赖
		<!--SpringCloud consul-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
  1. 服务提供方与服务消费方的启动类都要添加 @EnableDiscoveryClient 注解修饰
  2. 服务消费方创建配置类创建 RestTemplate 注入到容器中,使用 @LoadBalanced 修饰开启Ribbon负载
  3. 服务消费方通过 RestTemplate 根据服务名称在 Consul 注册中心获取指定服务的调用地址,负载调用

1. 服务提供方 yml 文件配置注册到 Consul

server:
  port: 8006 #当前服务端口号

spring:
  application:
    name: cloud-consul-procider-payment8006 #当前服务名称

#=============向consul注册当前服务配置==============================
  cloud:
    consul:
      host: localhost #当前服务要连接的consul ip 地址
      port: 8500 #当前服务要连接的consul 端口号
      discovery:
        service-name: ${spring.application.name} #当前服务向consul注册暴露的名称
#=============向consul注册当前服务配置 end==============================

2. 服务消费方 yml 文件配置注册到 Consul

server:
  port: 80 #当前服务端口号

spring:
  application:
    name: cloud-consul-consumer-order #当前服务名称

  #=============向consul注册当前服务配置==============================
  cloud:
    consul:
      host: localhost #当前服务要注册的 consul ip 地址
      port: 8500 #当前服务要注册的 consul 端口号
      discovery:
        service-name: ${spring.application.name} #当前服务向consul注册时暴露的名称
#=============向consul注册当前服务配置 end==============================

3. 服务消费方配置 RestTemplate 注入到容器中

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 ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate ();
    }
}

4. 服务消费方使用 RestTemplate 根据服务名称调用指定服务

import com.common.result.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;

@Controller
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    //服务提供方在Consul上注册的名称
    private String serverName="cloud-consul-procider-payment8006";

    @RequestMapping(value = "/consumerConsul", method = RequestMethod.GET)
    @ResponseBody
    public JsonResult getVal(){
        return restTemplate.getForObject("http://"+serverName+"/consulTest",JsonResult.class);
    }
}

其它配置

spring.cloud.consul.host:配置consul地址
spring.cloud.consul.port:配置consul端口
spring.cloud.consul.discovery.enabled:启用服务发现
spring.cloud.consul.discovery.register:启用服务注册
spring.cloud.consul.discovery.deregister:服务停止时取消注册
spring.cloud.consul.discovery.prefer-ip-address:表示注册时使用IP而不是hostname
spring.cloud.consul.discovery.health-check-interval:健康检查频率
spring.cloud.consul.discovery.health-check-path:健康检查路径
spring.cloud.consul.discovery.health-check-critical-timeout:健康检查失败多长时间后,取消注册
spring.cloud.consul.discovery.instance-id:服务注册标识

问题: 如果服务宕机后,consul节点还存在,查看是否同时配置了:

spring.cloud.consul.discovery.deregister:服务停止时取消注册
spring.cloud.consul.discovery.health-check-critical-timeout:健康检查失败多长时间后,取消注册
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三. Consul 作为 SpringCloud 注册中心配置 的相关文章

  • GSON - JsonSyntaxException - 第 7 行第 4 列的预期名称

    我有以下结果类 其对象将以 JSON 形式返回 public class Result public String objectid public String dtype public String type public String
  • Java-Android 上的 MulticastSocket 问题

    我开始使用 MulticastSocket 进行编码 尝试制作一个带有客户端和服务器的简单应用程序来发送消息 我的服务器代码 import java io IOException import java net DatagramPacket
  • 正则表达式删除2个字符串之间的所有内容

    我的replaceAll 需要一个正则表达式来删除2 个字符串和字符串本身之间的所有内容 例如 如果我有类似的东西 stackoverflow is really awesome nremove123 n I love it 我试图做一个像
  • 如何将 AES CCM 与 Bouncycastle JCE 提供程序一起使用 - CCMParameters

    是否可以使用JCE来执行CCM 我在互联网上看到很多使用非 JCE bouncycastle 类的示例 特别是 我看到他们调用 init 并传入 CCMParameters 对象 问题是 这个 CCMParameters 对象不是从 Alg
  • Jackson序列化配置

    我在 Spring 3 MVC 应用程序中使用 Jackson JSON 为了不序列化每个日期字段 我创建了一个使用特定日期格式的自定义对象映射器 Component jacksonObjectMapper public class Cus
  • Java util Logger 未写入文件

    我为我的应用程序编写了一个愚蠢的记录器 它将信息 警告和严重消息写入日志文件 前一段时间它工作得很好 但突然间 它无缘无故地停止工作了 如果日志文件不存在 它会继续创建该文件 但不写入任何内容 我找不到它现在不起作用的原因 我会感谢一些帮助
  • Java Swing - 在运行时动态切换语言环境

    我了解如何国际化 java 程序 但我有一个问题 我的程序中的语言可以随时切换 但我的程序可以存在多种状态 这意味着它可能会也可能不会打开多个 JLabels JPanel JFrame 等 是否有一个类或方法可以将当前的 GUI 更新为切
  • ffmpeg 用于屏幕捕获?

    所以我有一个小程序来捕获屏幕和计算机麦克风的声音 然后屏幕截图被编码为 ScreenVideo2 声音被编码为 AAC 如何使用 ffmpeg 逐帧混合 然后将混合输出发送到 wowza 媒体服务器 如果用ffmpeg无法完成 您能提供一些
  • 通过 jclouds 使用 AWS (S3) - 如何承担角色

    使用普通身份验证凭据时 我可以执行以下操作 ContextBuilder newBuilder aws s3 credentials keyId key buildView BlobStoreContext class 访问 S3 的 Bl
  • 如何使用 RestTemplate 禁用编码

    我正在使用 REST 模板有意在请求 uri 中发送 例如 items a b String responseEntity restTemplate exchange items a b requestObj getHttpMethod r
  • Hibernate 验证器:违规消息语言

    我有一个测试类 我正在测试一个域模型 该模型用例如注释 NotNull 在我的测试课中 我首先得到验证器 private static Validator validator BeforeClass public static void s
  • 将resourceBundle与外部文件java一起使用

    我一直在阅读有关此问题的其他问题和答案 但我不明白资源边界是如何完全工作的 我认为这与 Joomla 使用多语言选项的方式类似 基本上 您有要阅读的不同语言的不同消息的文件 所以我在 src Lang 文件夹中创建了 System prop
  • Keycloak - 自定义表单操作在流程中不可见

    我正在尝试为用户注册实现自定义表单操作 我在表单上添加了一些自定义字段 我希望验证这些字段 在浏览了 keycloak 文档后 我意识到我需要 扩展 FormAction FormActionFactory 将actionfactory打包
  • EJB3 - 通过注入与查找获取 bean - 有什么区别、影响和陷阱?

    我知道有两种获取 EJB 实例的方法 通过 EJB 注释在 servlet 和 EJB 中进行依赖注入 在任何地方通过 Context lookup 进行 JNDI 查找 使用这两种方法有哪些差异 影响和陷阱 它们是一样的吗 依赖注入比查找
  • 如何使用 Spring 状态机在状态转换期间引发异常

    我试图了解状态转换期间操作如何抛出异常 我配置了这个简单的状态机 transitions withExternal source State A1 target State A2 event Event E1 action executeA
  • 如何正确关闭资源

    当我清理一些代码时 FindBugs 向我指出了一些使用 Connection CallableStatement 和 ResultSet 对象的 JDBC 代码 这是该代码的一个片段 CallableStatement cStmt get
  • 如何使用 Jersey 的内部路由机制来提取类/方法引用?

    我正在运行 Jersey 1 8 应用程序 Jersey 作为 Servlet 运行 我需要写一个小服务程序过滤器给定一个简单的请求 响应 能够确定哪个 REST 资源 方法将响应该请求并从注释中提取值 例如 假设我有以下资源 Path f
  • jtree 编程式多选

    是否能够以编程方式选择 JTree 中的多个树节点 我已经设置了多选模式tree getSelectionModel setSelectionMode TreeSelectionModel DISCONTIGUOUS TREE SELECT
  • Java 到 ruby​​ AES/ECB/PKCS5Padding 加密

    我有一个使用第三方支付门户的在线电子商务网站 支付门户一直运行良好 直到第三方支付门户要求每个人开始使用带有其他支付参数的哈希密钥 现在的问题是第三方支付门户只提供了一页文档来实现哈希密钥 这是提供的文档 加密演算法 为了减少数据传输和发布
  • 通过 awselb 使用 ssl 时的 neo4j java 驱动程序问题

    I am using neo4j community version 3 1 1 and enterprise edition version 3 0 1 with ssl configured through awselb To conn

随机推荐

  • mac解决Enter passphrase for key每次输入密码

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 分享一个使用比较久的 1 理解公钥 私钥 当我们关联好自己的git时 发现每次pull 或 push代码时会让我们重复性输入自己的密码 问题不是出在我们关联的不对
  • centos6和centos7防火墙的关闭

    原文 CentOS6 5查看防火墙的状态 1 zh localhost service iptable status 显示结果 1 2 3 4 5 zh localhost service iptable status Redirectin
  • MATLAB使用单纯形法解决线性规划问题,函数形式调用,举例演示

    线性规划隶属于范畴学 在现实的应用十分广泛 简单来说 就是自变量在线性约束的条件下 求线性函数的最小值或最大值 对于优化问题 其数学模型往往需要提取出关键的三要素 即 自变量相关的约束条件 自变量的取值范围 关于自变量的目标函数 对于线性规
  • 【泛微E9开发】workflowservice创建流程

    最下面附demo下载地址 包括所需要的JAR文件 package test WorkflowServicePortType import org junit Test import weaver workflow webservices W
  • python创意作品-python的作品

    广告关闭 2017年12月 云 社区对外发布 从最开始的技术博客到现在拥有多个社区产品 未来 我们一起乘风破浪 创造无限可能 发现了编程与艺术又一个契合点 小开心一下 其实这个过程非常简单 我们先看作品 后讲解代码 python书法作品1
  • 自定义TableLayoutPanel使它能够在运行时用鼠标改变行高和列宽。

    using System using System Collections Generic using System ComponentModel using System Drawing using System Windows Form
  • 1054 求平均值 (20 分)

    1054 求平均值 20 20 分 本题的基本要求非常简单 给定N个实数 计算它们的平均值 但复杂的是有些输入数据可能是非法的 一个 合法 的输入是 1000 1000 区间内的实数 并且最多精确到小数点后2位 当你计算平均值的时候 不能把
  • TiKV架构解析

    TiKV架构解析 TiKV 的整体架构比较简单 如下 参考资料 1 TiKV 源码解析系列 如何使用 Raft 2 TiKV 源码解析系列 multi raf
  • Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings

    Connection timed out connect If you are behind an HTTP proxy please configure the proxy settings either in IDE or Gradle
  • 我的2018年总结

    前言 本来没有打算总结自己的2018年 毕竟自己就是个普通的不能再普通的学生 没有什么特别值得让人关注的地方 但是今天看到了自己的好朋友昨天写了他的2018年总结 看了感觉记录一下自己的生活还是挺有意义的 所以就也打算稍微写一点 毕竟写这些
  • 启动Nginx报[10013]错误的解决方案

    报错情景 今天自己再本地配置好Nginx 但是启动时报了 10013 的错误 上网查了下 原因是80端口被占用了 错误提示如下图 随后在cmd中输入下列命令 如图示 查看了一下80端口的占用情况 发现果然被占用 情况和网上其他人所遇到的是一
  • Nacos使用域名做为服务地址遇到的问题及解决方案

    一 发现问题 应用启动时 增加Nacos服务端的配置信息 应用使用IP加端口连接Nacos服务器时 运行一切正常 启动参数增加以下Nacos参数 Dspring cloud nacos discovery namespace DEV Dsp
  • NUC980开源项目28-error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was

    上面是我的微信和QQ群 欢迎新朋友的加入 项目码云地址 国内下载速度快 https gitee com jun626 nuc980 open source project 项目github地址 https github com Jun117
  • ES6 -- Iterator 的基本用法

    1 Iterator作用 1 为各种数据 提供一个统一的 简便的访问接口 2 使数据结构的成员能够按某种次序排列 3 ES6创造了一种新的遍历命令for of循环 Iterator接口主要供for of消费 2 Iterator 的遍历过程
  • 华为ensp---组播服务器实验

    一 实验拓扑 ensp里选择MCS为组播服务器 二 设置VLC参数 点击ensp右上角的设置 在工具设置里面把VLC的安装路径选上 三 详细配置 1 组播服务器配置 2 PC端配置 输入MCS组播的IP和MAC地址 2 路由器配置
  • NPM和webpack的关系(转载)

    入门前端的坑也很久了 以前很多大小项目 前端都是传统式开发 一直在重复造轮子 接触VUE后 对vue cli有了解后 仅仅知道vue cli是一个vue项目的脚手架 可以快速的构建一个vue的基于npm的模块化项目 vue内部的打包机制其实
  • IDEA中SonarLint插件的安装与配置

    本文内容概要 本文介绍了IDEA SonarLint插件的装 以及配置SonarLint使用 SonarQube的规则 注意 不含有SonarQube安装和使用 代码管理Sonar和SonarLint简介 Sonar简介摘自sonar百度百
  • Pycharm设置注释行字体和颜色的方法

    第一步 进入 file gt settings gt Editor gt Color Scheme gt python 选择 Line Commet 然后点击 Foreground 选择颜色 大家可以设置自己夏欢注释字体的颜色 我举例设置成
  • zabbix监控多实例redis

    Zabbix监控多实例Redis 软件名称 软件版本 Zabbix Server 6 0 17 Zabbix Agent 5 4 1 Redis 6 2 10 Zabbix客户端配置 编辑自动发现脚本 vim usr local zabbi
  • 三. Consul 作为 SpringCloud 注册中心配置

    目录 一 Consul 简单介绍 1 Consul 的 windows 单机版安装运行 二 配置服务注册到 Consul 1 服务提供方 yml 文件配置注册到 Consul 2 服务消费方 yml 文件配置注册到 Consul 3 服务消