zoukankan      html  css  js  c++  java
  • 基于consul的服务注册(含踩坑过程)

    在本地的一个案例中进行修改

    修改微服务的相关pom文件
    修改每个微服务的pom文件,添加SpringCloud提供的基于Consul的依赖

    <!--SpringCloud提供的基于Consul的服务发现-->
    <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    <!--actuator用于心跳检查-->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

    注:由于我之前的代码是注册到eureka中,把配置注解要删了,pom的依赖还在,启动直接报错,还是要去掉的

    <!--引入EurekaClient-->
            <!--  <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency> -->

    其中 spring-cloud-starter-consul-discovery 是SpringCloud提供的对consul支持的相关依赖。
    spring-boot-starter-actuator 适用于完成心跳检测响应的相关依赖。

    配置服务注册

    server:
      port: 9001 #端口
    spring:
      application:
        name: service-product #服务名称
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
        username: root
        password: 123456
      jpa:
        database: MySQL
        show-sql: true
        open-in-view: true
      ###开始配置consul的服务注册
      cloud:
        consul:
          host: 192.168.180.137 #consul服务器的主机地址
          port: 8500 #consul服务器的ip地址
          discovery:
            #是否需要注册
            register: true
            #注册的实例ID (唯一标志)
            instance-id: ${spring.application.name}-1
            #服务的名称
            service-name: ${spring.application.name}
            #服务的请求端口
            port: ${server.port}
            #指定开启ip地址注册
            prefer-ip-address: true
            #当前服务的请求ip
            ip-address: ${spring.cloud.client.ip-address}
    server:
      port: 9002 #端口
    spring:
      application:
        name: service-order #服务名称
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
        username: root
        password: 123456
      jpa:
        database: MySQL
        show-sql: true
        open-in-view: true
      ###开始配置consul的服务注册
      cloud:
        consul:
          host: 192.168.180.137 #consul服务器的主机地址
          port: 8500 #consul服务器的ip地址
          discovery:
            #是否需要注册
            register: true
            #注册的实例ID (唯一标志)
            instance-id: ${spring.application.name}-1
            #服务的名称
            service-name: ${spring.application.name}
            #服务的请求端口
            port: ${server.port}
            #指定开启ip地址注册
            prefer-ip-address: true
            #当前服务的请求ip
            ip-address: ${spring.cloud.client.ip-address}

    其中 spring.cloud.consul 中添加consul的相关配置
    host:表示Consul的Server的请求地址
    port:表示Consul的Server的端口
    discovery:服务注册与发现的相关配置
    instance-id : 实例的唯一id(推荐必填),spring cloud官网文档的推荐,为了保证生成一个唯一的id ,也可以换成
    ${spring.application.name}:${spring.cloud.client.ipAddress}
    prefer-ip-address:开启ip地址注册
    ip-address:当前微服务的请求ip

    在控制台中查看服务列表
    打开ConsulServer的管理控制台,可以发现三个微服务已经全部注册到Consul中了。

    进行测试:

     发现没有问题。

    由于第一次部署实在阿里云上的,但是在服务检查的时候一直显示连接超时,可能网络不带好,换成自己的虚拟机就没有问题。如下图:

     

  • 相关阅读:
    ASP.NET 安全认证(二)——灵活运用 Form 表单认证中的 deny 与 allow 及保护 .htm 等文件(转)
    对ASP.NET MVC项目中的视图做单元测试
    java多线程编程——线程同步之同步代码块
    php 删除目录以及目录下的所有文件
    webuploader 一个页面多个上传按钮 实现【亲测可用】
    设计模式单例模式
    html meta手机端常用参数
    java多线程编程——线程同步之同步函数
    MySQL 如何按照指定字符串进行排序
    工厂模式
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12268930.html
Copyright © 2011-2022 走看看